<?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>155103</bug_id>
          
          <creation_ts>2016-03-06 23:31:47 -0800</creation_ts>
          <short_desc>Web Inspector: the protocol generator should generate factory method stubs for protocol types</short_desc>
          <delta_ts>2016-03-07 16:49:16 -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>
          <dependson>155121</dependson>
          
          <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>1171530</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-06 23:31:47 -0800</bug_when>
    <thetext>To support dynamic protocol type resolution and parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171531</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-06 23:33:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/25002772&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171796</commentid>
    <comment_count>2</comment_count>
      <attachid>273226</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 15:19:16 -0800</bug_when>
    <thetext>Created attachment 273226
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171798</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 15:21:06 -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>1171799</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 15:21:13 -0800</bug_when>
    <thetext>Attachment 273226 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:58:  [ObjCProtocolTypeConversionsHeaderGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:50:  [ObjCProtocolTypeConversionsImplementationGenerator.output_filename] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:53:  [ObjCProtocolTypeConversionsImplementationGenerator.domains_to_generate] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:57:  [ObjCProtocolTypeConversionsImplementationGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:59:  [ObjCProtocolTypeConversionsImplementationGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:64:  [ObjCProtocolTypeConversionsImplementationGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:70:  [ObjCProtocolTypeConversionsImplementationGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:79:  [ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_interface] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:93:  [ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_method_declaration] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;objc_class_for_type&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:100:  [ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_implementation] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:115:  [ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_method_implementation] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;objc_class_for_type&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:124:  [ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_method_implementation] Instance of &apos;ObjCProtocolTypeConversionsImplementationGenerator&apos; has no &apos;objc_name_for_type&apos; member  [pylint/E1101] [5]
Total errors found: 12 in 19 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>1171844</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 16:49:16 -0800</bug_when>
    <thetext>Committed r197717: &lt;http://trac.webkit.org/changeset/197717&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273226</attachid>
            <date>2016-03-07 15:19:16 -0800</date>
            <delta_ts>2016-03-07 15:22:34 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155103-20160307151902.patch</filename>
            <type>text/plain</type>
            <size>72217</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTk2MDJlM2JiYjk2NmY4YmE1NDllMjk5YmNlZTdjOTcxYjJhNjY1Li5mMWNjMWRkNjhiYjljMDRi
NzVhNDFhMGIwNmE4ZGE3M2IyNWU5YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MyBAQAogMjAxNi0wMy0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aGUgcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBnZW5l
cmF0ZSBmYWN0b3J5IG1ldGhvZCBzdHVicyBmb3IgcHJvdG9jb2wgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEwMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjUwMDI3NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2VuZXJhdGUgc3R1YnMgd2l0aCB1bmlxdWUgbmFtZXMgc28gdGhhdCBw
YXJzaW5nIG1ldGhvZHMgY2FuIGJlIHVzZWQKKyAgICAgICAgcmVmbGVjdGl2ZWx5IGF0IHJ1bnRp
bWUsIGJhc2VkIG9uIHRoZSBwcm90b2NvbCB2ZXJzaW9uIHRoYXQncyBsb2FkZWQuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0X18ucHk6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lv
bnNfaGVhZGVyLnB5OgorICAgICAgICBBZGRlZC4gRm9yIGVhY2ggdHlwZSBpbiBhIGRvbWFpbiwg
YWRkIGEgbWV0aG9kIG9mIHRoZSBmb3JtCisgICAgICAgIC1bUHJvdG9jb2xUeXBlQ29udmVyc2lv
bnMgX3BhcnNlWFhYOmZyb21QYXlsb2FkXS4gVGhpcyBpcyBpbiBhIGNhdGVnb3J5CisgICAgICAg
IG1ldGhvZCwgYW5kIHRoZSBzZWxlY3RvciBpcyBvbmx5IGV2ZXIgbG9va2VkIHVwIGF0IHJ1bnRp
bWUuCisKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0hlYWRlckdlbmVyYXRv
ci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weToKKyAgICAgICAgKGdlbmVyYXRlX2Zyb21f
c3BlY2lmaWNhdGlvbik6CisKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IHJlc3VsdHMgd2l0aCBu
ZXcgZ2VuZXJhdG9yIG91dHB1dC4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5k
LXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9t
YWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKworMjAxNi0wMy0wNyAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgZ2VuZXJh
dGVkICpFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCB0byAqVHlwZUNvbnZlcnNpb25zLmgKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEyMQogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjUwMTAzOTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE5MmI0MjQ0YTMzMTczNGNhZmNmOGI1ZTE1NDMxZWViNWUyNTZhODkuLjdmZjNmZWVjNDNj
Njc5ZWU0M2QxMDJjZGYyYTA0YmY2YjFhNjlhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDM0LDYgKzE0MzQsNyBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyog
T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2IC8q
IEpTRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguY3BwICovOyB9Owog
CQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJE
IC8qIEpTRGF0ZU1hdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8q
IGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4
RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTJBQkNG
OTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTJBQkNGNTFCRUE5NENBMDA2
NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgKi87IH07CkBAIC0zNjMzLDYgKzM2
MzQsNyBAQAogCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0
ZU1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4
Q0UyRCAvKiBKU0RhdGVNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RGF0ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwREE2N0UxQzhFMzEx
RDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBs
ZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVy
YXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpT
UmVwbGF5SW5wdXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UmVwbGF5SW5wdXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyOEZGM0Ex
OEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUmVwbGF5SW5wdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5MjhGRjNEMThBQzRCMUMwMEI4Q0YxMiAvKiBKU0lucHV0cy5qc29uICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5qc29uOyBwYXRoID0gSlNJbnB1dHMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY4NTMsNiArNjg1NSw3IEBACiAJCQkJQTVFQTcwRjUxOUY2REU1QTAwOThGNUVDIC8q
IGdlbmVyYXRlX29iamNfaGVhZGVyLnB5ICovLAogCQkJCUE1RUE3MEY2MTlGNkRFNUEwMDk4RjVF
QyAvKiBnZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weSAqLywKIAkJCQlBNUVBNzBGMzE5
RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2hlYWRlci5weSAqLywKKwkJCQk5OTBEQTY3RTFDOEUzMTFEMDAyOTUxNTkgLyogZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5ICovLAogCQkJ
CUM0RjRCNkQ3MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVz
X2ltcGxlbWVudGF0aW9uLnB5ICovLAogCQkJCUM0NzAzQ0NCMTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0b3IucHkgKi8sCiAJCQkJQzQ3MDNDQ0ExOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRv
cl90ZW1wbGF0ZXMucHkgKi8sCkBAIC02ODk2LDYgKzY4OTksNyBAQAogCQkJCTBGMzczMDkzMUMw
RDY3RUUwMDA1MkJGQSAvKiBBaXJVc2VDb3VudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDU3
MDM5MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTk5MERBNjdGMUM4RTMxNkEwMDI5NTE1OSAvKiBnZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQk3OTlFRjdDNDFDNTZFRDk2MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3OUIwMENCRjFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MkNCMzRBMUM0RUVENUMwMEQxM0FGMyAvKiBQQ1Rv
Q29kZU9yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRfXy5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CmluZGV4
IDUxYTQ3NmNkYjIzMzAyM2VlZTU4YTk3YjhkODRhYzcyMzZjZDE5YjUuLjM3ZGJlOTQzNjMzMjhi
M2UwMTYwZjBiYzAxMWZlYTAxZWMzZTgzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CkBAIC0y
MiwzICsyMiw0IEBAIGZyb20gZ2VuZXJhdGVfb2JqY19oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2Vu
ZXJhdGVfb2JqY19pbnRlcm5hbF9oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfb2JqY19w
cm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgogZnJvbSBnZW5lcmF0ZV9vYmpj
X3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyIGltcG9ydCAqCitmcm9tIGdlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkKaW5kZXggNjVkZjY4MDFiYzA1
NWQ3OGI5YzMwMWY2ZDhlYmVkYTNlMzRhODkwOS4uNWY1OTgxMzQ3ZmVlZjA1N2Q4MDY2OTBhMTYx
OWE1MGZkMmIyODhhNyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5
CkBAIC01NSw4ICs1NSwxMCBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNIZWFk
ZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNl
bGYpOgogICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgJyIlc0FycmF5Q29udmVyc2lv
bnMuaCInICUgT2JqQ0dlbmVyYXRvci5PQkpDX1NUQVRJQ19QUkVGSVgKKyAgICAgICAgICAgICci
JXMuaCInICUgc2VsZi5wcm90b2NvbF9uYW1lKCksCisgICAgICAgICAgICAnIiVzQXJyYXlDb252
ZXJzaW9ucy5oIicgJSBPYmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWCwKICAgICAgICAg
XQorICAgICAgICBoZWFkZXJzLnNvcnQoKQogCiAgICAgICAgIGhlYWRlcl9hcmdzID0gewogICAg
ICAgICAgICAgJ2luY2x1ZGVzJzogJ1xuJy5qb2luKFsnI2ltcG9ydCAnICsgaGVhZGVyIGZvciBo
ZWFkZXIgaW4gaGVhZGVyc10pLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZl
cnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYTNjZjZhNDgxN2Y2NDVhMzliYTY1YTQy
NzAzM2YwNWQ2NzI1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29u
dmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSwxMzIgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRl
CisKK2Zyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKK2Zyb20gbW9kZWxzIGltcG9ydCBF
bnVtVHlwZSwgT2JqZWN0VHlwZSwgQXJyYXlUeXBlLCBBbGlhc2VkVHlwZSwgUHJpbWl0aXZlVHlw
ZSwgRnJhbWV3b3JrcworZnJvbSBvYmpjX2dlbmVyYXRvciBpbXBvcnQgT2JqQ0dlbmVyYXRvcgor
ZnJvbSBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IE9iakNHZW5lcmF0b3JUZW1wbGF0
ZXMgYXMgT2JqQ1RlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykK
KworCitkZWYgYWRkX25ld2xpbmUobGluZXMpOgorICAgIGlmIGxpbmVzIGFuZCBsaW5lc1stMV0g
PT0gJyc6CisgICAgICAgIHJldHVybgorICAgIGxpbmVzLmFwcGVuZCgnJykKKworCitjbGFzcyBP
YmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2Vu
ZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToK
KyAgICAgICAgT2JqQ0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBh
dGgpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVz
VHlwZUNvbnZlcnNpb25zLm1tJyAlIHNlbGYucHJvdG9jb2xfbmFtZSgpCisKKyAgICBkZWYgZG9t
YWluc190b19nZW5lcmF0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZpbHRlcihPYmpDR2VuZXJh
dG9yLnNob3VsZF9nZW5lcmF0ZV9kb21haW5fdHlwZXNfZmlsdGVyKHNlbGYubW9kZWwoKSksIEdl
bmVyYXRvci5kb21haW5zX3RvX2dlbmVyYXRlKHNlbGYpKQorCisgICAgZGVmIGdlbmVyYXRlX291
dHB1dChzZWxmKToKKyAgICAgICAgc2Vjb25kYXJ5X2hlYWRlcnMgPSBbCisgICAgICAgICAgICAn
IiVzLmgiJyAlIHNlbGYucHJvdG9jb2xfbmFtZSgpLAorICAgICAgICAgICAgJyIlc1R5cGVDb252
ZXJzaW9ucy5oIicgJSBPYmpDR2VuZXJhdG9yLk9CSkNfU0hBUkVEX1BSRUZJWCwKKyAgICAgICAg
ICAgIEdlbmVyYXRvci5zdHJpbmdfZm9yX2ZpbGVfaW5jbHVkZSgnJXNKU09OT2JqZWN0UHJpdmF0
ZS5oJyAlIE9iakNHZW5lcmF0b3IuT0JKQ19TVEFUSUNfUFJFRklYLCBGcmFtZXdvcmtzLldlYklu
c3BlY3Rvciwgc2VsZi5tb2RlbCgpLmZyYW1ld29yayksCisgICAgICAgIF0KKyAgICAgICAgc2Vj
b25kYXJ5X2hlYWRlcnMuc29ydCgpCisKKyAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CisgICAgICAg
ICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIiVzVHlwZUNvbnZlcnNpb25zLmgiJyAlIHNlbGYucHJv
dG9jb2xfbmFtZSgpLAorICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5qb2lu
KFsnI2ltcG9ydCAnICsgaGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNdKSwK
KyAgICAgICAgfQorCisgICAgICAgIGRvbWFpbnMgPSBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUo
KQorICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdl
bmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKE9iakNU
ZW1wbGF0ZXMuSW1wbGVtZW50YXRpb25QcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVy
X2FyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfdHlwZV9mYWN0
b3J5X2NhdGVnb3J5X2ludGVyZmFjZShkb21haW5zKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX3R5cGVfZmFjdG9yeV9jYXRlZ29yeV9pbXBsZW1lbnRhdGlvbihkb21h
aW5zKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKE9iakNUZW1wbGF0ZXMuSW1w
bGVtZW50YXRpb25Qb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAg
ICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIF9nZW5lcmF0ZV90
eXBlX2ZhY3RvcnlfY2F0ZWdvcnlfaW50ZXJmYWNlKHNlbGYsIGRvbWFpbnMpOgorICAgICAgICBs
aW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnQGludGVyZmFjZSBQcm90b2NvbFR5cGVD
b252ZXJzaW9ucyAoJXMpJyAlIHNlbGYucHJvdG9jb2xfbmFtZSgpKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJycpCisgICAgICAgIGZvciBkb21haW4gaW4gZG9tYWluczoKKyAgICAgICAgICAgIGZv
ciBkZWNsYXJhdGlvbiBpbiBkb21haW4udHlwZV9kZWNsYXJhdGlvbnM6CisgICAgICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX3R5cGVfZmFjdG9yeV9tZXRob2RfZGVjbGFy
YXRpb24oZG9tYWluLCBkZWNsYXJhdGlvbikpCisgICAgICAgICAgICBhZGRfbmV3bGluZShsaW5l
cykKKyAgICAgICAgbGluZXMuYXBwZW5kKCdAZW5kJykKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfdHlwZV9mYWN0b3J5X21ldGhvZF9kZWNsYXJh
dGlvbihzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKKyAgICAgICAgcmVzb2x2ZWRfdHlwZSA9
IGRlY2xhcmF0aW9uLnR5cGUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCBB
bGlhc2VkVHlwZSk6CisgICAgICAgICAgICByZXNvbHZlZF90eXBlID0gcmVzb2x2ZWRfdHlwZS5h
bGlhc2VkX3R5cGUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCAoT2JqZWN0
VHlwZSwgQXJyYXlUeXBlLCBQcmltaXRpdmVUeXBlKSk6CisgICAgICAgICAgICBvYmpjX3R5cGUg
PSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUocmVzb2x2ZWRfdHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiAnKyAodm9pZClfcGFyc2UlczooJXMgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBh
eWxvYWQ7JyAlIChkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCksIG9iamNfdHlwZSkKKyAgICAg
ICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICBy
ZXR1cm4gJysgKHZvaWQpX3BhcnNlJXM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2Fk
OihpZClwYXlsb2FkOycgJSBkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCkKKworICAgIGRlZiBf
Z2VuZXJhdGVfdHlwZV9mYWN0b3J5X2NhdGVnb3J5X2ltcGxlbWVudGF0aW9uKHNlbGYsIGRvbWFp
bnMpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnQGltcGxlbWVu
dGF0aW9uIFByb3RvY29sVHlwZUNvbnZlcnNpb25zICglcyknICUgc2VsZi5wcm90b2NvbF9uYW1l
KCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21h
aW5zOgorICAgICAgICAgICAgZm9yIGRlY2xhcmF0aW9uIGluIGRvbWFpbi50eXBlX2RlY2xhcmF0
aW9uczoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfdHlwZV9m
YWN0b3J5X21ldGhvZF9pbXBsZW1lbnRhdGlvbihkb21haW4sIGRlY2xhcmF0aW9uKSkKKyAgICAg
ICAgICAgICAgICBhZGRfbmV3bGluZShsaW5lcykKKyAgICAgICAgbGluZXMuYXBwZW5kKCdAZW5k
JykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVf
dHlwZV9mYWN0b3J5X21ldGhvZF9pbXBsZW1lbnRhdGlvbihzZWxmLCBkb21haW4sIGRlY2xhcmF0
aW9uKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICByZXNvbHZlZF90eXBlID0gZGVjbGFy
YXRpb24udHlwZQorICAgICAgICBpZiBpc2luc3RhbmNlKHJlc29sdmVkX3R5cGUsIEFsaWFzZWRU
eXBlKToKKyAgICAgICAgICAgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZlZF90eXBlLmFsaWFzZWRf
dHlwZQorCisgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUocmVz
b2x2ZWRfdHlwZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCAoT2JqZWN0
VHlwZSwgQXJyYXlUeXBlLCBQcmltaXRpdmVUeXBlKSk6CisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJysgKHZvaWQpX3BhcnNlJXM6KCVzICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkJyAlIChkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCksIG9iamNfY2xhc3MpKQorICAgICAg
ICBpZiBpc2luc3RhbmNlKHJlc29sdmVkX3R5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnKyAodm9pZClfcGFyc2UlczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBh
eWxvYWQ6KGlkKXBheWxvYWQnICUgZGVjbGFyYXRpb24udHlwZS5yYXdfbmFtZSgpKQorCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgneycpCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzb2x2ZWRfdHlw
ZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsnKQorICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2Nv
bFN0cmluZzwlcz4ocGF5bG9hZCkpOycgJSBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShyZXNvbHZl
ZF90eXBlKSkKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHJlc29sdmVkX3R5cGUsIChBcnJheVR5
cGUsIFByaW1pdGl2ZVR5cGUpKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgWyVzIGNsYXNzXSk7JyAlIG9iamNfY2xh
c3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSAoJXMgKilwYXls
b2FkOycgJSBvYmpjX2NsYXNzKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzb2x2ZWRfdHlw
ZSwgT2JqZWN0VHlwZSk6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU0RpY3Rpb25hcnkgY2xhc3NdKTsnKQorICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgKm91dFZhbHVlID0gW1slcyBhbGxvY10gaW5pdFdp
dGhQYXlsb2FkOnBheWxvYWRdOycgJSAob2JqY19jbGFzcykpCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgnfScpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQppbmRleCAzNWEzYjZh
ZWZkOWQ4ZjU0Y2Y3ZTE5ZTlkYjk3OGNjZTk1ZjFiNjM5Li40ZmU4NDlmYzhiOWY0N2YyNGM0Y2Yx
YzU0ZWI5MjJjYTYzNTM4ZGQ2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKQEAgLTcyLDYgKzcyLDcgQEAgZXhjZXB0IEltcG9y
dEVycm9yLCBlOgogICAgIGZyb20gZ2VuZXJhdGVfb2JqY19oZWFkZXIgaW1wb3J0ICoKICAgICBm
cm9tIGdlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyIGltcG9ydCAqCiAgICAgZnJvbSBnZW5l
cmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyIGltcG9ydCAqCisgICAg
ZnJvbSBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRp
b24gaW1wb3J0ICoKICAgICBmcm9tIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVt
ZW50YXRpb24gaW1wb3J0ICoKIAogCkBAIC0xNDksNiArMTUwLDcgQEAgZGVmIGdlbmVyYXRlX2Zy
b21fc3BlY2lmaWNhdGlvbihwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGg9Tm9uZSwKICAg
ICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0hlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJp
bWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
T2JqQ0ludGVybmFsSGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRp
b25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDUHJvdG9jb2xUeXBl
Q29udmVyc2lvbnNIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlv
bl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNQcm90b2NvbFR5cGVD
b252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNp
ZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDUHJvdG9j
b2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmlj
YXRpb25fZmlsZXBhdGgpKQogCiAgICAgZWxpZiBwcm90b2NvbC5mcmFtZXdvcmsgaXMgRnJhbWV3
b3Jrcy5KYXZhU2NyaXB0Q29yZToKQEAgLTE3MCw2ICsxNzIsNyBAQCBkZWYgZ2VuZXJhdGVfZnJv
bV9zcGVjaWZpY2F0aW9uKHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aD1Ob25lLAogICAg
IGVsaWYgcHJvdG9jb2wuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViS2l0IGFuZCBnZW5lcmF0
ZV9mcm9udGVuZDoKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0hlYWRlckdlbmVyYXRv
cihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2Vu
ZXJhdG9ycy5hcHBlbmQoT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9y
KHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBnZW5l
cmF0b3JzLmFwcGVuZChPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAg
ICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKIAogICAgIGVs
aWYgcHJvdG9jb2wuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViSW5zcGVjdG9yOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGIzYzc5ZWI5NjRlZTIzYTZhNjhl
N2E3YzYwYjc4ZTI0OTc5OWUyNTkuLjlkNGIyZTNlNmEwODkyMzk4NzJkNTMwMWQ0YjJhMTBkMzc2
MzU1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEzOTcs
NiArMTM5Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJSV0lQcm90
b2NvbEFycmF5Q29udmVyc2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMTU0OSw2ICsxNTUwLDg2IEBAIGlubGluZSBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0CiAKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgK
IAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5tbQorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0
ZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisK
KyNpbXBvcnQgIlByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3RQcml2YXRl
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK0BpbnRlcmZhY2UgUHJvdG9jb2xU
eXBlQ29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VEYXRhYmFzZUlk
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZvaWQp
X3BhcnNlUHJpbWFyeUNvbG9yczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlk
KXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZUNvbG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiov
ICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VFcnJv
cjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQp
cGF5bG9hZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJvdG9jb2xUeXBlQ29udmVyc2lv
bnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VEYXRhYmFzZUlkOihOU051bWJlciAq
KilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TTnVtYmVyIGNsYXNzXSk7CisgICAgKm91dFZhbHVl
ID0gKE5TTnVtYmVyICopcGF5bG9hZDsKK30KKworKyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3Jz
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Cisg
ICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxvYWQpKTsKK30KKworKyAodm9pZClfcGFyc2VD
b2xvckxpc3Q6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDoo
aWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwg
W05TQXJyYXkvKjxOU1N0cmluZz4qLyBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IChOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKilwYXlsb2FkOworfQorCisrICh2b2lkKV9wYXJzZUVycm9yOihUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2Fk
Cit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNEaWN0aW9u
YXJ5IGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
IGFsbG9jXSBpbml0V2l0aFBheWxvYWQ6cGF5bG9hZF07Cit9CisKK0BlbmQKKworCisjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5tbQorCiAjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDgwOGM4N2YzY2JjZDgx
ZmQ4Y2VjY2IwNWVlNzNlZTBlZWY3MTY4YzUuLmI0YmMxNzNiYTJiMjBmMTRhMGVmYTdhYTQ0ODg2
MmJjMGJmNTRlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTI1Miw2ICsxMjUyLDcgQEAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9u
cy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CkBAIC0xNDA0LDYgKzE0MDUsODYgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHIKIAogIyMjIEVu
ZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogCisjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLm1tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5q
c29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisKKyNp
bXBvcnQgIlByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wu
aCIKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK0BpbnRlcmZhY2UgUHJvdG9jb2xUeXBl
Q29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VEYXRhYmFzZUlkOihO
U051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZvaWQpX3Bh
cnNlUHJpbWFyeUNvbG9yczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBh
eWxvYWQ7CisrICh2b2lkKV9wYXJzZUNvbG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiovICoq
KW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VFcnJvcjoo
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5
bG9hZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMg
KFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VEYXRhYmFzZUlkOihOU051bWJlciAqKilv
dXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX1RZUEUocGF5bG9hZCwgW05TTnVtYmVyIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0g
KE5TTnVtYmVyICopcGF5bG9hZDsKK30KKworKyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3JzOihO
U051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7CisgICAg
Km91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxvYWQpKTsKK30KKworKyAodm9pZClfcGFyc2VDb2xv
ckxpc3Q6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQp
cGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05T
QXJyYXkvKjxOU1N0cmluZz4qLyBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IChOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKilwYXlsb2FkOworfQorCisrICh2b2lkKV9wYXJzZUVycm9yOihUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCit7
CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNEaWN0aW9uYXJ5
IGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFs
bG9jXSBpbml0V2l0aFBheWxvYWQ6cGF5bG9hZF07Cit9CisKK0BlbmQKKworCisjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5tbQorCiAjIyMgQmVnaW4gRmlsZTogVGVz
dFByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbi1yZXN1bHQKaW5kZXggZDQxMGJmODJjNzExNGZlODJhNTZiNjQ2MTk2NDk4NzliZmYyYjJj
Yy4uMjQzNGJkYWU3OTFjOWNhNDM0MmZlN2JjYTZjY2I4M2NmYzg2YmI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Rv
bWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEyODQsNiArMTI4NCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9ucy5o
IgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBA
IC0xMzAwLDYgKzEzMDEsNjUgQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVy
c2lvbnMuaAogCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLm1t
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5n
cy5weQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252
ZXJzaW9ucy5oIgorCisjaW1wb3J0ICJQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09O
T2JqZWN0UHJpdmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitAaW50ZXJm
YWNlIFByb3RvY29sVHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3Bh
cnNlTG9hZGVySWQ6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2Fk
OworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBQcm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVz
dFByb3RvY29sKQorCisrICh2b2lkKV9wYXJzZUxvYWRlcklkOihOU1N0cmluZyAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gKE5TU3Ry
aW5nICopcGF5bG9hZDsKK30KKworQGVuZAorCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29s
VHlwZUNvbnZlcnNpb25zLm1tCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5t
bQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24t
cmVzdWx0CmluZGV4IGE2NmY3ZTNiMjQ2MjAzYTZkNWU1MjE2ZWFjNGM4ZTQ1YWJjNWFmZGQuLjEy
Y2Q3ODM1ZjBkNWFiMDc0Mjk4Yjc0ZGUyZjhmNDRkNjFiOWFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTEwMjgsNiAr
MTAyOCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJSV0lQcm90b2Nv
bEFycmF5Q29udmVyc2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIApAQCAtMTEyNCw2ICsxMTI1LDY1IEBAIGlubGluZSBUZXN0UHJvdG9j
b2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIgZnJvbVByb3RvY29s
U3RyaW5nCiAKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKIAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5tbQorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5qc29uCisvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisKKyNpbXBvcnQgIlByb3RvY29sVHlw
ZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CisKK0BpbnRlcmZhY2UgUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMgKFRlc3RQ
cm90b2NvbCkKKworKyAodm9pZClfcGFyc2VUeXBlRG9tYWluRW51bTooTlNOdW1iZXIgKiopb3V0
VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFByb3RvY29sVHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3BhcnNl
VHlwZURvbWFpbkVudW06KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJp
bmcgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtPihwYXlsb2FkKSk7Cit9CisKK0BlbmQKKwor
CisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5tbQorCiAjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1v
cHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggOTU0MTgzOWE4OGU0ZGZlOTEyMTc4MzNiNWE5YTUwZWQx
ZmEzYzZhMS4uMWFhYmFkMjNiMDkwZWFiZjMyZGRiZDdhNzZiOWJmMTQyMzJjYTRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50
cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwMTAsNiArMTAxMCw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5
Q29udmVyc2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIApAQCAtMTAyMiw2ICsxMDIzLDg2IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sVHlwZUNvbnZlcnNpb25zLmgKIAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVD
b252ZXJzaW9ucy5tbQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBldmVudHMt
d2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9j
b2xUeXBlQ29udmVyc2lvbnMuaCIKKworI2ltcG9ydCAiUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
aCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVBy
b3RvY29sSlNPTk9iamVjdFByaXZhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
KworQGludGVyZmFjZSBQcm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisr
ICh2b2lkKV9wYXJzZURhdGFiYXNlSWQ6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2Fk
OihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3JzOihOU1N0cmluZyAqKilv
dXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZvaWQpX3BhcnNlQ29sb3JMaXN0
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxv
YWQ7CisrICh2b2lkKV9wYXJzZUVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKW91
dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBQcm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisrICh2b2lkKV9wYXJz
ZURhdGFiYXNlSWQ6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2Fk
Cit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcg
Y2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSAoTlNTdHJpbmcgKilwYXlsb2FkOworfQorCisrICh2
b2lkKV9wYXJzZVByaW1hcnlDb2xvcnM6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2Fk
OihpZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2Fk
LCBbTlNTdHJpbmcgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSAoTlNTdHJpbmcgKilwYXlsb2Fk
OworfQorCisrICh2b2lkKV9wYXJzZUNvbG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiovICoq
KW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9O
X0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNBcnJheS8qPE5TU3RyaW5nPiovIGNsYXNzXSk7Cisg
ICAgKm91dFZhbHVlID0gKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKXBheWxvYWQ7Cit9CisKKysg
KHZvaWQpX3BhcnNlRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopb3V0VmFsdWUg
ZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKK3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9U
WVBFKHBheWxvYWQsIFtOU0RpY3Rpb25hcnkgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSBbW1Rl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoUGF5bG9hZDpwYXlsb2FkXTsK
K30KKworQGVuZAorCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25z
Lm1tCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggOThjNDdmYjBi
NGM3NTA0OTQ2Y2MyODVlNWNkOWIzYjkwNjIyM2VkOS4uNWE3ZDRmNmEzNTU1YWM4ZWVhYmQ0MjQ2
ZDFlNjE1ZmRmOWI1MjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CkBAIC0xMDU5LDYgKzEwNTksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKIAogI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25zLmgiCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2wuaCIKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTEwNzUsNiAr
MTA3Niw2NSBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCiAK
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMubW0KKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
aCIKKworI2ltcG9ydCAiUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQ
cm90b2NvbC5oIgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdFBy
aXZhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworQGludGVyZmFjZSBQcm90
b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisrICh2b2lkKV9wYXJzZU5ldHdv
cmtFcnJvcjooVGVzdFByb3RvY29sTmV0d29yazJOZXR3b3JrRXJyb3IgKiopb3V0VmFsdWUgZnJv
bVBheWxvYWQ6KGlkKXBheWxvYWQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFByb3RvY29s
VHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3BhcnNlTmV0d29ya0Vy
cm9yOihUZXN0UHJvdG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJvciAqKilvdXRWYWx1ZSBmcm9tUGF5
bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5
bG9hZCwgW05TRGljdGlvbmFyeSBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IFtbVGVzdFByb3Rv
Y29sTmV0d29yazJOZXR3b3JrRXJyb3IgYWxsb2NdIGluaXRXaXRoUGF5bG9hZDpwYXlsb2FkXTsK
K30KKworQGVuZAorCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25z
Lm1tCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1k
aWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IDQzYzdiYzk1NzFkM2ZmNjdiMDlkNjQx
NDZlNjM2M2NlYjBjN2JkMTEuLjE2MDliYWMzN2M3ODYwMGI2NjBiNWI1ZWU0MjJjZWZkMDZhMGNh
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKQEAgLTc3OSw2ICs3
NzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1w
cm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lv
bnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IApAQCAtNzkzLDYgKzc5NCw3MyBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpOwogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252
ZXJzaW9ucy5oCiAKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
bW0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZl
cmVudC1kb21haW4uanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJz
aW9ucy5oIgorCisjaW1wb3J0ICJQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgorI2ltcG9ydCAi
VGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2Jq
ZWN0UHJpdmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitAaW50ZXJmYWNl
IFByb3RvY29sVHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3BhcnNl
UmVtb3RlT2JqZWN0SWQ6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkOworCisrICh2b2lkKV9wYXJzZVJlbW90ZU9iamVjdElkOihOU1N0cmluZyAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJv
dG9jb2xUeXBlQ29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VSZW1v
dGVPYmplY3RJZDooTlNTdHJpbmcgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQK
K3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBj
bGFzc10pOworICAgICpvdXRWYWx1ZSA9IChOU1N0cmluZyAqKXBheWxvYWQ7Cit9CisKKysgKHZv
aWQpX3BhcnNlUmVtb3RlT2JqZWN0SWQ6KE5TU3RyaW5nICoqKW91dFZhbHVlIGZyb21QYXlsb2Fk
OihpZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2Fk
LCBbTlNTdHJpbmcgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSAoTlNTdHJpbmcgKilwYXlsb2Fk
OworfQorCitAZW5kCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lv
bnMubW0KKwogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9w
dGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBmZjNhMTY0N2IyMzgzNzE5OTFi
ZDk5OGE3NjdlNWQxZjYxYzk3YTllLi40MTY1NWI5ZGZiNmQ5M2ZhMzNkYzc4ZTA4ODc2ZDFkMTVl
ZGU4ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTg1
OSw2ICs4NTksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiUldJUHJv
dG9jb2xBcnJheUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTg5NSw2ICs4OTYsNjUgQEAgaW5saW5lIFRlc3RQcm90
b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogCisj
IyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLm1tCisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisKKyNp
bXBvcnQgIlByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wu
aCIKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK0BpbnRlcmZhY2UgUHJvdG9jb2xUeXBl
Q29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VLZXlQYXRoOihUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aCAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9h
ZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMgKFRl
c3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VLZXlQYXRoOihUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aCAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TRGljdGlvbmFyeSBjbGFzc10pOwor
ICAgICpvdXRWYWx1ZSA9IFtbVGVzdFByb3RvY29sUnVudGltZUtleVBhdGggYWxsb2NdIGluaXRX
aXRoUGF5bG9hZDpwYXlsb2FkXTsKK30KKworQGVuZAorCisKKyMjIyBFbmQgRmlsZTogVGVzdFBy
b3RvY29sVHlwZUNvbnZlcnNpb25zLm1tCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xU
eXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUt
dHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUu
anNvbi1yZXN1bHQKaW5kZXggMTkwN2ZlMGZjYjZmZGRmNjQ0ZjA0OTY0OTM4OTM2NzM5YWZkZTUy
Yy4uNWEyNjY3YzY4ZjMxMWRmMTk3OGJlZTNjYjI1M2YyNWUzNGNkMDFiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC03Njgs
NiArNzY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZl
cnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKQEAgLTc4MCw2ICs3ODEsNjUgQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBl
Q29udmVyc2lvbnMuaAogCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNp
b25zLm1tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRp
b24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFByb3Rv
Y29sVHlwZUNvbnZlcnNpb25zLmgiCisKKyNpbXBvcnQgIlByb3RvY29sVHlwZUNvbnZlcnNpb25z
LmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQ
cm90b2NvbEpTT05PYmplY3RQcml2YXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKK0BpbnRlcmZhY2UgUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKwor
KyAodm9pZClfcGFyc2VSZW1vdGVPYmplY3RJZDooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBh
eWxvYWQ6KGlkKXBheWxvYWQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFByb3RvY29sVHlw
ZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3BhcnNlUmVtb3RlT2JqZWN0
SWQ6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCit7CisgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNOdW1iZXIgY2xhc3NdKTsK
KyAgICAqb3V0VmFsdWUgPSAoTlNOdW1iZXIgKilwYXlsb2FkOworfQorCitAZW5kCisKKworIyMj
IEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMubW0KKwogIyMjIEJlZ2luIEZp
bGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
cnJheS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJl
c3VsdAppbmRleCBiMDE2OTZkNmQ2MzVkOGQ1YWVlNzJkZWZlNTExM2M4YzM4ZWQyMTU4Li5kZjJi
YjA2ZGEwNDJmNGJlNGE0MWMwYjJhOTdmN2JiYjA3OWNmYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQKQEAgLTgwNyw2ICs4MDcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbikgewogLy8gYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVy
c2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIApAQCAtODQ1LDYgKzg0NiwxMTUgQEAgaW5saW5lIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVh
c29uIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogCiAjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCiAKKyMjIyBCZWdpbiBGaWxlOiBUZXN0
UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMubW0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJU
ZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaCIKKworI2ltcG9ydCAiUHJvdG9jb2xUeXBlQ29u
dmVyc2lvbnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViSW5zcGVj
dG9yL1JXSVByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKworQGludGVyZmFjZSBQcm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3Rv
Y29sKQorCisrICh2b2lkKV9wYXJzZUJyZWFrcG9pbnRJZDooTlNOdW1iZXIgKiopb3V0VmFsdWUg
ZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZVJlYXNvbjooTlNOdW1iZXIg
Kiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisKKysgKHZvaWQpX3BhcnNlT2Jq
ZWN0SWQ6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworKyAo
dm9pZClfcGFyc2VMdWNreU51bWJlcnM6KE5TQXJyYXkvKjxOU051bWJlcj4qLyAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZvaWQpX3BhcnNlQmFieU5hbWVzOihOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7Cisr
ICh2b2lkKV9wYXJzZU5ld09iamVjdHM6KE5TQXJyYXkvKjxOU051bWJlcj4qLyAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZvaWQpX3BhcnNlT2xkT2JqZWN0czooTlNB
cnJheS8qPE5TTnVtYmVyPiovICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOwor
KyAodm9pZClfcGFyc2VTdG9wUmVhc29uczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKW91dFZh
bHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBQ
cm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisrICh2b2lkKV9wYXJzZUJy
ZWFrcG9pbnRJZDooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQK
K3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU051bWJlciBj
bGFzc10pOworICAgICpvdXRWYWx1ZSA9IChOU051bWJlciAqKXBheWxvYWQ7Cit9CisKKysgKHZv
aWQpX3BhcnNlUmVhc29uOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5
bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3Ry
aW5nIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0
cmluZzxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4ocGF5bG9hZCkpOworfQorCisrICh2b2lk
KV9wYXJzZU9iamVjdElkOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5
bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TTnVt
YmVyIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gKE5TTnVtYmVyICopcGF5bG9hZDsKK30KKwor
KyAodm9pZClfcGFyc2VMdWNreU51bWJlcnM6KE5TQXJyYXkvKjxOU051bWJlcj4qLyAqKilvdXRW
YWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX1RZUEUocGF5bG9hZCwgW05TQXJyYXkvKjxOU051bWJlcj4qLyBjbGFzc10pOworICAgICpv
dXRWYWx1ZSA9IChOU0FycmF5Lyo8TlNOdW1iZXI+Ki8gKilwYXlsb2FkOworfQorCisrICh2b2lk
KV9wYXJzZUJhYnlOYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKW91dFZhbHVlIGZyb21Q
YXlsb2FkOihpZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShw
YXlsb2FkLCBbTlNBcnJheS8qPE5TU3RyaW5nPiovIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0g
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKXBheWxvYWQ7Cit9CisKKysgKHZvaWQpX3BhcnNlTmV3
T2JqZWN0czooTlNBcnJheS8qPE5TTnVtYmVyPiovICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBb
TlNBcnJheS8qPE5TTnVtYmVyPiovIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gKE5TQXJyYXkv
KjxOU051bWJlcj4qLyAqKXBheWxvYWQ7Cit9CisKKysgKHZvaWQpX3BhcnNlT2xkT2JqZWN0czoo
TlNBcnJheS8qPE5TTnVtYmVyPiovICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2Fk
Cit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNBcnJheS8q
PE5TTnVtYmVyPiovIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gKE5TQXJyYXkvKjxOU051bWJl
cj4qLyAqKXBheWxvYWQ7Cit9CisKKysgKHZvaWQpX3BhcnNlU3RvcFJlYXNvbnM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TQXJyYXkvKjxOU1N0cmlu
Zz4qLyBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IChOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilw
YXlsb2FkOworfQorCitAZW5kCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29u
dmVyc2lvbnMubW0KKwogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggMzhjMWViYjYxYmQ0OGZkMGI1MTk5
ZTRkNWVhNDk4OWEyNGEzZmFmOS4uNzE3YjRkMDYwZjYwYzNhODNlZmZlM2QzNmQwNTIzYjFhMDI1
NWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtODEwLDYgKzgxMCw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdn
ZWRBbmltYWxzKSB7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
ICNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9ucy5oIgorI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC04NzksNiArODgwLDcyIEBA
IGlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1CiAKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlw
ZUNvbnZlcnNpb25zLmgKIAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJz
aW9ucy5tbQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZl
cnNpb25zLmgiCisKKyNpbXBvcnQgIlByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05P
YmplY3RQcml2YXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK0BpbnRlcmZh
Y2UgUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMgKFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFy
c2VGYXJtQW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxv
YWQ7CisrICh2b2lkKV9wYXJzZVR3b0xlZ2dlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVl
IGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBQcm90
b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisrICh2b2lkKV9wYXJzZUZhcm1B
bmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAorewor
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNz
XSk7CisgICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0
UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHM+KHBheWxvYWQpKTsKK30KKworKyAodm9pZClfcGFy
c2VUd29MZWdnZWRBbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQp
cGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05T
U3RyaW5nIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2Nv
bFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4ocGF5bG9hZCkpOwor
fQorCitAZW5kCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
bW0KKwogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IGRhNmFmY2I5ZmY3YjhiZTMzNGVhNmI4ZGU1
MzRjNGE5MDQzNjEwMTAuLmU5ZTQ1ZGJkZjhmODM3YjU5MzZmNTRjN2FkZjgyY2NmYTZjMzFmMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0xMzA0LDYgKzEzMDQs
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJh
eUNvbnZlcnNpb25zLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKQEAgLTEzMTgsNiArMTMxOSwxMDggQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJv
dG9jb2xUeXBlQ29udmVyc2lvbnMuaAogCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlw
ZUNvbnZlcnNpb25zLm1tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkg
b2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUt
ZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2Nv
bFR5cGVDb252ZXJzaW9ucy5oIgorCisjaW1wb3J0ICJQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5o
IgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJv
dG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CitAaW50ZXJmYWNlIFByb3RvY29sVHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysg
KHZvaWQpX3BhcnNlRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopb3V0VmFsdWUg
ZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZUVycm9yTGlzdDooTlNBcnJh
eS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6
KGlkKXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlOihUZXN0
UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlICoqKW91dFZhbHVlIGZyb21Q
YXlsb2FkOihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VQYXJhbWV0ZXJCdW5kbGU6KFRlc3RQ
cm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3Rz
OihUZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMgKiop
b3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZUR1bW15T2Jq
ZWN0OihUZXN0UHJvdG9jb2xEYXRhYmFzZUR1bW15T2JqZWN0ICoqKW91dFZhbHVlIGZyb21QYXls
b2FkOihpZClwYXlsb2FkOworCisrICh2b2lkKV9wYXJzZVBhcmFtZXRlckJ1bmRsZTooVGVzdFBy
b3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZSAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5
bG9hZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJvdG9jb2xUeXBlQ29udmVyc2lvbnMg
KFRlc3RQcm90b2NvbCkKKworKyAodm9pZClfcGFyc2VFcnJvcjooVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TRGljdGlvbmFyeSBjbGFzc10pOwor
ICAgICpvdXRWYWx1ZSA9IFtbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBhbGxvY10gaW5pdFdp
dGhQYXlsb2FkOnBheWxvYWRdOworfQorCisrICh2b2lkKV9wYXJzZUVycm9yTGlzdDooTlNBcnJh
eS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6
KGlkKXBheWxvYWQKK3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQs
IFtOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyBjbGFzc10pOworICAgICpv
dXRWYWx1ZSA9IChOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKXBheWxv
YWQ7Cit9CisKKysgKHZvaWQpX3BhcnNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU6KFRlc3RQcm90
b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUgKiopb3V0VmFsdWUgZnJvbVBheWxv
YWQ6KGlkKXBheWxvYWQKK3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxv
YWQsIFtOU0RpY3Rpb25hcnkgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSBbW1Rlc3RQcm90b2Nv
bERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUgYWxsb2NdIGluaXRXaXRoUGF5bG9hZDpw
YXlsb2FkXTsKK30KKworKyAodm9pZClfcGFyc2VQYXJhbWV0ZXJCdW5kbGU6KFRlc3RQcm90b2Nv
bERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNEaWN0
aW9uYXJ5IGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZVBh
cmFtZXRlckJ1bmRsZSBhbGxvY10gaW5pdFdpdGhQYXlsb2FkOnBheWxvYWRdOworfQorCisrICh2
b2lkKV9wYXJzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHM6KFRlc3RQcm90b2NvbERh
dGFiYXNlT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cyAqKilvdXRWYWx1ZSBmcm9tUGF5
bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5
bG9hZCwgW05TRGljdGlvbmFyeSBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IFtbVGVzdFByb3Rv
Y29sRGF0YWJhc2VPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzIGFsbG9jXSBpbml0V2l0
aFBheWxvYWQ6cGF5bG9hZF07Cit9CisKKysgKHZvaWQpX3BhcnNlRHVtbXlPYmplY3Q6KFRlc3RQ
cm90b2NvbERhdGFiYXNlRHVtbXlPYmplY3QgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBh
eWxvYWQKK3sKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU0Rp
Y3Rpb25hcnkgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSBbW1Rlc3RQcm90b2NvbERhdGFiYXNl
RHVtbXlPYmplY3QgYWxsb2NdIGluaXRXaXRoUGF5bG9hZDpwYXlsb2FkXTsKK30KKworKyAodm9p
ZClfcGFyc2VQYXJhbWV0ZXJCdW5kbGU6KFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUg
Kiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKK3sKKyAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU0RpY3Rpb25hcnkgY2xhc3NdKTsKKyAgICAqb3V0
VmFsdWUgPSBbW1Rlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgYWxsb2NdIGluaXRXaXRo
UGF5bG9hZDpwYXlsb2FkXTsKK30KKworQGVuZAorCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sVHlwZUNvbnZlcnNpb25zLm1tCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBl
cy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCBlM2M2OWVi
NzQwZTVlNTgxN2M2NjZkYzQ3ZDIwOTFmNzZlMmI3Y2Y3Li41ZmQ0Yjg1MWU4YWRhMGQwMGQxNDY5
NTkxYzZiNjkwOTgyZGY0YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3Vs
dApAQCAtMTE2MSw2ICsxMTYxLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBv
cnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9ucy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29s
LmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0xMjMwLDYgKzEyMzEsMTA3IEBAIGlu
bGluZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVy
c2lvbnMuaAogCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLm1t
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVxdWlyaW5nLXJ1bnRp
bWUtY2FzdHMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9u
cy5oIgorCisjaW1wb3J0ICJQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgorI2ltcG9ydCAiVGVz
dFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0
UHJpdmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCitAaW50ZXJmYWNlIFBy
b3RvY29sVHlwZUNvbnZlcnNpb25zIChUZXN0UHJvdG9jb2wpCisKKysgKHZvaWQpX3BhcnNlVHlw
ZU5lZWRpbmdDYXN0OihUZXN0UHJvdG9jb2xUZXN0VHlwZU5lZWRpbmdDYXN0ICoqKW91dFZhbHVl
IGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VDYXN0ZWRPYmplY3RJZDoo
TlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisrICh2b2lkKV9w
YXJzZVVuY2FzdGVkT2JqZWN0SWQ6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VVbmNhc3RlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91
dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworKyAodm9pZClfcGFyc2VDYXN0ZWRBbmlt
YWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZDsKKysgKHZv
aWQpX3BhcnNlUmVjdXJzaXZlT2JqZWN0MTooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQ7CisrICh2b2lkKV9wYXJzZVJl
Y3Vyc2l2ZU9iamVjdDI6KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICoqKW91dFZh
bHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBQ
cm90b2NvbFR5cGVDb252ZXJzaW9ucyAoVGVzdFByb3RvY29sKQorCisrICh2b2lkKV9wYXJzZVR5
cGVOZWVkaW5nQ2FzdDooVGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdCAqKilvdXRWYWx1
ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X1RZUEUocGF5bG9hZCwgW05TRGljdGlvbmFyeSBjbGFzc10pOworICAgICpvdXRWYWx1ZSA9IFtb
VGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdCBhbGxvY10gaW5pdFdpdGhQYXlsb2FkOnBh
eWxvYWRdOworfQorCisrICh2b2lkKV9wYXJzZUNhc3RlZE9iamVjdElkOihOU051bWJlciAqKilv
dXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX1RZUEUocGF5bG9hZCwgW05TTnVtYmVyIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0g
KE5TTnVtYmVyICopcGF5bG9hZDsKK30KKworKyAodm9pZClfcGFyc2VVbmNhc3RlZE9iamVjdElk
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAoreworICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TTnVtYmVyIGNsYXNzXSk7Cisg
ICAgKm91dFZhbHVlID0gKE5TTnVtYmVyICopcGF5bG9hZDsKK30KKworKyAodm9pZClfcGFyc2VV
bmNhc3RlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJp
bmcgY2xhc3NdKTsKKyAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+KHBheWxvYWQpKTsKK30KKworKyAo
dm9pZClfcGFyc2VDYXN0ZWRBbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9h
ZDooaWQpcGF5bG9hZAoreworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9h
ZCwgW05TU3RyaW5nIGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZCkpOwor
fQorCisrICh2b2lkKV9wYXJzZVJlY3Vyc2l2ZU9iamVjdDE6KFRlc3RQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QxICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCit7CisgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNEaWN0aW9uYXJ5IGNsYXNz
XSk7CisgICAgKm91dFZhbHVlID0gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSBh
bGxvY10gaW5pdFdpdGhQYXlsb2FkOnBheWxvYWRdOworfQorCisrICh2b2lkKV9wYXJzZVJlY3Vy
c2l2ZU9iamVjdDI6KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICoqKW91dFZhbHVl
IGZyb21QYXlsb2FkOihpZClwYXlsb2FkCit7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
VFlQRShwYXlsb2FkLCBbTlNEaWN0aW9uYXJ5IGNsYXNzXSk7CisgICAgKm91dFZhbHVlID0gW1tU
ZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiBhbGxvY10gaW5pdFdpdGhQYXlsb2FkOnBh
eWxvYWRdOworfQorCitAZW5kCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29u
dmVyc2lvbnMubW0KKwogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCg==
</data>
<flag name="review"
          id="297827"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>