<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>2991</bug_id>
          
          <creation_ts>2012-08-22 13:43:25 +0000</creation_ts>
          <short_desc>the image created with yocto-bsp tool fails to start - &quot;unsupported machine type&quot;</short_desc>
          <delta_ts>2012-09-19 14:13:56 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>BSPs</product>
          <component>bsps-tools</component>
          <version>1.3</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>1.3 M4</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Laurentiu Serban">laurentiu.serban</reporter>
          <assigned_to name="Tom Zanussi">tom.zanussi</assigned_to>
          <cc>sgw</cc>
    
    <cc>yp.kernel.watcher</cc>
    
    <cc>yp.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>---</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24337</commentid>
    <comment_count>0</comment_count>
      <attachid>718</attachid>
    <who name="Laurentiu Serban">laurentiu.serban</who>
    <bug_when>2012-08-22 13:43:25 +0000</bug_when>
    <thetext>Created attachment 718
cooker.log

An image was created using yocto-bsp tool. qemu machine with arm arch.
The image seems to be built successfully, but it does not boot with qemu.

the message is:
&quot;Error: Unsupported machine type zImage-myqemuarm.bin&quot;
cooker.log attached</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24349</commentid>
    <comment_count>1</comment_count>
    <who name="Tom Zanussi">tom.zanussi</who>
    <bug_when>2012-08-22 17:22:01 +0000</bug_when>
    <thetext>Could you please specify the details of what you built/tested e.g. denzil vs master, for either the commit id of poky, and whether this was just using the defaults presented by the UI, etc.

There were recent patchsets for both denzil and master, denzil was updated with them yesterday, still waiting for them to hit master - it might make sense to make sure what you&apos;re testing has those, although a straight qemu arm build has always worked before, never seen it fail.  Anyway, details will allow reproduction as well as to know exactly what was tested and whether what was tested contained fixes already, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24735</commentid>
    <comment_count>2</comment_count>
    <who name="Tom Zanussi">tom.zanussi</who>
    <bug_when>2012-09-02 15:46:18 +0000</bug_when>
    <thetext>Fixed in poky/master and qemuarm bsp tested: 	ba463277ff342a8dc77d9a59c6e879e06a855298</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25412</commentid>
    <comment_count>3</comment_count>
    <who name="Laurentiu Serban">laurentiu.serban</who>
    <bug_when>2012-09-19 14:13:56 +0000</bug_when>
    <thetext>verified in 1.3_M4 e5c3513ca8abb21eb5e9b8c19d1b9199b14ae07c</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>718</attachid>
            <date>2012-08-22 13:43:25 +0000</date>
            <delta_ts>2012-08-22 13:43:25 +0000</delta_ts>
            <desc>cooker.log</desc>
            <filename>cooker.log.20120822143806</filename>
            <type>application/octet-stream</type>
            <size>367824</size>
            <attacher name="Laurentiu Serban">laurentiu.serban</attacher>
            
              <data encoding="base64">IyBTVEFHSU5HX0lOQ0RJUl9OQVRJVkU9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtpbmNsdWRlZGly
X25hdGl2ZX0KU1RBR0lOR19JTkNESVJfTkFUSVZFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUiCiMgUk9PVF9GTEFT
SF9TSVpFPTI4MApST09UX0ZMQVNIX1NJWkU9IjI4MCIKIyBTVEFHSU5HX0JJTkRJUl9DUk9TUz0k
e1NUQUdJTkdfQklORElSfS9jcm9zc3NjcmlwdHMKU1RBR0lOR19CSU5ESVJfQ1JPU1M9Ii9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL215cWVtdWFybS91c3IvYmlu
L2Nyb3Nzc2NyaXB0cyIKIyBTREtfUEFDS0FHRV9BUkNIUz1hbGwgYW55IG5vYXJjaCAke1NES19B
UkNIfS1uYXRpdmVzZGsKU0RLX1BBQ0tBR0VfQVJDSFM9ImFsbCBhbnkgbm9hcmNoIHg4Nl82NC1u
YXRpdmVzZGsiCiMgbG9jYWxzdGF0ZWRpcj0ke2Jhc2VfcHJlZml4fS92YXIKZXhwb3J0IGxvY2Fs
c3RhdGVkaXI9Ii92YXIiCiMgZG9fcGFja2FnZV93cml0ZV9kZWI9Tm9uZQojIHByZWZpeD0vdXNy
CmV4cG9ydCBwcmVmaXg9Ii91c3IiCiMgRlJFRVNNQVJUUEhPTkVfR0lUPWdpdDovL2dpdC5mcmVl
c21hcnRwaG9uZS5vcmcKRlJFRVNNQVJUUEhPTkVfR0lUPSJnaXQ6Ly9naXQuZnJlZXNtYXJ0cGhv
bmUub3JnIgojIENQUD0ke0hPU1RfUFJFRklYfWdjYyAtRSR7VE9PTENIQUlOX09QVElPTlN9ICR7
SE9TVF9DQ19BUkNIfQpleHBvcnQgQ1BQPSJhcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYyAtRSAt
LXN5c3Jvb3Q9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlx
ZW11YXJtICAtbWFyY2g9YXJtdjV0ZSAgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsgIC1tdHVuZT1h
cm05MjZlai1zIgojIElOSEVSSVRfSU5TQU5FPWluc2FuZQpJTkhFUklUX0lOU0FORT0iaW5zYW5l
IgojIENWU0RJUj0ke0NPX0RJUn0vY3ZzCkNWU0RJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZC9kb3dubG9hZHMvY3ZzIgojIEJCRklMRV9DT0xMRUNUSU9OUz0gbm9ybWFsIHlvY3Rv
IG15cWVtdWFybQpCQkZJTEVfQ09MTEVDVElPTlM9Im5vcm1hbCB5b2N0byBteXFlbXVhcm0iCiMg
bWFuZGlyPSR7ZGF0YWRpcn0vbWFuCmV4cG9ydCBtYW5kaXI9Ii91c3Ivc2hhcmUvbWFuIgojIFBS
RUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy1pbnRlcm1lZGlhdGU9JHtHQ0NWRVJTSU9OfQpQUkVG
RVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlPSI0LjclIgojIGJpbmRpcl9jcm9z
cz0vYmluCmJpbmRpcl9jcm9zcz0iL2JpbiIKIyBIT1NUX0NDX0FSQ0g9JHtUQVJHRVRfQ0NfQVJD
SH0KSE9TVF9DQ19BUkNIPSItbWFyY2g9YXJtdjV0ZSAgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsg
IC1tdHVuZT1hcm05MjZlai1zIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXQ9YXJtdjUgdGh1
bWIKVFVORV9GRUFUVVJFU190dW5lLWFybXY1dD0iYXJtdjUgdGh1bWIiCiMgQkFTRURFUEVORFM9
JHtAYmFzZV9kZXBfcHJlcGVuZChkKX0KQkFTRURFUEVORFM9InZpcnR1YWwvYXJtLXBva3ktbGlu
dXgtZ251ZWFiaS1nY2MgdmlydHVhbC9hcm0tcG9reS1saW51eC1nbnVlYWJpLWNvbXBpbGVybGli
cyB2aXJ0dWFsL2xpYmMiCiMgUFJFRkVSUkVEX1BST1ZJREVSX2xpYmdjYy1uYXRpdmVzZGs9bGli
Z2NjLW5hdGl2ZXNkawpQUkVGRVJSRURfUFJPVklERVJfbGliZ2NjLW5hdGl2ZXNkaz0ibGliZ2Nj
LW5hdGl2ZXNkayIKIyBGQUtFUk9PVERJUlM9JHtQU0VVRE9fTE9DQUxTVEFURURJUn0KRkFLRVJP
T1RESVJTPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUt
cG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9wc2V1ZG8vIgojIEJCX0NPTlNPTEVM
T0c9JHtUTVBESVJ9L2Nvb2tlci5sb2cuJHtEQVRFVElNRX0KQkJfQ09OU09MRUxPRz0iL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvY29va2VyLmxvZy4yMDEyMDgyMjE0MzgwNiIK
IyBLRVJORUxfQ09OU09MRT10dHlTMApLRVJORUxfQ09OU09MRT0idHR5UzAiCiMgU1RSSVA9JHtI
T1NUX1BSRUZJWH1zdHJpcApleHBvcnQgU1RSSVA9ImFybS1wb2t5LWxpbnV4LWdudWVhYmktc3Ry
aXAiCiMgVFVORV9GRUFUVVJFU190dW5lLWFybXY1ZT1hcm12NSBkc3AKVFVORV9GRUFUVVJFU190
dW5lLWFybXY1ZT0iYXJtdjUgZHNwIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm05MjZlanM9JHtU
VU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0ZX0gYXJtOTI2ZWpzClRVTkVfRkVBVFVSRVNfdHVuZS1h
cm05MjZlanM9ImFybXY1IGRzcCB0aHVtYiBhcm05MjZlanMiCiMgU1RBR0lOR19EQVRBRElSPSR7
U1RBR0lOR19ESVJfSE9TVH0ke2RhdGFkaXJ9ClNUQUdJTkdfREFUQURJUj0iL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtL3Vzci9zaGFyZSIKIyB0
YXJnZXRfZGF0YWRpcj0vdXNyL3NoYXJlCnRhcmdldF9kYXRhZGlyPSIvdXNyL3NoYXJlIgojIFVT
RV9QUl9TRVJWPSR7QFsxLDBdWygobm90IGQuZ2V0VmFyKCdQUlNFUlZfSE9TVCcsIFRydWUpKSBv
ciAobm90IGQuZ2V0VmFyKCdQUlNFUlZfUE9SVCcsIFRydWUpKSkgYW5kIChub3QgZC5nZXRWYXIo
J1BSU0VSVl9MT0NLRE9XTicsIFRydWUpKV19ClVTRV9QUl9TRVJWPSIwIgojIENDQUNIRT0KIyBJ
TUFHRV9ST09URlM9JHtXT1JLRElSfS9yb290ZnMKSU1BR0VfUk9PVEZTPSIvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2Ji
bGF5ZXJzLTEuMC1yMC9yb290ZnMiCiMgYmFzZV9iaW5kaXJfbmF0aXZlPS9iaW4KYmFzZV9iaW5k
aXJfbmF0aXZlPSIvYmluIgojIEFMTE9XX0VNUFRZXyR7UE59LWRiZz0xCkFMTE9XX0VNUFRZX2Ji
bGF5ZXJzLWRiZz0iMSIKIyBTRUNUSU9OPWJhc2UKU0VDVElPTj0iYmFzZSIKIyBLRVJORUxPUkdf
TUlSUk9SPWh0dHA6Ly9rZXJuZWwub3JnL3B1YgpLRVJORUxPUkdfTUlSUk9SPSJodHRwOi8va2Vy
bmVsLm9yZy9wdWIiCiMgU0VDVElPTl8ke1BOfS1kYmc9ZGV2ZWwKU0VDVElPTl9iYmxheWVycy1k
Ymc9ImRldmVsIgojIERBVEVUSU1FPSR7REFURX0ke1RJTUV9CkRBVEVUSU1FPSIyMDEyMDgyMjE0
MzgwNiIKIyBQPSR7UE59LSR7UFZ9ClA9ImJibGF5ZXJzLTEuMCIKIyBTT0xJQlNfZGFyd2luOT0u
Ki5keWxpYgpTT0xJQlNfZGFyd2luOT0iLiouZHlsaWIiCiMgQlVJTERDRkdfVkFSUz1CQl9WRVJT
SU9OIFRBUkdFVF9BUkNIIFRBUkdFVF9PUyBNQUNISU5FIERJU1RSTyBESVNUUk9fVkVSU0lPTiBU
VU5FX0ZFQVRVUkVTIFRBUkdFVF9GUFUKQlVJTERDRkdfVkFSUz0iQkJfVkVSU0lPTiBUQVJHRVRf
QVJDSCBUQVJHRVRfT1MgTUFDSElORSBESVNUUk8gRElTVFJPX1ZFUlNJT04gVFVORV9GRUFUVVJF
UyBUQVJHRVRfRlBVIgojIEZJTEVTUEFUSD0ke0BiYXNlX3NldF9maWxlc3BhdGgoWyAiJHtGSUxF
X0RJUk5BTUV9LyR7UEZ9IiwgIiR7RklMRV9ESVJOQU1FfS8ke1B9IiwgIiR7RklMRV9ESVJOQU1F
fS8ke1BOfSIsICIke0ZJTEVfRElSTkFNRX0vJHtCUH0iLCAiJHtGSUxFX0RJUk5BTUV9LyR7QlBO
fSIsICIke0ZJTEVfRElSTkFNRX0vZmlsZXMiLCAiJHtGSUxFX0RJUk5BTUV9IiBdLCBkKX0KRklM
RVNQQVRIPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4w
LXIwL2xpbnV4LWdudWVhYmk6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2Ji
bGF5ZXJzLTEuMC1yMC9hcm06L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2Ji
bGF5ZXJzLTEuMC1yMC9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L2NvbmYvYmJsYXllcnMtMS4wLXIwL3BuLWJibGF5ZXJzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAtcjAvbXlxZW11YXJtOi9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAtcjAvYXJtdjU6L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC9jb25mL2JibGF5ZXJzLTEuMC1yMC9wb2t5Oi9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAtcjAvY2xhc3MtdGFyZ2V0Oi9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAtcjAvZm9yY2V2YXJp
YWJsZTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4wLXIw
L3RodW1iOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAt
cjAvbGliYy1nbGliYzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXll
cnMtMS4wLXIwLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMt
MS4wL2xpbnV4LWdudWVhYmk6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2Ji
bGF5ZXJzLTEuMC9hcm06L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2JibGF5
ZXJzLTEuMC9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYv
YmJsYXllcnMtMS4wL3BuLWJibGF5ZXJzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
Y29uZi9iYmxheWVycy0xLjAvbXlxZW11YXJtOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVp
bGQvY29uZi9iYmxheWVycy0xLjAvYXJtdjU6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9jb25mL2JibGF5ZXJzLTEuMC9wb2t5Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
Y29uZi9iYmxheWVycy0xLjAvY2xhc3MtdGFyZ2V0Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvY29uZi9iYmxheWVycy0xLjAvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4wL3RodW1iOi9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAvbGliYy1nbGliYzovaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4wLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL2NvbmYvYmJsYXllcnMvbGludXgtZ251ZWFiaTovaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMvYXJtOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvY29uZi9iYmxheWVycy9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvYmJsYXllcnMvcG4tYmJsYXllcnM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZC9jb25mL2JibGF5ZXJzL215cWVtdWFybTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvYmJsYXllcnMvYXJtdjU6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9jb25mL2JibGF5ZXJzL3Bva3k6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzL2NsYXNzLXRhcmdldDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2Nv
bmYvYmJsYXllcnMvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L2NvbmYvYmJsYXllcnMvdGh1bWI6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzL2xpYmMtZ2xpYmM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMt
MS4wL2xpbnV4LWdudWVhYmk6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2Ji
bGF5ZXJzLTEuMC9hcm06L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2JibGF5
ZXJzLTEuMC9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYv
YmJsYXllcnMtMS4wL3BuLWJibGF5ZXJzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
Y29uZi9iYmxheWVycy0xLjAvbXlxZW11YXJtOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVp
bGQvY29uZi9iYmxheWVycy0xLjAvYXJtdjU6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9jb25mL2JibGF5ZXJzLTEuMC9wb2t5Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
Y29uZi9iYmxheWVycy0xLjAvY2xhc3MtdGFyZ2V0Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvY29uZi9iYmxheWVycy0xLjAvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4wL3RodW1iOi9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy0xLjAvbGliYy1nbGliYzovaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMtMS4wLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL2NvbmYvYmJsYXllcnMvbGludXgtZ251ZWFiaTovaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMvYXJtOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvY29uZi9iYmxheWVycy9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvYmJsYXllcnMvcG4tYmJsYXllcnM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZC9jb25mL2JibGF5ZXJzL215cWVtdWFybTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvYmJsYXllcnMvYXJtdjU6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9jb25mL2JibGF5ZXJzL3Bva3k6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzL2NsYXNzLXRhcmdldDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2Nv
bmYvYmJsYXllcnMvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L2NvbmYvYmJsYXllcnMvdGh1bWI6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzL2xpYmMtZ2xpYmM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2JibGF5ZXJzLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvZmlsZXMvbGlu
dXgtZ251ZWFiaTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvZmlsZXMvYXJt
Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvY29uZi9maWxlcy9idWlsZC1saW51eDov
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvZmlsZXMvcG4tYmJsYXllcnM6L2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2ZpbGVzL215cWVtdWFybTovaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvZmlsZXMvYXJtdjU6L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC9jb25mL2ZpbGVzL3Bva3k6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZC9jb25mL2ZpbGVzL2NsYXNzLXRhcmdldDovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvZmlsZXMvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvZmlsZXMvdGh1bWI6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9j
b25mL2ZpbGVzL2xpYmMtZ2xpYmM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25m
L2ZpbGVzLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvbGludXgtZ251ZWFi
aTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYXJtOi9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvY29uZi9idWlsZC1saW51eDovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL2NvbmYvcG4tYmJsYXllcnM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9jb25mL215cWVtdWFybTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYXJt
djU6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL3Bva3k6L2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC9jb25mL2NsYXNzLXRhcmdldDovaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2NvbmYvZm9yY2V2YXJpYWJsZTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL2NvbmYvdGh1bWI6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mL2xp
YmMtZ2xpYmM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9jb25mLyIKIyBJTUFHRV9G
RUFUVVJFUz0gJHtFWFRSQV9JTUFHRV9GRUFUVVJFU30KSU1BR0VfRkVBVFVSRVM9ImRlYnVnLXR3
ZWFrcyIKIyBERVBMT1lfRElSX1RPT0xTPSR7REVQTE9ZX0RJUn0vdG9vbHMKREVQTE9ZX0RJUl9U
T09MUz0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L3Rvb2xzIgoj
IFRVTkVfQVJDSD0ke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRp
YW4iLCAiYXJtZWIiLCAiYXJtIiwgZCl9ClRVTkVfQVJDSD0iYXJtIgojIFFBREVQRU5EUz1wcmVs
aW5rLW5hdGl2ZQpRQURFUEVORFM9InByZWxpbmstbmF0aXZlIgojIFdISVRFTElTVF9HUEx2Mz1s
ZXNzCldISVRFTElTVF9HUEx2Mz0ibGVzcyIKIyBFX1NWTj1zdm46Ly9zdm4uZW5saWdodGVubWVu
dC5vcmcvc3ZuL2UKRV9TVk49InN2bjovL3N2bi5lbmxpZ2h0ZW5tZW50Lm9yZy9zdm4vZSIKIyBQ
U0VVRE9fUEFTU1dEPSR7U1RBR0lOR19ESVJfVEFSR0VUfQpQU0VVRE9fUEFTU1dEPSIvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0iCiMgQlVJTERf
Q1hYRkxBR1M9JHtCVUlMRF9DRkxBR1N9IC1mcGVybWlzc2l2ZQpleHBvcnQgQlVJTERfQ1hYRkxB
R1M9Ii1pc3lzdGVtL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMv
eDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAtZnBlcm1pc3NpdmUiCiMgU1RBR0lO
R19ESVJfVENCT09UU1RSQVA9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LXRjYm9vdHN0cmFwClNUQUdJ
TkdfRElSX1RDQk9PVFNUUkFQPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9z
eXNyb290cy9teXFlbXVhcm0tdGNib290c3RyYXAiCiMgT0JKQ09QWT0ke0hPU1RfUFJFRklYfW9i
amNvcHkKZXhwb3J0IE9CSkNPUFk9ImFybS1wb2t5LWxpbnV4LWdudWVhYmktb2JqY29weSIKIyBB
Uj0ke0hPU1RfUFJFRklYfWFyCmV4cG9ydCBBUj0iYXJtLXBva3ktbGludXgtZ251ZWFiaS1hciIK
IyBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bz0zLjIlClBSRUZFUlJFRF9WRVJTSU9OX2xp
bnV4LXlvY3RvPSIzLjIlIgojIFBSRUZFUlJFRF9WRVJTSU9OX2Nyb3NzLWxvY2FsZWRlZi1uYXRp
dmU9JHtFR0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0
aXZlPSIyLjE2IgojIFBFUlNJU1RFTlRfRElSPSR7VE1QRElSfS9jYWNoZQpQRVJTSVNURU5UX0RJ
Uj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvY2FjaGUiCiMgZnRwX3Byb3h5
PXByb3h5LWpmLmludGVsLmNvbTo5MTEKZnRwX3Byb3h5PSJwcm94eS1qZi5pbnRlbC5jb206OTEx
IgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRoZi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1bmUt
YXJtdjV0LXZmcH0gY2FsbGNvbnZlbnRpb24taGFyZApUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0
aGYtdmZwPSJhcm12NSB2ZnAgY2FsbGNvbnZlbnRpb24taGFyZCIKIyBQQUxNVE9QX1VTRV9NVUxU
SVRIUkVBREVEX1FUPU5vbmUKIyBTT0xJQlNERVZfZGFyd2luOD0uZHlsaWIKU09MSUJTREVWX2Rh
cndpbjg9Ii5keWxpYiIKIyBTT0xJQlNERVZfZGFyd2luOT0uZHlsaWIKU09MSUJTREVWX2Rhcndp
bjk9Ii5keWxpYiIKIyBCQl9IQVNIQkFTRV9XSElURUxJU1Q9VE1QRElSIEZJTEUgUEFUSCBQV0Qg
QkJfVEFTS0hBU0ggQkJQQVRIIERMX0RJUiBTU1RBVEVfRElSIFRISVNESVIgRklMRVNFWFRSQVBB
VEhTIEZJTEVfRElSTkFNRSBIT01FIExPR05BTUUgU0hFTEwgVEVSTSBVU0VSIEZJTEVTUEFUSCBT
VEFHSU5HX0RJUl9IT1NUIFNUQUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBQ
UlNFUlZfUE9SVCBQUlNFUlZfRFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dO
IFBBUkFMTEVMX01BS0UgQ0NBQ0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFCkJCX0hB
U0hCQVNFX1dISVRFTElTVD0iVE1QRElSIEZJTEUgUEFUSCBQV0QgQkJfVEFTS0hBU0ggQkJQQVRI
IERMX0RJUiBTU1RBVEVfRElSIFRISVNESVIgRklMRVNFWFRSQVBBVEhTIEZJTEVfRElSTkFNRSBI
T01FIExPR05BTUUgU0hFTEwgVEVSTSBVU0VSIEZJTEVTUEFUSCBTVEFHSU5HX0RJUl9IT1NUIFNU
QUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBQUlNFUlZfUE9SVCBQUlNFUlZf
RFVNUERJUiBQUlNFUlZfRFVNUEZJTEUgUFJTRVJWX0xPQ0tET1dOIFBBUkFMTEVMX01BS0UgQ0NB
Q0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFIgojIFVTRVI9bHNlcmJhbgpleHBvcnQg
VVNFUj0ibHNlcmJhbiIKIyBTUkNfVVJJPQojIEFSTVBLR1NGWF9FTkRJQU49JHtAYmIudXRpbHMu
Y29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgImIiLCAiIiwgZCl9CiMgU1NU
QVRFUE9TVElOU1RGVU5DUz0KIyBpbmNsdWRlZGlyX25hdGl2ZT0ke3ByZWZpeF9uYXRpdmV9L2lu
Y2x1ZGUKaW5jbHVkZWRpcl9uYXRpdmU9Ii91c3IvaW5jbHVkZSIKIyBPRVNfQklUQkFLRV9DT05G
PTEKT0VTX0JJVEJBS0VfQ09ORj0iMSIKIyBTVU1NQVJZXyR7UE59LWRvYz0ke1NVTU1BUll9IC0g
RG9jdW1lbnRhdGlvbiBmaWxlcwpTVU1NQVJZX2JibGF5ZXJzLWRvYz0iYmJsYXllcnMgdmVyc2lv
biAxLjAtcjAgLSBEb2N1bWVudGF0aW9uIGZpbGVzIgojIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5D
Uz0KIyBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTPQojIFNUQUdJTkdfQklORElSPSR7U1RBR0lO
R19ESVJfSE9TVH0ke2JpbmRpcn0KU1RBR0lOR19CSU5ESVI9Ii9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL215cWVtdWFybS91c3IvYmluIgojIFNWTkRJUj0ke0NP
X0RJUn0vc3ZuClNWTkRJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9kb3dubG9h
ZHMvc3ZuIgojIFBSRUZFUlJFRF9QUk9WSURFUl9kYnVzLWdsaWItbmF0aXZlPWRidXMtZ2xpYi1u
YXRpdmUKUFJFRkVSUkVEX1BST1ZJREVSX2RidXMtZ2xpYi1uYXRpdmU9ImRidXMtZ2xpYi1uYXRp
dmUiCiMgVFVORV9GRUFUVVJFU190dW5lLWFybXY1dGVoZi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1
bmUtYXJtdjV0ZS12ZnB9IGNhbGxjb252ZW50aW9uLWhhcmQKVFVORV9GRUFUVVJFU190dW5lLWFy
bXY1dGVoZi12ZnA9ImFybXY1IHZmcCBkc3AgdGh1bWIgY2FsbGNvbnZlbnRpb24taGFyZCIKIyBY
U0VSVkVSPXhzZXJ2ZXIteG9yZyAgICAgICAgICAgICBtZXNhLWRyaS1kcml2ZXItc3dyYXN0ICAg
ICAgICAgICAgIHhmODYtaW5wdXQtZXZkZXYgICAgICAgICAgICAgeGY4Ni1pbnB1dC1tb3VzZSAg
ICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2ICAgICAgICAgICAgIHhmODYtaW5wdXQta2V5Ym9h
cmQKWFNFUlZFUj0ieHNlcnZlci14b3JnICAgICAgICAgICAgIG1lc2EtZHJpLWRyaXZlci1zd3Jh
c3QgICAgICAgICAgICAgeGY4Ni1pbnB1dC1ldmRldiAgICAgICAgICAgICB4Zjg2LWlucHV0LW1v
dXNlICAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgICAgICAgICAgICAgeGY4Ni1pbnB1dC1r
ZXlib2FyZCIKIyBFWFRFTkRQRT0ke0BbJycsJyR7UEVceDdkXyddW2QuZ2V0VmFyKCdQRScsMSkg
PiAwXX0KIyBGSUxFU0RJUj0ke0BiYi53aGljaChkLmdldFZhcignRklMRVNQQVRIJywgVHJ1ZSks
ICcuJyl9CkZJTEVTRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvLiIK
IyBRRU1VX09QVElPTlNfZTU1MDAtNjRiPS1jcHUgZTU1MDAKUUVNVV9PUFRJT05TX2U1NTAwLTY0
Yj0iLWNwdSBlNTUwMCIKIyBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtaW5pdGlhbD0ke0dD
Q1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy1pbml0aWFsPSI0LjclIgojIEJC
X05VTUJFUl9USFJFQURTPTgKQkJfTlVNQkVSX1RIUkVBRFM9IjgiCiMgQkJJTkNMVURFRD0vaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MgL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3Byc2Vydi5iYmNsYXNzIC9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzIC9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy5jb25mIC9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvbWV0YS9jb25mL2xheWVyLmNvbmYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyNmVqcy5pbmMgL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvaW1hZ2UtbWtsaWJzLmJiY2xhc3MgL2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmlu
YyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzIC9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVy
c2lvbnMuaW5jIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3V0aWxzLmJi
Y2xhc3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5i
YmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL3Nhbml0eS5jb25mIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3Mg
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyAvaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MgL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvdGVybWluYWwuYmJjbGFzcyAvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ry
b3ZhcnMuaW5jIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3BhdGNoLmJi
Y2xhc3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xh
c3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9tZXRhLW15cWVtdWFybS9jb25mL21h
Y2hpbmUvbXlxZW11YXJtLmNvbmYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNz
ZXMvcGFja2FnZWRhdGEuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xh
c3Nlcy9sb2dnaW5nLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYv
bWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY1LmluYyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL21ldGEvY2xhc3Nlcy9tZXRhZGF0YV9zY20uYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMgL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmlu
YyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJt
L2ZlYXR1cmUtYXJtLXRodW1iLmluYyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xh
c3Nlcy9kZXZzaGVsbC5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25m
L2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYyAvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtLmluYyAvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtZWdsaWJjLmlu
YyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEteW9jdG8vY29uZi9kaXN0cm8vcG9reS5j
b25mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9h
cm0vZmVhdHVyZS1hcm0tdmZwLmluYyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xh
c3Nlcy9iYXNlLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlz
dHJvL2RlZmF1bHRzZXR1cC5jb25mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25m
L21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12NS1kc3AuaW5jIC9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvbWV0YS15b2N0by9jb25mL2xheWVyLmNvbmYgL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC9tZXRhLW15cWVtdWFybS9jb25mL2xheWVyLmNvbmYgL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9tZXRhL2NvbmYvYml0YmFrZS5jb25mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC9jb25mL2xvY2FsLmNvbmYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRh
L2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12NC5pbmMKQkJJTkNMVURFRD0i
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Lmlu
YyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9wcnNlcnYuYmJjbGFzcyAv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyAvaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYvYmJsYXllcnMuY29uZiAvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9sYXllci5jb25mIC9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05MjZlanMuaW5jIC9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL2ltYWdlLW1rbGlicy5iYmNsYXNzIC9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tl
bi5pbmMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29u
ZiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcyAv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0
LXZlcnNpb25zLmluYyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy91dGls
cy5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL2J1aWxkc3Rh
dHMuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9zYW5pdHkuY29u
ZiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNs
YXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFz
cyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3Mg
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL3Rlcm1pbmFsLmJiY2xhc3MgL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1k
aXN0cm92YXJzLmluYyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY2xhc3Nlcy9wYXRj
aC5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jbGFzc2VzL2RlYmlhbi5i
YmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvbWV0YS1teXFlbXVhcm0vY29u
Zi9tYWNoaW5lL215cWVtdWFybS5jb25mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9j
bGFzc2VzL3BhY2thZ2VkYXRhLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRh
L2NsYXNzZXMvbG9nZ2luZy5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9j
b25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12NS5pbmMgL2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9tZXRhL2NsYXNzZXMvbWV0YWRhdGFfc2NtLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIC9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRl
ZC5pbmMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRl
L2FybS9mZWF0dXJlLWFybS10aHVtYi5pbmMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRh
L2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEv
Y29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMgL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybS5pbmMgL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWVnbGli
Yy5pbmMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhLXlvY3RvL2NvbmYvZGlzdHJvL3Bv
a3kuY29uZiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvY29uZi9tYWNoaW5lL2luY2x1
ZGUvYXJtL2ZlYXR1cmUtYXJtLXZmcC5pbmMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRh
L2NsYXNzZXMvYmFzZS5iYmNsYXNzIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS9jb25m
L2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEv
Y29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjUtZHNwLmluYyAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL21ldGEteW9jdG8vY29uZi9sYXllci5jb25mIC9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvbWV0YS1teXFlbXVhcm0vY29uZi9sYXllci5jb25mIC9ob21lL2xzZXJi
YW4vd29yay9tYXN0ZXIvbWV0YS9jb25mL2JpdGJha2UuY29uZiAvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mIC9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvY29uZi9sb2NhbC5jb25mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
bWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjQuaW5jIgojIFNTVEFU
RV9WRVJTSU9OPTIKU1NUQVRFX1ZFUlNJT049IjIiCiMgVVNFX05MUz15ZXMKVVNFX05MUz0ieWVz
IgojIFNES19OQU1FPSR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtUQVJHRVRfQVJD
SH0KU0RLX05BTUU9InBva3ktZWdsaWJjLXg4Nl82NC1hcm0iCiMgVFVORV9GRUFUVVJFU190dW5l
LWFybXY1ZWhmYi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjVlYi12ZnB9IGNhbGxjb252
ZW50aW9uLWhhcmQKVFVORV9GRUFUVVJFU190dW5lLWFybXY1ZWhmYi12ZnA9ImFybXY1IHZmcCBk
c3AgYmlnZW5kaWFuIGNhbGxjb252ZW50aW9uLWhhcmQiCiMgT0VMQVlPVVRfQUJJPTgKT0VMQVlP
VVRfQUJJPSI4IgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NT1hcm12NQpUVU5FX0ZFQVRVUkVT
X3R1bmUtYXJtdjU9ImFybXY1IgojIFRNUERJUj0ke1RPUERJUn0vdG1wJHtUQ0xJQkNBUFBFTkR9
ClRNUERJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAiCiMgUFJFRkVSUkVE
X1BST1ZJREVSX29wa2ctbmF0aXZlc2RrPW9wa2ctbmF0aXZlc2RrClBSRUZFUlJFRF9QUk9WSURF
Ul9vcGtnLW5hdGl2ZXNkaz0ib3BrZy1uYXRpdmVzZGsiCiMgRElTVFJPX0ZFQVRVUkVTX0xJQkNf
REVGQVVMVD1pcHY0IGlwdjYgbGliYy1iYWNrdHJhY2UgbGliYy1iaWctbWFjcm9zIGxpYmMtYnNk
IGxpYmMtY3h4LXRlc3RzIGxpYmMtY2F0Z2V0cyBsaWJjLWNoYXJzZXRzIGxpYmMtY3J5cHQgCQkJ
CQlsaWJjLWNyeXB0LXVmYyBsaWJjLWRiLWFsaWFzZXMgbGliYy1lbnZ6IGxpYmMtZmN2dCBsaWJj
LWZtdG1zZyBsaWJjLWZzdGFiIGxpYmMtZnRyYXZlcnNlIAkJCQkJbGliYy1nZXRsb2dpbiBsaWJj
LWlkbiBsaWJjLWluZXQtYW5sIGxpYmMtbGlibSBsaWJjLWxpYm0tYmlnIGxpYmMtbG9jYWxlcyBs
aWJjLWxvY2FsZS1jb2RlIAkJCQkJbGliYy1tZW11c2FnZSBsaWJjLW5pcyBsaWJjLW5zc3dpdGNo
IGxpYmMtcmNtZCBsaWJjLXJ0bGQtZGVidWcgbGliYy1zcGF3biBsaWJjLXN0cmVhbXMgbGliYy1z
dW5ycGMgCQkJCQlsaWJjLXV0bXAgbGliYy11dG1weCBsaWJjLXdvcmRleHAgbGliYy1wb3NpeC1j
bGFuZy13Y2hhciBsaWJjLXBvc2l4LXJlZ2V4cCBsaWJjLXBvc2l4LXJlZ2V4cC1nbGliYyAJCQkJ
CWxpYmMtcG9zaXgtd2NoYXItaW8KRElTVFJPX0ZFQVRVUkVTX0xJQkNfREVGQVVMVD0iaXB2NCBp
cHY2IGxpYmMtYmFja3RyYWNlIGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0
cyBsaWJjLWNhdGdldHMgbGliYy1jaGFyc2V0cyBsaWJjLWNyeXB0IAkJCQkJbGliYy1jcnlwdC11
ZmMgbGliYy1kYi1hbGlhc2VzIGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1m
c3RhYiBsaWJjLWZ0cmF2ZXJzZSAJCQkJCWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0
LWFubCBsaWJjLWxpYm0gbGliYy1saWJtLWJpZyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29k
ZSAJCQkJCWxpYmMtbWVtdXNhZ2UgbGliYy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGli
Yy1ydGxkLWRlYnVnIGxpYmMtc3Bhd24gbGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIAkJCQkJbGli
Yy11dG1wIGxpYmMtdXRtcHggbGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGli
Yy1wb3NpeC1yZWdleHAgbGliYy1wb3NpeC1yZWdleHAtZ2xpYmMgCQkJCQlsaWJjLXBvc2l4LXdj
aGFyLWlvIgojIGJhc2VfbGliZGlyX25hdGl2ZT0vbGliCmJhc2VfbGliZGlyX25hdGl2ZT0iL2xp
YiIKIyBUT1BESVI9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZApUT1BESVI9Ii9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQiCiMgUUVNVV9PUFRJT05TX2l3bW14dD0tY3B1IHB4
YTI3MC1jNQpRRU1VX09QVElPTlNfaXdtbXh0PSItY3B1IHB4YTI3MC1jNSIKIyBpbmNsdWRlZGly
X25hdGl2ZXNkaz0ke3ByZWZpeF9uYXRpdmVzZGt9L2luY2x1ZGUKaW5jbHVkZWRpcl9uYXRpdmVz
ZGs9Ii91c3IvaW5jbHVkZSIKIyBsaWJleGVjZGlyPSR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMKZXhw
b3J0IGxpYmV4ZWNkaXI9Ii91c3IvbGliZXhlYyIKIyBMSU5LRVJfSEFTSF9TVFlMRV9taXBzZWw9
c3lzdgpMSU5LRVJfSEFTSF9TVFlMRV9taXBzZWw9InN5c3YiCiMgQ0NBQ0hFX0RJU0FCTEU9JHtA
WzAsMV1bZC5nZXRWYXIoJ0NDQUNIRScsIFRydWUpID09ICcnXX0KZXhwb3J0IENDQUNIRV9ESVNB
QkxFPSIxIgojIEZFVENIQ01EX3N2bj0vdXNyL2Jpbi9lbnYgc3ZuCkZFVENIQ01EX3N2bj0iL3Vz
ci9iaW4vZW52IHN2biIKIyBTT1VSQ0VfTUlSUk9SX0ZFVENIPU5vbmUKIyBTVU1NQVJZXyR7UE59
LXN0YXRpY2Rldj0ke1NVTU1BUll9IC0gRGV2ZWxvcG1lbnQgZmlsZXMgKFN0YXRpYyBMaWJyYXJp
ZXMpClNVTU1BUllfYmJsYXllcnMtc3RhdGljZGV2PSJiYmxheWVycyB2ZXJzaW9uIDEuMC1yMCAt
IERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKSIKIyBJTUFHRV9QS0dUWVBFPXJw
bQpJTUFHRV9QS0dUWVBFPSJycG0iCiMgRklMRVNfJHtQTn0tZGJnPSR7QGQuZ2V0VmFyKFsnRE9U
REVCVUctZGJnJywgJ0RFQlVHRklMRURJUkVDVE9SWS1kYmcnXVtkLmdldFZhcignUEFDS0FHRV9E
RUJVR19TUExJVF9TVFlMRScsIFRydWUpID09ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeSddLCBUcnVl
KX0KRklMRVNfYmJsYXllcnMtZGJnPSIvdXNyL2Jpbi8uZGVidWcgL3Vzci9zYmluLy5kZWJ1ZyAv
dXNyL2xpYmV4ZWMvLmRlYnVnIC91c3IvbGliLy5kZWJ1ZyAvYmluLy5kZWJ1ZyAvc2Jpbi8uZGVi
dWcgL2xpYi8uZGVidWcgL3Vzci9saWIvYmJsYXllcnMvLmRlYnVnIC91c3IvbGliL21hdGNoYm94
LXBhbmVsLy5kZWJ1ZyAvdXNyL3NyYy9kZWJ1ZyIKIyBzZXJ2aWNlZGlyPSR7YmFzZV9wcmVmaXh9
L3NydgpleHBvcnQgc2VydmljZWRpcj0iL3NydiIKIyBST09URlNfUE9TVFBST0NFU1NfQ09NTUFO
RD1saWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgClJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EPSJs
aWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsiCiMgUFJFRkVSUkVEX1BST1ZJREVSX2xpbnV4LWxpYmMt
aGVhZGVycy1uYXRpdmVzZGs9bGludXgtbGliYy1oZWFkZXJzLW5hdGl2ZXNkawpQUkVGRVJSRURf
UFJPVklERVJfbGludXgtbGliYy1oZWFkZXJzLW5hdGl2ZXNkaz0ibGludXgtbGliYy1oZWFkZXJz
LW5hdGl2ZXNkayIKIyBiaW5kaXJfbmF0aXZlPSR7cHJlZml4X25hdGl2ZX0vYmluCmJpbmRpcl9u
YXRpdmU9Ii91c3IvYmluIgojIEJCX01JTl9WRVJTSU9OPTEuMTUuMwpCQl9NSU5fVkVSU0lPTj0i
MS4xNS4zIgojIEJVSUxEX1BSRUZJWD0KIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjVl
Yj0ke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NWJ9IGFybXY1ZWIKUEFDS0FHRV9FWFRS
QV9BUkNIU190dW5lLWFybXY1ZWI9ImFybSBhcm12NCBhcm12NWIgYXJtdjVlYiIKIyBQUkVGRVJS
RURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjPWdjYy1jcm9zcwpQUkVGRVJS
RURfUFJPVklERVJfdmlydHVhbC9hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYz0iZ2NjLWNyb3Nz
IgojIFNES19PUz0ke0JVSUxEX09TfQpTREtfT1M9ImxpbnV4IgojIENPTUJJTkVEX0ZFQVRVUkVT
PSR7QGJhc2VfYm90aF9jb250YWluKCJESVNUUk9fRkVBVFVSRVMiLCAiTUFDSElORV9GRUFUVVJF
UyIsICJhbHNhIiwgZCl9ICR7QGJhc2VfYm90aF9jb250YWluKCJESVNUUk9fRkVBVFVSRVMiLCAi
TUFDSElORV9GRUFUVVJFUyIsICJibHVldG9vdGgiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4o
IkRJU1RST19GRUFUVVJFUyIsICJNQUNISU5FX0ZFQVRVUkVTIiwgImV4dDIiLCBkKX0gJHtAYmFz
ZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFUVVJFUyIsICJNQUNISU5FX0ZFQVRVUkVTIiwgInZm
YXQiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFUVVJFUyIsICJNQUNISU5F
X0ZFQVRVUkVTIiwgImlyZGEiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFU
VVJFUyIsICJNQUNISU5FX0ZFQVRVUkVTIiwgInBjbWNpYSIsIGQpfSAke0BiYXNlX2JvdGhfY29u
dGFpbigiRElTVFJPX0ZFQVRVUkVTIiwgIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGNpIiwgZCl9ICR7
QGJhc2VfYm90aF9jb250YWluKCJESVNUUk9fRkVBVFVSRVMiLCAiTUFDSElORV9GRUFUVVJFUyIs
ICJ1c2JnYWRnZXQiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4oIkRJU1RST19GRUFUVVJFUyIs
ICJNQUNISU5FX0ZFQVRVUkVTIiwgInVzYmhvc3QiLCBkKX0gJHtAYmFzZV9ib3RoX2NvbnRhaW4o
IkRJU1RST19GRUFUVVJFUyIsICJNQUNISU5FX0ZFQVRVUkVTIiwgIndpZmkiLCBkKX0KQ09NQklO
RURfRkVBVFVSRVM9ImFsc2EgYmx1ZXRvb3RoICAgaXJkYSBwY21jaWEgIHVzYmdhZGdldCIKIyBH
SVRfQ09ORklHPSR7R0lUX0NPTkZJR19QQVRIfS9naXRjb25maWcKR0lUX0NPTkZJRz0iL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L2V0Yy9n
aXRjb25maWciCiMgUFlUSE9OPSR7QHN5cy5leGVjdXRhYmxlfQpQWVRIT049Ii91c3IvYmluL3B5
dGhvbiIKIyBkYXRhZGlyPSR7cHJlZml4fS9zaGFyZQpleHBvcnQgZGF0YWRpcj0iL3Vzci9zaGFy
ZSIKIyBTVEFHSU5HX0VUQ0RJUl9OQVRJVkU9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtzeXNjb25m
ZGlyX25hdGl2ZX0KU1RBR0lOR19FVENESVJfTkFUSVZFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvZXRjIgojIEhPU1RfRVhFRVhUPQoj
IFNSQ0RBVEU9JHtEQVRFfQpTUkNEQVRFPSIyMDEyMDgyMiIKIyBQUkVGRVJSRURfVkVSU0lPTl9l
Z2xpYmMtbmF0aXZlc2RrPSR7RUdMSUJDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZWdsaWJj
LW5hdGl2ZXNkaz0iMi4xNiIKIyBTRVBQVUtVX1BBU1M9Tm9uZQojIFNVTU1BUlk9JHtQTn0gdmVy
c2lvbiAke1BWfS0ke1BSfQpTVU1NQVJZPSJiYmxheWVycyB2ZXJzaW9uIDEuMC1yMCIKIyBUVU5F
X0ZFQVRVUkVTX3R1bmUtYXJtdjV0ZWhmYi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0
ZWItdmZwfSBjYWxsY29udmVudGlvbi1oYXJkClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRlaGZi
LXZmcD0iYXJtdjUgdmZwIGRzcCB0aHVtYiBiaWdlbmRpYW4gY2FsbGNvbnZlbnRpb24taGFyZCIK
IyBUQVJHRVRfQ0NfQVJDSD0ke1RVTkVfQ0NBUkdTfQpUQVJHRVRfQ0NfQVJDSD0iLW1hcmNoPWFy
bXY1dGUgIC1tYXJtIC1tdGh1bWItaW50ZXJ3b3JrICAtbXR1bmU9YXJtOTI2ZWotcyIKIyBRRU1V
X09QVElPTlNfYXJtdjY9LWNwdSBhcm0xMTM2ClFFTVVfT1BUSU9OU19hcm12Nj0iLWNwdSBhcm0x
MTM2IgojIEhPU1RfQVJDSD0ke1RBUkdFVF9BUkNIfQpIT1NUX0FSQ0g9ImFybSIKIyBFTkFCTEVf
QklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OPTEKRU5BQkxFX0JJTkFSWV9MT0NBTEVfR0VORVJBVElP
Tj0iMSIKIyBUQVJHRVRfT1M9bGludXgke0xJQkNFWFRFTlNJT059JHtBQklFWFRFTlNJT059ClRB
UkdFVF9PUz0ibGludXgtZ251ZWFiaSIKIyBHUEVQSE9ORV9NSVJST1I9aHR0cDovL2dwZXBob25l
LmxpbnV4dG9nby5vcmcvZG93bmxvYWQvZ3BlcGhvbmUKR1BFUEhPTkVfTUlSUk9SPSJodHRwOi8v
Z3BlcGhvbmUubGludXh0b2dvLm9yZy9kb3dubG9hZC9ncGVwaG9uZSIKIyBHUEVQSE9ORV9TVk49
c3ZuOi8vcHJvamVjdHMubGludXh0b2dvLm9yZy9zdm4vZ3BlcGhvbmUvdHJ1bmsvc291cmNlO21v
ZHVsZT0ke1BOfQpHUEVQSE9ORV9TVk49InN2bjovL3Byb2plY3RzLmxpbnV4dG9nby5vcmcvc3Zu
L2dwZXBob25lL3RydW5rL3NvdXJjZTttb2R1bGU9YmJsYXllcnMiCiMgc2JpbmRpcl9uYXRpdmU9
JHtwcmVmaXhfbmF0aXZlfS9zYmluCnNiaW5kaXJfbmF0aXZlPSIvdXNyL3NiaW4iCiMgU09MSUJT
X2Rhcndpbjg9LiouZHlsaWIKU09MSUJTX2Rhcndpbjg9Ii4qLmR5bGliIgojIEFTU1VNRV9QUk9W
SURFRD1iemlwMi1uYXRpdmUgZ2l0LW5hdGl2ZSBncmVwLW5hdGl2ZSBkaWZmc3RhdC1uYXRpdmUg
cGF0Y2gtbmF0aXZlIHBlcmwtbmF0aXZlLXJ1bnRpbWUgcHl0aG9uLW5hdGl2ZS1ydW50aW1lIHRh
ci1uYXRpdmUgdmlydHVhbC9saWJpbnRsLW5hdGl2ZSAKQVNTVU1FX1BST1ZJREVEPSJiemlwMi1u
YXRpdmUgZ2l0LW5hdGl2ZSBncmVwLW5hdGl2ZSBkaWZmc3RhdC1uYXRpdmUgcGF0Y2gtbmF0aXZl
IHBlcmwtbmF0aXZlLXJ1bnRpbWUgcHl0aG9uLW5hdGl2ZS1ydW50aW1lIHRhci1uYXRpdmUgdmly
dHVhbC9saWJpbnRsLW5hdGl2ZSIKIyBleHBhbnNpb24gb2YgU1JDUFYgdGhyZXcgRXhwYW5zaW9u
RXJyb3I6IEZhaWx1cmUgZXhwYW5kaW5nIHZhcmlhYmxlIFNSQ1BWLCBleHByZXNzaW9uIHdhcyAk
e0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0gd2hpY2ggdHJpZ2dlcmVkIGV4Y2VwdGlvbiBGZXRj
aEVycm9yOiBGZXRjaGVyIGZhaWx1cmU6IFNSQ1JFViB3YXMgdXNlZCB5ZXQgbm8gdmFsaWQgU0NN
IHdhcyBmb3VuZCBpbiBTUkNfVVJJCiMgUUVNVV9PUFRJT05TPQojIExJQ1NTVEFURURJUj0ke1dP
UktESVJ9L2xpY2Vuc2UtZGVzdGRpci8KTElDU1NUQVRFRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJz
LTEuMC1yMC9saWNlbnNlLWRlc3RkaXIvIgojIEFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTPSR7
QGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAnUEFDS0FHRV9BUkNIUycpfQpBTExfTVVMVElM
SUJfUEFDS0FHRV9BUkNIUz0iYWxsIGFueSBub2FyY2ggYXJtIGFybXY0IGFybXY0dCBhcm12NSBh
cm12NXQgYXJtdjVlIGFybXY1dGUgbXlxZW11YXJtIgojIFJBTkxJQj0ke0hPU1RfUFJFRklYfXJh
bmxpYgpleHBvcnQgUkFOTElCPSJhcm0tcG9reS1saW51eC1nbnVlYWJpLXJhbmxpYiIKIyBDT05O
RUNUSVZJVFlfQ0hFQ0tfVVJJUz1naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1maXJl
d2FsbC10ZXN0O3Byb3RvY29sPWdpdDtyZXY9SEVBRCBodHRwczovL2V1bGEtZG93bmxvYWRzLnlv
Y3RvcHJvamVjdC5vcmcvaW5kZXgucGhwIGh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3Jn
L3JlcG9ydC5jZ2kKQ09OTkVDVElWSVRZX0NIRUNLX1VSSVM9ImdpdDovL2dpdC55b2N0b3Byb2pl
Y3Qub3JnL3lvY3RvLWZpcmV3YWxsLXRlc3Q7cHJvdG9jb2w9Z2l0O3Jldj1IRUFEIGh0dHBzOi8v
ZXVsYS1kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9pbmRleC5waHAgaHR0cDovL2J1Z3ppbGxh
LnlvY3RvcHJvamVjdC5vcmcvcmVwb3J0LmNnaSIKIyBGRVRDSENNRF9oZz0vdXNyL2Jpbi9lbnYg
aGcKRkVUQ0hDTURfaGc9Ii91c3IvYmluL2VudiBoZyIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJt
djViPSR7VFVORV9GRUFUVVJFU190dW5lLWFybXY1fSBiaWdlbmRpYW4KVFVORV9GRUFUVVJFU190
dW5lLWFybXY1Yj0iYXJtdjUgYmlnZW5kaWFuIgojIFRVTkVWQUxJRD1Ob25lCiMgRklMRVM9CiMg
QUJJRVhURU5TSU9OPWVhYmkKQUJJRVhURU5TSU9OPSJlYWJpIgojIFRVTkVBQklfV0hJVEVMSVNU
PU5vbmUKIyBJUEtfRkVFRF9VUklTPU5vbmUKIyBCVUlMRF9DWFg9JHtDQ0FDSEV9JHtCVUlMRF9Q
UkVGSVh9ZysrICR7QlVJTERfQ0NfQVJDSH0KZXhwb3J0IEJVSUxEX0NYWD0iZysrIgojIEZVTExf
T1BUSU1JWkFUSU9OPS1PMiAtcGlwZSAke0RFQlVHX0ZMQUdTfQpGVUxMX09QVElNSVpBVElPTj0i
LU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyIKIyBzeXNjb25mZGly
PSR7YmFzZV9wcmVmaXh9L2V0YwpleHBvcnQgc3lzY29uZmRpcj0iL2V0YyIKIyBUQVJHRVRfQVNf
QVJDSD0ke1RVTkVfQVNBUkdTfQojIEFTTkVFREVEX3BuLWNvbnNvbGUtdG9vbHM9CiMgU09VUkNF
X01JUlJPUl9VUkw9Tm9uZQojIFBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbj0yLjcuMwpQUkVGRVJS
RURfVkVSU0lPTl9weXRob249IjIuNy4zIgojIEZJTEVTXyR7UE59PSR7YmluZGlyfS8qICR7c2Jp
bmRpcn0vKiAke2xpYmV4ZWNkaXJ9LyogJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtzeXNjb25m
ZGlyfSAke3NoYXJlZHN0YXRlZGlyfSAke2xvY2Fsc3RhdGVkaXJ9ICR7YmFzZV9iaW5kaXJ9Lyog
JHtiYXNlX3NiaW5kaXJ9LyogJHtiYXNlX2xpYmRpcn0vKiR7U09MSUJTfSAke2RhdGFkaXJ9LyR7
QlBOfSAke2xpYmRpcn0vJHtCUE59LyogJHtkYXRhZGlyfS9waXhtYXBzICR7ZGF0YWRpcn0vYXBw
bGljYXRpb25zICR7ZGF0YWRpcn0vaWRsICR7ZGF0YWRpcn0vb21mICR7ZGF0YWRpcn0vc291bmRz
ICR7bGliZGlyfS9ib25vYm8vc2VydmVycwpGSUxFU19iYmxheWVycz0iL3Vzci9iaW4vKiAvdXNy
L3NiaW4vKiAvdXNyL2xpYmV4ZWMvKiAvdXNyL2xpYi9saWIqLnNvLiogL2V0YyAvY29tIC92YXIg
L2Jpbi8qIC9zYmluLyogL2xpYi8qLnNvLiogL3Vzci9zaGFyZS9iYmxheWVycyAvdXNyL2xpYi9i
YmxheWVycy8qIC91c3Ivc2hhcmUvcGl4bWFwcyAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucyAvdXNy
L3NoYXJlL2lkbCAvdXNyL3NoYXJlL29tZiAvdXNyL3NoYXJlL3NvdW5kcyAvdXNyL2xpYi9ib25v
Ym8vc2VydmVycyIKIyBNS1RFTVBDTUQ9bWt0ZW1wIC1xICR7VE1QQkFTRX0KTUtURU1QQ01EPSJt
a3RlbXAgLXEgJHtUTVBCQVNFfSIKIyBEQVRFPTIwMTIwODIyCkRBVEU9IjIwMTIwODIyIgojIEFQ
QUNIRV9NSVJST1I9aHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3QKQVBBQ0hFX01JUlJPUj0iaHR0
cDovL3d3dy5hcGFjaGUub3JnL2Rpc3QiCiMgZG9fcm9vdGZzPU5vbmUKIyBMRD0ke0hPU1RfUFJF
RklYfWxkJHtUT09MQ0hBSU5fT1BUSU9OU30gJHtIT1NUX0xEX0FSQ0h9CmV4cG9ydCBMRD0iYXJt
LXBva3ktbGludXgtZ251ZWFiaS1sZCAtLXN5c3Jvb3Q9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtIgojIEhPU1RfVkVORE9SPSR7VEFSR0VUX1ZF
TkRPUn0KSE9TVF9WRU5ET1I9Ii1wb2t5IgojIFBBVENIUkVTT0xWRT1ub29wClBBVENIUkVTT0xW
RT0ibm9vcCIKIyBTU1RBVEVfU0NBTl9GSUxFUz0qLmxhICotY29uZmlnICpfY29uZmlnClNTVEFU
RV9TQ0FOX0ZJTEVTPSIqLmxhICotY29uZmlnICpfY29uZmlnIgojIExHUEx2Ml9XSElURUxJU1Rf
R1BMdjM9bGliYXNzdWFuIGdudXRscyBsaWJ0YXNuMSBsaWJpZG4gbGliZ2NjIGdjYy1ydW50aW1l
CkxHUEx2Ml9XSElURUxJU1RfR1BMdjM9ImxpYmFzc3VhbiBnbnV0bHMgbGlidGFzbjEgbGliaWRu
IGxpYmdjYyBnY2MtcnVudGltZSIKIyBzeXN0ZW1kX3VuaXRkaXI9JHtiYXNlX2xpYmRpcn0vc3lz
dGVtZApleHBvcnQgc3lzdGVtZF91bml0ZGlyPSIvbGliL3N5c3RlbWQiCiMgUFJFRkVSUkVEX1BS
T1ZJREVSX2dkay1waXhidWY9Z2RrLXBpeGJ1ZgpQUkVGRVJSRURfUFJPVklERVJfZ2RrLXBpeGJ1
Zj0iZ2RrLXBpeGJ1ZiIKIyBTU1RBVEVfTUFORklMRUJBU0U9JHtTU1RBVEVfTUFOSUZFU1RTfS9t
YW5pZmVzdC0ke1NTVEFURV9NQU5NQUNIfS0KU1NUQVRFX01BTkZJTEVCQVNFPSIvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zc3RhdGUtY29udHJvbC9tYW5pZmVzdC1hcm12NXRl
LSIKIyBNQUNISU5FX1RBU0tfUFJPVklERVI9JHtERUZBVUxUX1RBU0tfUFJPVklERVJ9Ck1BQ0hJ
TkVfVEFTS19QUk9WSURFUj0idGFzay1iYXNlIgojIEVYVFJBX09FTUFLRT0tZSBNQUtFRkxBR1M9
CkVYVFJBX09FTUFLRT0iLWUgTUFLRUZMQUdTPSIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVh
bC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWw9Z2NjLWNyb3NzLWluaXRpYWwKUFJFRkVSUkVE
X1BST1ZJREVSX3ZpcnR1YWwvYXJtLXBva3ktbGludXgtZ251ZWFiaS1nY2MtaW5pdGlhbD0iZ2Nj
LWNyb3NzLWluaXRpYWwiCiMgRElTVFJPX0ZFQVRVUkVTX0xJQkNfdmlydGNsYXNzLW5hdGl2ZXNk
az0ke0RJU1RST19GRUFUVVJFU19MSUJDX0RFRkFVTFR9CkRJU1RST19GRUFUVVJFU19MSUJDX3Zp
cnRjbGFzcy1uYXRpdmVzZGs9ImlwdjQgaXB2NiBsaWJjLWJhY2t0cmFjZSBsaWJjLWJpZy1tYWNy
b3MgbGliYy1ic2QgbGliYy1jeHgtdGVzdHMgbGliYy1jYXRnZXRzIGxpYmMtY2hhcnNldHMgbGli
Yy1jcnlwdCAJCQkJCWxpYmMtY3J5cHQtdWZjIGxpYmMtZGItYWxpYXNlcyBsaWJjLWVudnogbGli
Yy1mY3Z0IGxpYmMtZm10bXNnIGxpYmMtZnN0YWIgbGliYy1mdHJhdmVyc2UgCQkJCQlsaWJjLWdl
dGxvZ2luIGxpYmMtaWRuIGxpYmMtaW5ldC1hbmwgbGliYy1saWJtIGxpYmMtbGlibS1iaWcgbGli
Yy1sb2NhbGVzIGxpYmMtbG9jYWxlLWNvZGUgCQkJCQlsaWJjLW1lbXVzYWdlIGxpYmMtbmlzIGxp
YmMtbnNzd2l0Y2ggbGliYy1yY21kIGxpYmMtcnRsZC1kZWJ1ZyBsaWJjLXNwYXduIGxpYmMtc3Ry
ZWFtcyBsaWJjLXN1bnJwYyAJCQkJCWxpYmMtdXRtcCBsaWJjLXV0bXB4IGxpYmMtd29yZGV4cCBs
aWJjLXBvc2l4LWNsYW5nLXdjaGFyIGxpYmMtcG9zaXgtcmVnZXhwIGxpYmMtcG9zaXgtcmVnZXhw
LWdsaWJjIAkJCQkJbGliYy1wb3NpeC13Y2hhci1pbyIKIyBMREZMQUdTPSR7VEFSR0VUX0xERkxB
R1N9CmV4cG9ydCBMREZMQUdTPSItV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFz
LW5lZWRlZCIKIyBIT1NUX05PTlNZU1Y9Tm9uZQojIGJpbmRpcj0ke2V4ZWNfcHJlZml4fS9iaW4K
ZXhwb3J0IGJpbmRpcj0iL3Vzci9iaW4iCiMgRlJFRUJTRF9NSVJST1I9ZnRwOi8vZnRwLmZyZWVi
c2Qub3JnL3B1Yi9GcmVlQlNELwpGUkVFQlNEX01JUlJPUj0iZnRwOi8vZnRwLmZyZWVic2Qub3Jn
L3B1Yi9GcmVlQlNELyIKIyBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zcz0ke0JJTlVW
RVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zcz0iMi4yMiIKIyBDT0xPUlRF
Uk09Z25vbWUtdGVybWluYWwKQ09MT1JURVJNPSJnbm9tZS10ZXJtaW5hbCIKIyBBUk1QS0dTRlhf
RlBVPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInZmcCIsICItdmZwIiwg
IiIgLGQpfQojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51
dGlscz1iaW51dGlscy1jcm9zcwpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9hcm0tcG9reS1s
aW51eC1nbnVlYWJpLWJpbnV0aWxzPSJiaW51dGlscy1jcm9zcyIKIyBQQUNLQUdFX0VYVFJBX0FS
Q0hTX3R1bmUtYXJtdjV0ZWItdmZwPSR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1dGIt
dmZwfSBhcm12NWViIGFybXY1dGViIGFybXY1ZWItdmZwIGFybXY1dGViLXZmcApQQUNLQUdFX0VY
VFJBX0FSQ0hTX3R1bmUtYXJtdjV0ZWItdmZwPSJhcm0gYXJtdjQgYXJtdjR0IGFybXY1IGFybXY1
dCBhcm12NWItdmZwIGFybXY1dGItdmZwIGFybXY1ZWIgYXJtdjV0ZWIgYXJtdjVlYi12ZnAgYXJt
djV0ZWItdmZwIgojIFNVTU1BUllfJHtQTn0tZGJnPSR7U1VNTUFSWX0gLSBEZWJ1Z2dpbmcgZmls
ZXMKU1VNTUFSWV9iYmxheWVycy1kYmc9ImJibGF5ZXJzIHZlcnNpb24gMS4wLXIwIC0gRGVidWdn
aW5nIGZpbGVzIgojIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NGI9YXJtZWIgYXJtdjRi
ClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NGI9ImFybWViIGFybXY0YiIKIyBMQVlFUl9D
T05GX1ZFUlNJT049NQpMQVlFUl9DT05GX1ZFUlNJT049IjUiCiMgQlVJTERTVEFUU19CQVNFPSR7
VE1QRElSfS9idWlsZHN0YXRzLwpCVUlMRFNUQVRTX0JBU0U9Ii9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvdG1wL2J1aWxkc3RhdHMvIgojIFNZU1ZJTklUX0VOQUJMRURfR0VUVFlTPU5v
bmUKIyBESVNUUk9fRVhUUkFfUlJFQ09NTUVORFM9ICAke1BPS1lfREVGQVVMVF9FWFRSQV9SUkVD
T01NRU5EU30KRElTVFJPX0VYVFJBX1JSRUNPTU1FTkRTPSJrZXJuZWwtbW9kdWxlLWFmLXBhY2tl
dCIKIyBUQVJHRVRfQ1hYRkxBR1M9JHtUQVJHRVRfQ0ZMQUdTfSAtZnBlcm1pc3NpdmUKZXhwb3J0
IFRBUkdFVF9DWFhGTEFHUz0iLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10
eXBlcyAtZnBlcm1pc3NpdmUiCiMgU09MSUJTREVWPS5zbwpTT0xJQlNERVY9Ii5zbyIKIyBCVUlM
RF9BUkNIPSR7QG9zLnVuYW1lKClbNF19CkJVSUxEX0FSQ0g9Ing4Nl82NCIKIyBQS0dEPSR7V09S
S0RJUn0vcGFja2FnZQpQS0dEPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93
b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9wYWNrYWdlIgoj
IFBLR0U9JHtAWycnLCcke1BFXHg3ZCddW2QuZ2V0VmFyKCdQRScsMSkgPiAwXX0KIyBIT1NUX1NZ
Uz0ke0hPU1RfQVJDSH0ke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9CkhPU1RfU1lTPSJhcm0tcG9r
eS1saW51eC1nbnVlYWJpIgojIE1BS0U9bWFrZQpleHBvcnQgTUFLRT0ibWFrZSIKIyBQS0dWPSR7
UFZ9ClBLR1Y9IjEuMCIKIyBpbmNsdWRlZGlyPSR7ZXhlY19wcmVmaXh9L2luY2x1ZGUKZXhwb3J0
IGluY2x1ZGVkaXI9Ii91c3IvaW5jbHVkZSIKIyBQS0dSPSR7UFJ9JHtFWFRFTkRQUkFVVE99ClBL
R1I9InIwIgojIFRBUkdFVF9DUFBGTEFHUz0KIyBSUkVDT01NRU5EU18ke1BOfS1kYmc9JHtQTn0g
KD0gJHtFWFRFTkRQS0dWfSkKUlJFQ09NTUVORFNfYmJsYXllcnMtZGJnPSJiYmxheWVycyAoPSAx
LjAtcjApIgojIFBSRUZFUlJFRF9WRVJTSU9OX2VnbGliYy1pbml0aWFsPSR7RUdMSUJDVkVSU0lP
Tn0KUFJFRkVSUkVEX1ZFUlNJT05fZWdsaWJjLWluaXRpYWw9IjIuMTYiCiMgQkJGSUxFX1BBVFRF
Uk5feW9jdG89Xi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YS15b2N0by8KQkJGSUxFX1BB
VFRFUk5feW9jdG89Il4vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEteW9jdG8vIgojIFBD
TUNJQV9NQU5BR0VSPXBjbWNpYXV0aWxzClBDTUNJQV9NQU5BR0VSPSJwY21jaWF1dGlscyIKIyBQ
UkVGRVJSRURfUFJPVklERVJfb3BrZz1vcGtnClBSRUZFUlJFRF9QUk9WSURFUl9vcGtnPSJvcGtn
IgojIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NHRiPSR7UEFDS0FHRV9FWFRSQV9BUkNI
U190dW5lLWFybXY0fSBhcm12NHRiClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NHRiPSJh
cm0gYXJtdjQgYXJtdjR0YiIKIyBUVU5FX0FTQVJHUz0KIyBGSUxFPS9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy5jb25mCkZJTEU9Ii9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvY29uZi9iYmxheWVycy5jb25mIgojIEVYVEVORFBLR0VWRVI9JHtAWycn
LCcke1BLR0VceDdkOiddW2QuZ2V0VmFyKCdQS0dFJywxKS5zdHJpcCgpICE9ICcnXX0KIyBsaWJk
aXJfbmF0aXZlPSR7cHJlZml4X25hdGl2ZX0vbGliCmxpYmRpcl9uYXRpdmU9Ii91c3IvbGliIgoj
IEFTTkVFREVEX3BuLW9wZW5vYmV4PQojIFNTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRD0KIyBQQVRD
SF9HRVQ9MApleHBvcnQgUEFUQ0hfR0VUPSIwIgojIFBSRUZFUlJFRF9QUk9WSURFUl9kYnVzLWds
aWI9ZGJ1cy1nbGliClBSRUZFUlJFRF9QUk9WSURFUl9kYnVzLWdsaWI9ImRidXMtZ2xpYiIKIyBG
SUxFU18ke1BOfS1kb2M9JHtkb2NkaXJ9ICR7bWFuZGlyfSAke2luZm9kaXJ9ICR7ZGF0YWRpcn0v
Z3RrLWRvYyAke2RhdGFkaXJ9L2dub21lL2hlbHAKRklMRVNfYmJsYXllcnMtZG9jPSIvdXNyL3No
YXJlL2RvYyAvdXNyL3NoYXJlL21hbiAvdXNyL3NoYXJlL2luZm8gL3Vzci9zaGFyZS9ndGstZG9j
IC91c3Ivc2hhcmUvZ25vbWUvaGVscCIKIyBleGVjX3ByZWZpeD0vdXNyCmV4cG9ydCBleGVjX3By
ZWZpeD0iL3VzciIKIyBXT1JLRElSPSR7VE1QRElSfS93b3JrLyR7TVVMVElNQUNIX1RBUkdFVF9T
WVN9LyR7UEZ9CldPUktESVI9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dv
cmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwIgojIEFSTVBLR1NG
WF9FQUJJPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgWyAiY2FsbGNvbnZl
bnRpb24taGFyZCIsICJ2ZnAiIF0sICJoZiIsICIiLCBkKX0KIyBiaW5kaXJfY3Jvc3NzY3JpcHRz
PSR7YmluZGlyfS9jcm9zc3NjcmlwdHMKYmluZGlyX2Nyb3Nzc2NyaXB0cz0iL3Vzci9iaW4vY3Jv
c3NzY3JpcHRzIgojIERCVVNfU0VTU0lPTl9CVVNfQUREUkVTUz11bml4OmFic3RyYWN0PS90bXAv
ZGJ1cy1xeUpQNmQ5SEVrLGd1aWQ9NzY3MGExNGZmNjNiMDlkNGFmYjIyYmVhMDAwMDAwMTQKREJV
U19TRVNTSU9OX0JVU19BRERSRVNTPSJ1bml4OmFic3RyYWN0PS90bXAvZGJ1cy1xeUpQNmQ5SEVr
LGd1aWQ9NzY3MGExNGZmNjNiMDlkNGFmYjIyYmVhMDAwMDAwMTQiCiMgUFJJT1JJVFk9b3B0aW9u
YWwKUFJJT1JJVFk9Im9wdGlvbmFsIgojIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzPSR7QklO
VVZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzPSIyLjIyIgojIFBBUkFMTEVMX01B
S0VJTlNUPSR7UEFSQUxMRUxfTUFLRX0KUEFSQUxMRUxfTUFLRUlOU1Q9Ii1qIDgiCiMgU0VQUFVL
VV9RVUVSWT1Ob25lCiMgUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1PSR7UEFDS0FHRV9F
WFRSQV9BUkNIU190dW5lLWFybXY0fSBhcm12NQpQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJt
djU9ImFybSBhcm12NCBhcm12NSIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjQ9YXJt
IGFybXY0ClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12ND0iYXJtIGFybXY0IgojIFVTUkJJ
TlBBVEhfY2xhc3MtbmF0aXZlPS91c3IvYmluClVTUkJJTlBBVEhfY2xhc3MtbmF0aXZlPSIvdXNy
L2JpbiIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0Yj0ke1BBQ0tBR0VfRVhUUkFf
QVJDSFNfdHVuZS1hcm12NHR9IGFybXY1YiBhcm12NXRiClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVu
ZS1hcm12NXRiPSJhcm0gYXJtdjQgYXJtdjR0IGFybXY1YiBhcm12NXRiIgojIFNES19DQ19BUkNI
PSR7QlVJTERfQ0NfQVJDSH0KIyBNQUlOVEFJTkVSPVBva3kgPHBva3lAeW9jdG9wcm9qZWN0Lm9y
Zz4KTUFJTlRBSU5FUj0iUG9reSA8cG9reUB5b2N0b3Byb2plY3Qub3JnPiIKIyBTREtQQVRIPS9v
cHQvJHtESVNUUk99LyR7U0RLX1ZFUlNJT059ClNES1BBVEg9Ii9vcHQvcG9reS8xLjIrc25hcHNo
b3QiCiMgUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1aGZiLXZmcD1hcm12NWhmYi12ZnAK
UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1aGZiLXZmcD0iYXJtdjVoZmItdmZwIgojIEJV
SUxEX0NDPSR7Q0NBQ0hFfSR7QlVJTERfUFJFRklYfWdjYyAke0JVSUxEX0NDX0FSQ0h9CmV4cG9y
dCBCVUlMRF9DQz0iZ2NjIgojIExJQkNPVkVSUklERT06bGliYy1nbGliYwpMSUJDT1ZFUlJJREU9
IjpsaWJjLWdsaWJjIgojIEJVSUxEX0xERkxBR1M9LUwke1NUQUdJTkdfTElCRElSX05BVElWRX0g
LUwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5H
X0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFU
SVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RB
R0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtTzEKZXhwb3J0IEJVSUxEX0xERkxBR1M9Ii1M
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4
L3Vzci9saWIgLUwvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94
ODZfNjQtbGludXgvbGliIC1XbCwtcnBhdGgtbGluaywvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYiAtV2wsLXJwYXRoLWxpbmss
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4
L2xpYiAtV2wsLXJwYXRoLC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jv
b3RzL3g4Nl82NC1saW51eC91c3IvbGliIC1XbCwtcnBhdGgsL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L2xpYiAtV2wsLU8xIgojIFNTVEFU
RV9QS0dOQU1FPSR7U1NUQVRFX0VYVFJBUEFUSH0ke0BnZW5lcmF0ZV9zc3RhdGVmbihkLmdldFZh
cignU1NUQVRFX1BLR1NQRUMnLCBUcnVlKSwgZC5nZXRWYXIoJ0JCX1RBU0tIQVNIJywgVHJ1ZSks
IGQpfQpTU1RBVEVfUEtHTkFNRT0iSU4vc3N0YXRlLWJibGF5ZXJzLWFybXY1dGUtcG9reS1saW51
eC1nbnVlYWJpLTEuMC1yMC1hcm12NXRlLTItSU5WQUxJRCIKIyBTVEFHSU5HX0xJQkRJUj0ke1NU
QUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9ClNUQUdJTkdfTElCRElSPSIvaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vdXNyL2xpYiIKIyBSREVQRU5E
U18ke1BOfS1kZXY9JHtQTn0gKD0gJHtFWFRFTkRQS0dWfSkKUkRFUEVORFNfYmJsYXllcnMtZGV2
PSJiYmxheWVycyAoPSAxLjAtcjApIgojIFRBUkdFVF9BUkNIPSR7VFVORV9BUkNIfQp1bnNldCBU
QVJHRVRfQVJDSAojIEZFVENIQ01EX2N2cz0vdXNyL2Jpbi9lbnYgY3ZzCkZFVENIQ01EX2N2cz0i
L3Vzci9iaW4vZW52IGN2cyIKIyBFWFRSQV9JTUFHRV9GRUFUVVJFUz1kZWJ1Zy10d2Vha3MKRVhU
UkFfSU1BR0VfRkVBVFVSRVM9ImRlYnVnLXR3ZWFrcyIKIyBERVNLVE9QX1NFU1NJT049dWJ1bnR1
CkRFU0tUT1BfU0VTU0lPTj0idWJ1bnR1IgojIFBLR1dSSVRFRElSU1JQTT0ke0RFUExPWV9ESVJ9
L3NvdXJjZXMvZGVwbG95LXNycG0KUEtHV1JJVEVESVJTUlBNPSIvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvc291cmNlcy9kZXBsb3ktc3JwbSIKIyBCQklOQ0xVREVM
T0dTX0xJTkVTPU5vbmUKIyBMSU5VWExJQkNWRVJTSU9OPTMuNC4zCkxJTlVYTElCQ1ZFUlNJT049
IjMuNC4zIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mt
aW50ZXJtZWRpYXRlPWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUKUFJFRkVSUkVEX1BST1ZJREVSX3Zp
cnR1YWwvYXJtLXBva3ktbGludXgtZ251ZWFiaS1nY2MtaW50ZXJtZWRpYXRlPSJnY2MtY3Jvc3Mt
aW50ZXJtZWRpYXRlIgojIExJQkNFWFRFTlNJT049JHtAWycnLCAnLWdudSddWyhkLmdldFZhcign
QUJJRVhURU5TSU9OJywgVHJ1ZSkgb3IgJycpICE9ICcnXX0KTElCQ0VYVEVOU0lPTj0iLWdudSIK
IyBQUkVGRVJSRURfUFJPVklERVJfbGliZ2NjPWxpYmdjYwpQUkVGRVJSRURfUFJPVklERVJfbGli
Z2NjPSJsaWJnY2MiCiMgR0VOVE9PX01JUlJPUj1odHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcv
ZGlzdGZpbGVzCkdFTlRPT19NSVJST1I9Imh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0
ZmlsZXMiCiMgQ09fRElSPSR7RExfRElSfQpDT19ESVI9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvZG93bmxvYWRzIgojIE1VTFRJTUFDSF9UQVJHRVRfU1lTPSR7UEFDS0FHRV9BUkNI
fSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9Ck1VTFRJTUFDSF9UQVJHRVRfU1lTPSJhcm12
NXRlLXBva3ktbGludXgtZ251ZWFiaSIKIyBQUkVGRVJSRURfVkVSU0lPTl9saWJlcmF0aW9uLWZv
bnRzPTEuMDQKUFJFRkVSUkVEX1ZFUlNJT05fbGliZXJhdGlvbi1mb250cz0iMS4wNCIKIyBERVBF
TkRTPSR7QkFTRURFUEVORFN9IApERVBFTkRTPSJ2aXJ0dWFsL2FybS1wb2t5LWxpbnV4LWdudWVh
YmktZ2NjIHZpcnR1YWwvYXJtLXBva3ktbGludXgtZ251ZWFiaS1jb21waWxlcmxpYnMgdmlydHVh
bC9saWJjIgojIENDQUNIRV9ESVI9JHtAb3MuZ2V0ZW52KCdIT01FJyl9CmV4cG9ydCBDQ0FDSEVf
RElSPSIvaG9tZS9sc2VyYmFuIgojIFFVSUxUUkNGSUxFPSR7U1RBR0lOR19FVENESVJfTkFUSVZF
fS9xdWlsdHJjClFVSUxUUkNGSUxFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3Rt
cC9zeXNyb290cy94ODZfNjQtbGludXgvZXRjL3F1aWx0cmMiCiMgQkJMQVlFUlM9IC9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvbWV0YSAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEteW9j
dG8gL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9tZXRhLW15cWVtdWFybSAKQkJMQVlF
UlM9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YSAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL21ldGEteW9jdG8gL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9tZXRhLW15cWVt
dWFybSIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjVlPSR7UEFDS0FHRV9FWFRSQV9B
UkNIU190dW5lLWFybXY1fSBhcm12NWUKUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1ZT0i
YXJtIGFybXY0IGFybXY1IGFybXY1ZSIKIyBTRUNUSU9OXyR7UE59LXN0YXRpY2Rldj1kZXZlbApT
RUNUSU9OX2JibGF5ZXJzLXN0YXRpY2Rldj0iZGV2ZWwiCiMgQk9PVFNUUkFQX0VYVFJBX1JERVBF
TkRTPQojIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LWxpYmMtaGVhZGVycy1uYXRpdmVzZGs9JHtM
SU5VWExJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9saW51eC1saWJjLWhlYWRlcnMtbmF0
aXZlc2RrPSIzLjQuMyIKIyBCVUlMRF9MRD0ke0JVSUxEX1BSRUZJWH1sZCAke0JVSUxEX0xEX0FS
Q0h9CmV4cG9ydCBCVUlMRF9MRD0ibGQiCiMgVFVORV9MREFSR1M9CiMgYmFzZWxpYj0ke0JBU0VM
SUJ9CmJhc2VsaWI9ImxpYiIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0ZWI9JHtQ
QUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0Yn0gYXJtdjVlYiBhcm12NXRlYgpQQUNLQUdF
X0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0ZWI9ImFybSBhcm12NCBhcm12NHQgYXJtdjViIGFybXY1
dGIgYXJtdjVlYiBhcm12NXRlYiIKIyBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfRElSX0hPU1R9
JHtpbmNsdWRlZGlyfQpTVEFHSU5HX0lOQ0RJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtL3Vzci9pbmNsdWRlIgojIFBSRUZFUlJFRF9QUk9W
SURFUl92aXJ0dWFsLyR7U0RLX1BSRUZJWH1saWJjLWZvci1nY2MtbmF0aXZlc2RrPSR7VENMSUJD
fS1uYXRpdmVzZGsKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveDg2XzY0LXBva3lzZGstbGlu
dXgtbGliYy1mb3ItZ2NjLW5hdGl2ZXNkaz0iZWdsaWJjLW5hdGl2ZXNkayIKIyBQQUNLQUdFX0VY
VFJBX0FSQ0hTX3R1bmUtYXJtdjR0PSR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY0fSBh
cm12NHQKUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY0dD0iYXJtIGFybXY0IGFybXY0dCIK
IyBCQl9FTlZfRVhUUkFXSElURT1QU0VVRE9fQlVJTEQgUFNFVURPX0RJU0FCTEVEIE1BQ0hJTkUg
RElTVFJPIFRDTU9ERSBUQ0xJQkMgaHR0cF9wcm94eSBmdHBfcHJveHkgaHR0cHNfcHJveHkgYWxs
X3Byb3h5IEFMTF9QUk9YWSBub19wcm94eSBTU0hfQUdFTlRfUElEIFNTSF9BVVRIX1NPQ0sgQkJf
U1JDUkVWX1BPTElDWSBTREtNQUNISU5FIEJCX05VTUJFUl9USFJFQURTIFBBUkFMTEVMX01BS0Ug
R0lUX1BST1hZX0NPTU1BTkQgR0lUX1BST1hZX0lHTk9SRSBTT0NLUzVfUEFTU1dEIFNPQ0tTNV9V
U0VSIFNDUkVFTkRJUgpCQl9FTlZfRVhUUkFXSElURT0iUFNFVURPX0JVSUxEIFBTRVVET19ESVNB
QkxFRCBNQUNISU5FIERJU1RSTyBUQ01PREUgVENMSUJDIGh0dHBfcHJveHkgZnRwX3Byb3h5IGh0
dHBzX3Byb3h5IGFsbF9wcm94eSBBTExfUFJPWFkgbm9fcHJveHkgU1NIX0FHRU5UX1BJRCBTU0hf
QVVUSF9TT0NLIEJCX1NSQ1JFVl9QT0xJQ1kgU0RLTUFDSElORSBCQl9OVU1CRVJfVEhSRUFEUyBQ
QVJBTExFTF9NQUtFIEdJVF9QUk9YWV9DT01NQU5EIEdJVF9QUk9YWV9JR05PUkUgU09DS1M1X1BB
U1NXRCBTT0NLUzVfVVNFUiBTQ1JFRU5ESVIiCiMgUUFERVBFTkRTX3ZpcnRjbGFzcy1uYXRpdmU9
CiMgUFJFRkVSUkVEX1BST1ZJREVSX29wa2ctbmF0aXZlPW9wa2ctbmF0aXZlClBSRUZFUlJFRF9Q
Uk9WSURFUl9vcGtnLW5hdGl2ZT0ib3BrZy1uYXRpdmUiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3Zp
cnR1YWwvJHtUQVJHRVRfUFJFRklYfWcrKz1nY2MtY3Jvc3MKUFJFRkVSUkVEX1BST1ZJREVSX3Zp
cnR1YWwvYXJtLXBva3ktbGludXgtZ251ZWFiaS1nKys9ImdjYy1jcm9zcyIKIyBTVEFHSU5HX0JB
U0VMSUJESVI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7YmFzZV9saWJkaXJ9ClNUQUdJTkdfQkFTRUxJ
QkRJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11
YXJtL2xpYiIKIyBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3NzZGstaW50ZXJtZWRpYXRlPSR7
U0RLR0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrLWludGVybWVkaWF0
ZT0iNC43JSIKIyBMT0dfRElSPSR7VE1QRElSfS9sb2cKTE9HX0RJUj0iL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvbG9nIgojIFhPUkdfTUlSUk9SPWh0dHA6Ly94b3JnLmZyZWVk
ZXNrdG9wLm9yZy9yZWxlYXNlcwpYT1JHX01JUlJPUj0iaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Au
b3JnL3JlbGVhc2VzIgojIFBBVENIREVQRU5ERU5DWT0ke1BBVENIVE9PTH0tbmF0aXZlOmRvX3Bv
cHVsYXRlX3N5c3Jvb3QKUEFUQ0hERVBFTkRFTkNZPSJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVf
c3lzcm9vdCIKIyBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zcy1jYW5hZGlhbi0ke1RS
QU5TTEFURURfVEFSR0VUX0FSQ0h9PSR7QklOVVZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2Jp
bnV0aWxzLWNyb3NzLWNhbmFkaWFuLWFybT0iMi4yMiIKIyBCVUlMRFNES19DUFBGTEFHUz0taXN5
c3RlbSR7U1RBR0lOR19JTkNESVJ9CkJVSUxEU0RLX0NQUEZMQUdTPSItaXN5c3RlbS9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL215cWVtdWFybS91c3IvaW5jbHVk
ZSIKIyBFWFRSQU9QS0dDT05GSUc9cG9reS1mZWVkLWNvbmZpZy1vcGtnCkVYVFJBT1BLR0NPTkZJ
Rz0icG9reS1mZWVkLWNvbmZpZy1vcGtnIgojIE9FSU5DTFVERUxPR1M9eWVzCk9FSU5DTFVERUxP
R1M9InllcyIKIyBBVkFJTFRVTkVTPSBhcm12NCBhcm12NHQgYXJtdjRiIGFybXY0dGIgYXJtdjUg
YXJtdjV0IGFybXY1LXZmcCBhcm12NXQtdmZwIGFybXY1aGYtdmZwIGFybXY1dGhmLXZmcCBhcm12
NWIgYXJtdjV0YiBhcm12NWItdmZwIGFybXY1dGItdmZwIGFybXY1aGZiLXZmcCBhcm12NXRoZmIt
dmZwIGFybXY1ZSBhcm12NXRlIGFybXY1ZS12ZnAgYXJtdjV0ZS12ZnAgYXJtdjVlaGYtdmZwIGFy
bXY1dGVoZi12ZnAgYXJtdjVlYiBhcm12NXRlYiBhcm12NWViLXZmcCBhcm12NXRlYi12ZnAgYXJt
djVlaGZiLXZmcCBhcm12NXRlaGZiLXZmcCBhcm05MjZlanMKQVZBSUxUVU5FUz0iYXJtdjQgYXJt
djR0IGFybXY0YiBhcm12NHRiIGFybXY1IGFybXY1dCBhcm12NS12ZnAgYXJtdjV0LXZmcCBhcm12
NWhmLXZmcCBhcm12NXRoZi12ZnAgYXJtdjViIGFybXY1dGIgYXJtdjViLXZmcCBhcm12NXRiLXZm
cCBhcm12NWhmYi12ZnAgYXJtdjV0aGZiLXZmcCBhcm12NWUgYXJtdjV0ZSBhcm12NWUtdmZwIGFy
bXY1dGUtdmZwIGFybXY1ZWhmLXZmcCBhcm12NXRlaGYtdmZwIGFybXY1ZWIgYXJtdjV0ZWIgYXJt
djVlYi12ZnAgYXJtdjV0ZWItdmZwIGFybXY1ZWhmYi12ZnAgYXJtdjV0ZWhmYi12ZnAgYXJtOTI2
ZWpzIgojIEJCX1NJR05BVFVSRV9FWENMVURFX0ZMQUdTPWRvYyBkZWZhdWx0dmFsIF9hcHBlbmQg
X3ByZXBlbmQgZGVwcyBkZXBlbmRzIGxvY2tmaWxlcyB0eXBlIHZhcmRlcHNleGNsdWRlIHZhcmRl
cHMgdmFyZGVwdmFsdWUgZmlsZS1jaGVja3N1bXMgcHl0aG9uIGZ1bmMgdGFzayBleHBvcnQgdW5l
eHBvcnQgbm9leGVjIG5vc3RhbXAgZGlycyBjbGVhbmRpcnMgc3N0YXRlLWxvY2tmaWxlLXNoYXJl
ZCBwcmVmdW5jcyBwb3N0ZnVuY3MgZXhwb3J0X2Z1bmMgZGVwdGFzayByZGVwdGFzayByZWNyZGVw
dGFzayBub2RlcHJyZWNzIHN0YW1wLWJhc2Ugc3RhbXAtZXh0cmEtaW5mbwpCQl9TSUdOQVRVUkVf
RVhDTFVERV9GTEFHUz0iZG9jIGRlZmF1bHR2YWwgX2FwcGVuZCBfcHJlcGVuZCBkZXBzIGRlcGVu
ZHMgbG9ja2ZpbGVzIHR5cGUgdmFyZGVwc2V4Y2x1ZGUgdmFyZGVwcyB2YXJkZXB2YWx1ZSBmaWxl
LWNoZWNrc3VtcyBweXRob24gZnVuYyB0YXNrIGV4cG9ydCB1bmV4cG9ydCBub2V4ZWMgbm9zdGFt
cCBkaXJzIGNsZWFuZGlycyBzc3RhdGUtbG9ja2ZpbGUtc2hhcmVkIHByZWZ1bmNzIHBvc3RmdW5j
cyBleHBvcnRfZnVuYyBkZXB0YXNrIHJkZXB0YXNrIHJlY3JkZXB0YXNrIG5vZGVwcnJlY3Mgc3Rh
bXAtYmFzZSBzdGFtcC1leHRyYS1pbmZvIgojIFRVTkVBQkk9Tm9uZQojIFNFUFBVS1VfQVVUT0JV
SUxEPU5vbmUKIyBFX01JUlJPUj1odHRwOi8vZG93bmxvYWQuZW5saWdodGVubWVudC5vcmcvcmVs
ZWFzZXMKRV9NSVJST1I9Imh0dHA6Ly9kb3dubG9hZC5lbmxpZ2h0ZW5tZW50Lm9yZy9yZWxlYXNl
cyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9nZXR0ZXh0PWdldHRleHQKUFJFRkVSUkVE
X1BST1ZJREVSX3ZpcnR1YWwvZ2V0dGV4dD0iZ2V0dGV4dCIKIyBTREtfQVNfQVJDSD0ke0JVSUxE
X0FTX0FSQ0h9CiMgR1BFX0VYVFJBX1NWTj1zdm46Ly9wcm9qZWN0cy5saW51eHRvZ28ub3JnL3N2
bi9ncGUvdHJ1bmsvZXh0cmE7bW9kdWxlPSR7UE59CkdQRV9FWFRSQV9TVk49InN2bjovL3Byb2pl
Y3RzLmxpbnV4dG9nby5vcmcvc3ZuL2dwZS90cnVuay9leHRyYTttb2R1bGU9YmJsYXllcnMiCiMg
b2xkaW5jbHVkZWRpcj0ke2V4ZWNfcHJlZml4fS9pbmNsdWRlCmV4cG9ydCBvbGRpbmNsdWRlZGly
PSIvdXNyL2luY2x1ZGUiCiMgSU5JVFJBTUZTX0ZTVFlQRVM9Y3Bpby5negpJTklUUkFNRlNfRlNU
WVBFUz0iY3Bpby5neiIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWw9bGludXgt
eW9jdG8KUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsPSJsaW51eC15b2N0byIKIyBU
VU5FQ09ORkxJQ1RTPU5vbmUKIyBDUFVfRkVBVFVSRVM9dmZwCkNQVV9GRUFUVVJFUz0idmZwIgoj
IFBTRVVET19CVUlMRD0wClBTRVVET19CVUlMRD0iMCIKIyBDQ0xEPSR7Q0N9CmV4cG9ydCBDQ0xE
PSJhcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYyAgLW1hcmNoPWFybXY1dGUgIC1tYXJtIC1tdGh1
bWItaW50ZXJ3b3JrICAtbXR1bmU9YXJtOTI2ZWotcyAtLXN5c3Jvb3Q9L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtIgojIFRJTUU9MTQzODA2ClRJ
TUU9IjE0MzgwNiIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtOTI2ZWpzPSR7UEFDS0FH
RV9FWFRSQV9BUkNIU190dW5lLWFybXY1dGV9ClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm05
MjZlanM9ImFybSBhcm12NCBhcm12NHQgYXJtdjUgYXJtdjV0IGFybXY1ZSBhcm12NXRlIgojIGxv
Y2Fsc3RhdGVkaXJfbmF0aXZlc2RrPS92YXIKbG9jYWxzdGF0ZWRpcl9uYXRpdmVzZGs9Ii92YXIi
CiMgUEFDS0FHRV9CRUZPUkVfUE49CiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2NjPSR7R0NDVkVSU0lP
Tn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2NjPSI0LjclIgojIFNFTEVDVEVEX09QVElNSVpBVElPTj0k
e0BkLmdldFZhcihbJ0ZVTExfT1BUSU1JWkFUSU9OJywgJ0RFQlVHX09QVElNSVpBVElPTiddW2Qu
Z2V0VmFyKCdERUJVR19CVUlMRCcsIFRydWUpID09ICcxJ10sIFRydWUpfQpTRUxFQ1RFRF9PUFRJ
TUlaQVRJT049Ii1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMiCiMg
R0lUX0NPTkZJR19QQVRIPSR7U1RBR0lOR19ESVJfTkFUSVZFfS9ldGMKR0lUX0NPTkZJR19QQVRI
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGlu
dXgvZXRjIgojIFNFUFBVS1VfVVNFUj1Ob25lCiMgRkVFRF9ERVBMT1lESVJfQkFTRV9VUkk9Tm9u
ZQojIFBSRVBST0NFU1NfUkVMT0NBVEVfRElSUz0KIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUt
YXJtdjV0ZT0ke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NXR9IGFybXY1ZSBhcm12NXRl
ClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NXRlPSJhcm0gYXJtdjQgYXJtdjR0IGFybXY1
IGFybXY1dCBhcm12NWUgYXJtdjV0ZSIKIyBERUJJQU5fTkFNRVM9MQpERUJJQU5fTkFNRVM9IjEi
CiMgRVhUUkFfSU1BR0VERVBFTkRTPSBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUKRVhU
UkFfSU1BR0VERVBFTkRTPSJxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUiCiMgVFVORV9G
RUFUVVJFU190dW5lLWFybXY1ZWhmLXZmcD0ke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWUtdmZw
fSBjYWxsY29udmVudGlvbi1oYXJkClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWVoZi12ZnA9ImFy
bXY1IHZmcCBkc3AgY2FsbGNvbnZlbnRpb24taGFyZCIKIyBMSU1JVF9CVUlMVF9MT0NBTEVTPVBP
U0lYIGVuX1VTIGVuX0dCCkxJTUlUX0JVSUxUX0xPQ0FMRVM9IlBPU0lYIGVuX1VTIGVuX0dCIgoj
IFBBQ0tBR0VJTkRFWERFUFM9IHJwbS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBjcmVhdGVy
ZXBvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290ClBBQ0tBR0VJTkRFWERFUFM9InJwbS1uYXRp
dmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBjcmVhdGVyZXBvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNy
b290IgojIExDX0FMTD1DCmV4cG9ydCBMQ19BTEw9IkMiCiMgUFJFRkVSUkVEX1ZFUlNJT05fbGlu
dXgteW9jdG9fcWVtdWFybT0zLjQlClBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX3FlbXVh
cm09IjMuNCUiCiMgREVTQ1JJUFRJT05fJHtQTn0tZGJnPSR7REVTQ1JJUFRJT059ICBUaGlzIHBh
Y2thZ2UgY29udGFpbnMgRUxGIHN5bWJvbHMgYW5kIHJlbGF0ZWQgc291cmNlcyBmb3IgZGVidWdn
aW5nIHB1cnBvc2VzLgpERVNDUklQVElPTl9iYmxheWVycy1kYmc9ImJibGF5ZXJzIHZlcnNpb24g
MS4wLXIwICBUaGlzIHBhY2thZ2UgY29udGFpbnMgRUxGIHN5bWJvbHMgYW5kIHJlbGF0ZWQgc291
cmNlcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiIKIyBRQV9MT0c9Tm9uZQojIFBBQ0tBR0VMT0NL
PSR7U1RBR0lOR19ESVJ9L3BhY2thZ2Utb3V0cHV0LmxvY2sKUEFDS0FHRUxPQ0s9Ii9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL3BhY2thZ2Utb3V0cHV0LmxvY2si
CiMgaHR0cHNfcHJveHk9cHJveHktamYuaW50ZWwuY29tOjkxMQpodHRwc19wcm94eT0icHJveHkt
amYuaW50ZWwuY29tOjkxMSIKIyBCVUlMRF9DQ0xEPSR7QlVJTERfUFJFRklYfWdjYyAke0JVSUxE
X0NDX0FSQ0h9CmV4cG9ydCBCVUlMRF9DQ0xEPSJnY2MiCiMgSU1BR0VfTkFNRT0ke0lNQUdFX0JB
U0VOQU1FfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9CklNQUdFX05BTUU9ImJibGF5ZXJzLW15cWVt
dWFybS0yMDEyMDgyMjE0MzgwNiIKIyBTU1RBVEVfUEFUSFNQRUM9JHtTU1RBVEVfRElSfS8ke1NT
VEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyR7U1NUQVRFX1BLR1NQRUN9ClNTVEFURV9QQVRIU1BF
Qz0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9zc3RhdGUtY2FjaGUvKi9zc3RhdGUt
YmJsYXllcnMtYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmktMS4wLXIwLWFybXY1dGUtMi0iCiMg
REVCVUdfRkxBR1M9LWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzCkRFQlVHX0ZMQUdT
PSItZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMiCiMgU1RBR0lOR19MSUJESVJfTkFU
SVZFPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7bGliZGlyX25hdGl2ZX0KU1RBR0lOR19MSUJESVJf
TkFUSVZFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZf
NjQtbGludXgvdXNyL2xpYiIKIyBRRU1VX1RBUkdFVFM9YXJtIGkzODYgbWlwcyBtaXBzZWwgcHBj
IHg4Nl82NApRRU1VX1RBUkdFVFM9ImFybSBpMzg2IG1pcHMgbWlwc2VsIHBwYyB4ODZfNjQiCiMg
U09MSUJTREVWX2Rhcndpbj0uZHlsaWIKU09MSUJTREVWX2Rhcndpbj0iLmR5bGliIgojIFBBQ0tB
R0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NXRoZmItdmZwPWFybXY1aGZiLXZmcCBhcm12NXRoZmIt
dmZwClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NXRoZmItdmZwPSJhcm12NWhmYi12ZnAg
YXJtdjV0aGZiLXZmcCIKIyBHUk9VUF9wYWNrYWdpbmc9Tm9uZQojIERFU0NSSVBUSU9OPSR7U1VN
TUFSWX0KREVTQ1JJUFRJT049ImJibGF5ZXJzIHZlcnNpb24gMS4wLXIwIgojIEI9JHtTfQpCPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51
eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9iYmxheWVycy0xLjAiCiMgR1JPVVBfZmV0Y2hlcj1O
b25lCiMgT1ZFUlJJREVTPSR7VEFSR0VUX09TfToke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9OmJ1
aWxkLSR7QlVJTERfT1N9OnBuLSR7UE59OiR7TUFDSElORU9WRVJSSURFU306JHtESVNUUk9PVkVS
UklERVN9OiR7Q0xBU1NPVkVSUklERX06Zm9yY2V2YXJpYWJsZSR7QGJiLnV0aWxzLmNvbnRhaW5z
KCJUVU5FX0ZFQVRVUkVTIiwgInRodW1iIiwgIjp0aHVtYiIsICIiLCBkKX0ke0BiYi51dGlscy5j
b250YWlucygiVFVORV9GRUFUVVJFUyIsICJuby10aHVtYi1pbnRlcndvcmsiLCAiOnRodW1iLWlu
dGVyd29yayIsICIiLCBkKX0ke0xJQkNPVkVSUklERX0KT1ZFUlJJREVTPSJsaW51eC1nbnVlYWJp
OmFybTpidWlsZC1saW51eDpwbi1iYmxheWVyczpteXFlbXVhcm06YXJtdjU6cG9reTpjbGFzcy10
YXJnZXQ6Zm9yY2V2YXJpYWJsZTp0aHVtYjpsaWJjLWdsaWJjIgojIFNES19OQU1FX1BSRUZJWD1v
ZWNvcmUKU0RLX05BTUVfUFJFRklYPSJvZWNvcmUiCiMgQkJQQVRIPS9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvbWV0YS15b2N0bzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkOi9ob21l
L2xzZXJiYW4vd29yay9tYXN0ZXIvbWV0YTovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L21ldGEtbXlxZW11YXJtCkJCUEFUSD0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhLXlv
Y3RvOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQ6L2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9tZXRhOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvbWV0YS1teXFlbXVhcm0i
CiMgU0VSSUFMX0NPTlNPTEU9MTE1MjAwIHR0eUFNQTAKU0VSSUFMX0NPTlNPTEU9IjExNTIwMCB0
dHlBTUEwIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWUtdmZwPWFybXY1IHZmcCBkc3AKVFVO
RV9GRUFUVVJFU190dW5lLWFybXY1ZS12ZnA9ImFybXY1IHZmcCBkc3AiCiMgU1NUQVRFX1NDQU5f
Q01EPWZpbmQgJHtTU1RBVEVfQlVJTERESVJ9IFwoIC1uYW1lICIke0AiXCIgLW8gLW5hbWUgXCIi
LmpvaW4oZC5nZXRWYXIoIlNTVEFURV9TQ0FOX0ZJTEVTIiwgVHJ1ZSkuc3BsaXQoKSl9IiBcKSAt
dHlwZSBmClNTVEFURV9TQ0FOX0NNRD0iZmluZCAke1NTVEFURV9CVUlMRERJUn0gXCggLW5hbWUg
XCIqLmxhXCIgLW8gLW5hbWUgXCIqLWNvbmZpZ1wiIC1vIC1uYW1lIFwiKl9jb25maWdcIiBcKSAt
dHlwZSBmIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWViPSR7VFVORV9GRUFUVVJFU190dW5l
LWFybXY1ZX0gYmlnZW5kaWFuClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWViPSJhcm12NSBkc3Ag
YmlnZW5kaWFuIgojIFRBUkdFVF9MRF9BUkNIPSR7VFVORV9MREFSR1N9CiMgU0RLX1NZUz0ke1NE
S19BUkNIfSR7U0RLX1ZFTkRPUn0ke0BbJy0nICsgZC5nZXRWYXIoJ1NES19PUycsIFRydWUpLCAn
J11bZC5nZXRWYXIoJ1NES19PUycsIFRydWUpID09ICgnJyBvciAnY3VzdG9tJyldfQpTREtfU1lT
PSJ4ODZfNjQtcG9reXNkay1saW51eCIKIyBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXY9JHtQTn0t
ZGV2ICg9ICR7RVhURU5EUEtHVn0pClJERVBFTkRTX2JibGF5ZXJzLXN0YXRpY2Rldj0iYmJsYXll
cnMtZGV2ICg9IDEuMC1yMCkiCiMgQkJGSUxFX1BSSU9SSVRZPTYKQkJGSUxFX1BSSU9SSVRZPSI2
IgojIGJhc2VfZGVwPWRlZiBiYXNlX2RlcF9wcmVwZW5kKGQpOgojICAgICMKIyAgICAjIElkZWFs
bHkgdGhpcyB3aWxsIGNoZWNrIGEgZmxhZyBzbyB3ZSB3aWxsIG9wZXJhdGUgcHJvcGVybHkgaW4K
IyAgICAjIHRoZSBjYXNlIHdoZXJlIGhvc3QgPT0gYnVpbGQgPT0gdGFyZ2V0LCBmb3Igbm93IHdl
IGRvbid0IHdvcmsgaW4KIyAgICAjIHRoYXQgY2FzZSB0aG91Z2guCiMgICAgIwojCiMgICAgZGVw
cyA9ICIiCiMgICAgIyBJTkhJQklUX0RFRkFVTFRfREVQUyBkb2Vzbid0IGFwcGx5IHRvIHRoZSBw
YXRjaCBjb21tYW5kLiAgV2hldGhlciBvciAgbm90CiMgICAgIyB3ZSBuZWVkIHRoYXQgYnVpbHQg
aXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QK
IyAgICAjIHRoZSBhcHBsaWNhdGlvbi4KIyAgICBpZiBub3QgZC5nZXRWYXIoJ0lOSElCSVRfREVG
QVVMVF9ERVBTJyk6CiMgICAgICAgIGlmIChkLmdldFZhcignSE9TVF9TWVMnLCBUcnVlKSAhPSBk
LmdldFZhcignQlVJTERfU1lTJywgVHJ1ZSkpOgojICAgICAgICAgICAgZGVwcyArPSAiIHZpcnR1
YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxp
YnMgdmlydHVhbC9saWJjICIKIyAgICByZXR1cm4gZGVwcwojCmJhc2VfZGVwPSJkZWYgYmFzZV9k
ZXBfcHJlcGVuZChkKTogXAogICAgIyBcCiAgICAjIElkZWFsbHkgdGhpcyB3aWxsIGNoZWNrIGEg
ZmxhZyBzbyB3ZSB3aWxsIG9wZXJhdGUgcHJvcGVybHkgaW4gXAogICAgIyB0aGUgY2FzZSB3aGVy
ZSBob3N0ID09IGJ1aWxkID09IHRhcmdldCwgZm9yIG5vdyB3ZSBkb24ndCB3b3JrIGluIFwKICAg
ICMgdGhhdCBjYXNlIHRob3VnaC4gXAogICAgIyBcCiBcCiAgICBkZXBzID0gXCJcIiBcCiAgICAj
IElOSElCSVRfREVGQVVMVF9ERVBTIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHBhdGNoIGNvbW1hbmQu
ICBXaGV0aGVyIG9yICBub3QgXAogICAgIyB3ZSBuZWVkIHRoYXQgYnVpbHQgaXMgdGhlIHJlc3Bv
bnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QgXAogICAgIyB0aGUg
YXBwbGljYXRpb24uIFwKICAgIGlmIG5vdCBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMn
KTogXAogICAgICAgIGlmIChkLmdldFZhcignSE9TVF9TWVMnLCBUcnVlKSAhPSBkLmdldFZhcign
QlVJTERfU1lTJywgVHJ1ZSkpOiBcCiAgICAgICAgICAgIGRlcHMgKz0gXCIgdmlydHVhbC9hcm0t
cG9reS1saW51eC1nbnVlYWJpLWdjYyB2aXJ0dWFsL2FybS1wb2t5LWxpbnV4LWdudWVhYmktY29t
cGlsZXJsaWJzIHZpcnR1YWwvbGliYyBcIiBcCiAgICByZXR1cm4gZGVwcyIKIyBFR0xJQkNWRVJT
SU9OPTIuMTYKRUdMSUJDVkVSU0lPTj0iMi4xNiIKIyBSUE1DT05GX0hPU1RfQkFTRT0ke0RFUExP
WV9ESVJfUlBNfS9zb2x2ZWRiLXNkawpSUE1DT05GX0hPU1RfQkFTRT0iL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L3JwbS9zb2x2ZWRiLXNkayIKIyBCQVNFTElCPWxp
YgpCQVNFTElCPSJsaWIiCiMgSE9TVF9MRF9BUkNIPSR7VEFSR0VUX0xEX0FSQ0h9CiMgQlVJTERf
T1BUSU1JWkFUSU9OPS1PMiAtcGlwZQpCVUlMRF9PUFRJTUlaQVRJT049Ii1PMiAtcGlwZSIKIyBQ
QUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjUtdmZwPSR7UEFDS0FHRV9FWFRSQV9BUkNIU190
dW5lLWFybXY1fSBhcm12NS12ZnAKUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1LXZmcD0i
YXJtIGFybXY0IGFybXY1IGFybXY1LXZmcCIKIyBCVUlMRF9GNzc9JHtDQ0FDSEV9JHtCVUlMRF9Q
UkVGSVh9Zzc3ICR7QlVJTERfQ0NfQVJDSH0KZXhwb3J0IEJVSUxEX0Y3Nz0iZzc3IgojIFBSRUZF
UlJFRF9WRVJTSU9OX2xpYmdjYy1uYXRpdmVzZGs9JHtTREtHQ0NWRVJTSU9OfQpQUkVGRVJSRURf
VkVSU0lPTl9saWJnY2MtbmF0aXZlc2RrPSI0LjclIgojIEJCX1NUUklDVF9DSEVDS1NVTT0xCkJC
X1NUUklDVF9DSEVDS1NVTT0iMSIKIyBQQUNLQUdFSU5ERVhFUz0gcGFja2FnZV91cGRhdGVfaW5k
ZXhfcnBtOyBbICEgLWUgJHtERVBMT1lfRElSX1JQTX0gXSB8fCBjcmVhdGVyZXBvICR7REVQTE9Z
X0RJUl9SUE19OwpQQUNLQUdFSU5ERVhFUz0icGFja2FnZV91cGRhdGVfaW5kZXhfcnBtOyBbICEg
LWUgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L3JwbSBdIHx8IGNy
ZWF0ZXJlcG8gL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L3JwbTsi
CiMgQlBOPSR7QGJhc2VfcHJ1bmVfc3VmZml4KGQuZ2V0VmFyKCdQTicsIFRydWUpLCBkLmdldFZh
cignU1BFQ0lBTF9QS0dTVUZGSVgnLCBUcnVlKS5zcGxpdCgpLCBkKX0KQlBOPSJiYmxheWVycyIK
IyBSREVQRU5EUz0KIyBBU05FRURFRF9wbi1kaWFsZXI9CiMgUEFUSD0ke0BleHRyYV9wYXRoX2Vs
ZW1lbnRzKGQpfSR7Q09SRUJBU0V9L3NjcmlwdHM6JHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59
OiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9OiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7c2JpbmRpcl9u
YXRpdmV9OiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfToke1NUQUdJTkdfRElSX05BVElWRX0ke2Jh
c2Vfc2JpbmRpcl9uYXRpdmV9OiR7U1RBR0lOR19ESVJfTkFUSVZFfS8ke2Jhc2VfYmluZGlyX25h
dGl2ZX06L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9ob2JfdGVzdC9zY3JpcHRz
Oi9ob21lL2xzZXJiYW4vd29yay9ob2JfdGVzdC9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4v
Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJh
a2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRz
Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzov
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
c2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtl
L2Jpbi86L3Vzci9saWIvbGlnaHRkbS9saWdodGRtOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2Fs
L2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzCmV4cG9ydCBQQVRI
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vYXJtdjV0ZS1wb2t5
LWxpbnV4LWdudWVhYmk6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9v
dHMvbXlxZW11YXJtL3Vzci9iaW4vY3Jvc3NzY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2JpbjovaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2JpbjovaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvc2Jp
bjovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGlu
dXgvL2JpbjovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL2hvYl90ZXN0L3Njcmlw
dHM6L2hvbWUvbHNlcmJhbi93b3JrL2hvYl90ZXN0L2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jp
bi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0
YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3Njcmlw
dHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4v
Oi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJh
a2UvYmluLzovdXNyL2xpYi9saWdodGRtL2xpZ2h0ZG06L3Vzci9sb2NhbC9zYmluOi91c3IvbG9j
YWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXMiCiMgUEFDS0FH
RVM9JHtQTn0tZGJnICR7UE59LXN0YXRpY2RldiAke1BOfS1kZXYgJHtQTn0tZG9jICR7UE59LWxv
Y2FsZSAke1BBQ0tBR0VfQkVGT1JFX1BOfSAke1BOfQpQQUNLQUdFUz0iYmJsYXllcnMtZGJnIGJi
bGF5ZXJzLXN0YXRpY2RldiBiYmxheWVycy1kZXYgYmJsYXllcnMtZG9jIGJibGF5ZXJzLWxvY2Fs
ZSAgYmJsYXllcnMiCiMgVFVORV9GRUFUVVJFU190dW5lLWFybXY0dGI9JHtUVU5FX0ZFQVRVUkVT
X3R1bmUtYXJtdjR0fSBiaWdlbmRpYW4KVFVORV9GRUFUVVJFU190dW5lLWFybXY0dGI9ImFybXY0
IHRodW1iIGJpZ2VuZGlhbiIKIyBERVNDUklQVElPTl8ke1BOfS1zdGF0aWNkZXY9JHtERVNDUklQ
VElPTn0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzdGF0aWMgbGlicmFyaWVzIGZvciBzb2Z0d2Fy
ZSBkZXZlbG9wbWVudC4KREVTQ1JJUFRJT05fYmJsYXllcnMtc3RhdGljZGV2PSJiYmxheWVycyB2
ZXJzaW9uIDEuMC1yMCAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHN0YXRpYyBsaWJyYXJpZXMgZm9y
IHNvZnR3YXJlIGRldmVsb3BtZW50LiIKIyBUQVJHRVRfQ0ZMQUdTPSR7VEFSR0VUX0NQUEZMQUdT
fSAke1NFTEVDVEVEX09QVElNSVpBVElPTn0KZXhwb3J0IFRBUkdFVF9DRkxBR1M9Ii1PMiAtcGlw
ZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMiCiMgYmFzZV9iaW5kaXI9JHtiYXNl
X3ByZWZpeH0vYmluCmV4cG9ydCBiYXNlX2JpbmRpcj0iL2JpbiIKIyBQQUNLQUdFX0VYVFJBX0FS
Q0hTX3R1bmUtYXJtdjV0Yi12ZnA9JHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0fSBh
cm12NWItdmZwIGFybXY1dGItdmZwClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NXRiLXZm
cD0iYXJtIGFybXY0IGFybXY0dCBhcm12NSBhcm12NXQgYXJtdjViLXZmcCBhcm12NXRiLXZmcCIK
IyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjVlaGZiLXZmcD0ke1BBQ0tBR0VfRVhUUkFf
QVJDSFNfdHVuZS1hcm12NWhmYi12ZnB9IGFybXY1ZWhmYi12ZnAKUEFDS0FHRV9FWFRSQV9BUkNI
U190dW5lLWFybXY1ZWhmYi12ZnA9ImFybXY1aGZiLXZmcCBhcm12NWVoZmItdmZwIgojIEJVSUxE
X0NQUD0ke0JVSUxEX1BSRUZJWH1jcHAgJHtCVUlMRF9DQ19BUkNIfQpleHBvcnQgQlVJTERfQ1BQ
PSJjcHAiCiMgSE9NRVBBR0U9dW5rbm93bgpIT01FUEFHRT0idW5rbm93biIKIyBTQU5JVFlfVkVS
U0lPTj0xClNBTklUWV9WRVJTSU9OPSIxIgojIEJaUkRJUj0ke0NPX0RJUn0vYnpyCkJaUkRJUj0i
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9kb3dubG9hZHMvYnpyIgojIEVYVEVORFBS
QVVUTz0ke0BbJy4ke1BSQVVUT1x4N2QnLCcnXVtkLmdldFZhcignUFJBVVRPJywxKSBpcyBOb25l
XX0KIyBCVUlMRENGR19GVU5DUz1idWlsZGNmZ192YXJzIGdldF9sYXllcnNfYnJhbmNoX3JldiBi
dWlsZGNmZ19uZWVkZWR2YXJzCkJVSUxEQ0ZHX0ZVTkNTPSJidWlsZGNmZ192YXJzIGdldF9sYXll
cnNfYnJhbmNoX3JldiBidWlsZGNmZ19uZWVkZWR2YXJzIgojIFBSRUZFUlJFRF9WRVJTSU9OX2dj
Yy1jcm9zcz0ke0dDQ1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcz0iNC43JSIK
IyBTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTPXBhdGNoIGRpZmZzdGF0IHRleGkyaHRtbCBtYWtl
aW5mbyBnaXQgYnppcDIgdGFyIGd6aXAgZ2F3ayBjaHJwYXRoIHdnZXQgY3BpbwpTQU5JVFlfUkVR
VUlSRURfVVRJTElUSUVTPSJwYXRjaCBkaWZmc3RhdCB0ZXhpMmh0bWwgbWFrZWluZm8gZ2l0IGJ6
aXAyIHRhciBnemlwIGdhd2sgY2hycGF0aCB3Z2V0IGNwaW8iCiMgQVNORUVERURfcG4tcnBtPQoj
IFNFUFBVS1VfQ09NUE9ORU5UPU5vbmUKIyBQS0dXUklURURJUlJQTT0ke1dPUktESVJ9L2RlcGxv
eS1ycG1zClBLR1dSSVRFRElSUlBNPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3Rt
cC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9kZXBsb3kt
cnBtcyIKIyBCQkZJTEVfUFJJT1JJVFlfbm9ybWFsPTUKQkJGSUxFX1BSSU9SSVRZX25vcm1hbD0i
NSIKIyBNQUNISU5FPW15cWVtdWFybQp1bnNldCBNQUNISU5FCiMgSU5IRVJJVD0gJHtQQUNLQUdF
X0NMQVNTRVN9ICR7VVNFUl9DTEFTU0VTfSAke0lOSEVSSVRfSU5TQU5FfSAke0lOSEVSSVRfRElT
VFJPfSBzYW5pdHkKSU5IRVJJVD0icGFja2FnZV9ycG0gYnVpbGRzdGF0cyBpbWFnZS1ta2xpYnMg
aW1hZ2UtcHJlbGluayBpbnNhbmUgZGViaWFuIGRldnNoZWxsIHNzdGF0ZSBsaWNlbnNlIHNhbml0
eSIKIyBGSUxFX0RJUk5BTUU9JHtAb3MucGF0aC5kaXJuYW1lKGQuZ2V0VmFyKCdGSUxFJykpfQpG
SUxFX0RJUk5BTUU9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvY29uZiIKIyBHSVRE
SVI9JHtDT19ESVJ9L2dpdDIKR0lURElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L2Rvd25sb2Fkcy9naXQyIgojIE1BQ0hJTkVPVkVSUklERVM9JHtNQUNISU5FfSR7QGJiLnV0aWxz
LmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFybXY1IiwgIjphcm12NSIsICIiICxkKX0ke0Bi
Yi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhcm12NCIsICI6YXJtdjQiLCAiIiAs
ZCl9Ck1BQ0hJTkVPVkVSUklERVM9Im15cWVtdWFybTphcm12NSIKIyBGSUxFU18ke1BOfS1zdGF0
aWNkZXY9JHtsaWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLmEgJHtsaWJkaXJ9LyR7QlBOfS8q
LmEKRklMRVNfYmJsYXllcnMtc3RhdGljZGV2PSIvdXNyL2xpYi8qLmEgL2xpYi8qLmEgL3Vzci9s
aWIvYmJsYXllcnMvKi5hIgojIHByZWZpeF9uYXRpdmU9L3VzcgpwcmVmaXhfbmF0aXZlPSIvdXNy
IgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIteGY4Nj14c2VydmVyLXhvcmcK
UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlci14Zjg2PSJ4c2VydmVyLXhvcmciCiMg
R1BFX01JUlJPUj1odHRwOi8vZ3BlLmxpbnV4dG9nby5vcmcvZG93bmxvYWQvc291cmNlCkdQRV9N
SVJST1I9Imh0dHA6Ly9ncGUubGludXh0b2dvLm9yZy9kb3dubG9hZC9zb3VyY2UiCiMgU0VTU0lP
Tl9NQU5BR0VSPWxvY2FsL2xhdXJlbnRpdS0wMjpAL3RtcC8uSUNFLXVuaXgvMTQ1Mix1bml4L2xh
dXJlbnRpdS0wMjovdG1wLy5JQ0UtdW5peC8xNDUyClNFU1NJT05fTUFOQUdFUj0ibG9jYWwvbGF1
cmVudGl1LTAyOkAvdG1wLy5JQ0UtdW5peC8xNDUyLHVuaXgvbGF1cmVudGl1LTAyOi90bXAvLklD
RS11bml4LzE0NTIiCiMgU0VDVElPTl8ke1BOfS1kZXY9ZGV2ZWwKU0VDVElPTl9iYmxheWVycy1k
ZXY9ImRldmVsIgojIGJhc2Vfc2JpbmRpcl9uYXRpdmU9L3NiaW4KYmFzZV9zYmluZGlyX25hdGl2
ZT0iL3NiaW4iCiMgRklMRVNfJHtQTn0tYmluPSR7YmluZGlyfS8qICR7c2JpbmRpcn0vKgpGSUxF
U19iYmxheWVycy1iaW49Ii91c3IvYmluLyogL3Vzci9zYmluLyoiCiMgcHJlZml4X25hdGl2ZXNk
az0vdXNyCnByZWZpeF9uYXRpdmVzZGs9Ii91c3IiCiMgc2JpbmRpcj0ke2V4ZWNfcHJlZml4fS9z
YmluCmV4cG9ydCBzYmluZGlyPSIvdXNyL3NiaW4iCiMgQ0ZMQUdTPSR7VEFSR0VUX0NGTEFHU30K
ZXhwb3J0IENGTEFHUz0iLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBl
cyIKIyBCVUlMRF9BUj0ke0JVSUxEX1BSRUZJWH1hcgpleHBvcnQgQlVJTERfQVI9ImFyIgojIEJV
SUxEX0FTPSR7QlVJTERfUFJFRklYfWFzICR7QlVJTERfQVNfQVJDSH0KZXhwb3J0IEJVSUxEX0FT
PSJhcyIKIyBTSExJQlNESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS9zaGxpYnMKU0hMSUJTRElSPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vc2hs
aWJzIgojIHNoYXJlZHN0YXRlZGlyPSR7YmFzZV9wcmVmaXh9L2NvbQpleHBvcnQgc2hhcmVkc3Rh
dGVkaXI9Ii9jb20iCiMgU1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkU9JHtTVEFHSU5HX0RJUl9O
QVRJVkV9JHtiYXNlX2xpYmRpcl9uYXRpdmV9ClNUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgv
bGliIgojIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUz0KIyBTU1RBVEVfTUFORklMRVBSRUZJWD0k
e1NTVEFURV9NQU5GSUxFQkFTRX0ke1BOfQpTU1RBVEVfTUFORklMRVBSRUZJWD0iL2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3N0YXRlLWNvbnRyb2wvbWFuaWZlc3QtYXJtdjV0
ZS1iYmxheWVycyIKIyBTREtfUFJFRklYPSR7U0RLX1NZU30tClNES19QUkVGSVg9Ing4Nl82NC1w
b2t5c2RrLWxpbnV4LSIKIyBERUJJQU5fTUlSUk9SPWZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlh
bi9wb29sCkRFQklBTl9NSVJST1I9ImZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIgoj
IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmM9ZWdsaWJjClBSRUZFUlJFRF9QUk9WSURF
Ul92aXJ0dWFsL2xpYmM9ImVnbGliYyIKIyBERVZGSUxFPSR7QlVJTERTVEFUU19CQVNFfS8uZGV2
aWNlCkRFVkZJTEU9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2J1aWxkc3Rh
dHMvLy5kZXZpY2UiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklY
fWxpYmMtZm9yLWdjYz0ke1RDTElCQ30KUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYXJtLXBv
a3ktbGludXgtZ251ZWFiaS1saWJjLWZvci1nY2M9ImVnbGliYyIKIyBERUZBVUxUX1RBU0tfUFJP
VklERVI9dGFzay1iYXNlCkRFRkFVTFRfVEFTS19QUk9WSURFUj0idGFzay1iYXNlIgojIEJPT1RT
VFJBUF9FWFRSQV9SUkVDT01NRU5EUz0KIyBGNzc9JHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1nNzcg
JHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30KZXhwb3J0IEY3Nz0iYXJtLXBva3kt
bGludXgtZ251ZWFiaS1nNzcgIC1tYXJjaD1hcm12NXRlICAtbWFybSAtbXRodW1iLWludGVyd29y
ayAgLW10dW5lPWFybTkyNmVqLXMgLS1zeXNyb290PS9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvdG1wL3N5c3Jvb3RzL215cWVtdWFybSIKIyBYREdfREFUQV9ESVJTPS91c3Ivc2hhcmUv
dWJ1bnR1Oi91c3Ivc2hhcmUvZ25vbWU6L3Vzci9sb2NhbC9zaGFyZS86L3Vzci9zaGFyZS8KWERH
X0RBVEFfRElSUz0iL3Vzci9zaGFyZS91YnVudHU6L3Vzci9zaGFyZS9nbm9tZTovdXNyL2xvY2Fs
L3NoYXJlLzovdXNyL3NoYXJlLyIKIyBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11
cHBjPTMuNCUKUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXBwYz0iMy40JSIKIyBB
U05FRURFRF9wbi1wdWxzZWF1ZGlvPQojIFdBUk5fUUE9dW5zYWZlLXJlZmVyZW5jZXMtaW4tYmlu
YXJpZXMgdW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0cwpXQVJOX1FBPSJ1bnNhZmUtcmVmZXJl
bmNlcy1pbi1iaW5hcmllcyB1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzIgojIEtFUk5FTF9J
TUFHRVRZUEU9ekltYWdlCktFUk5FTF9JTUFHRVRZUEU9InpJbWFnZSIKIyBWSVJUVUFMLVJVTlRJ
TUVfYXBtPWFwbQpWSVJUVUFMLVJVTlRJTUVfYXBtPSJhcG0iCiMgUUVNVUlNQUdFVEVTVFM9L2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzL3FlbXVpbWFnZS10ZXN0cwpRRU1VSU1BR0VU
RVNUUz0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzL3FlbXVpbWFnZS10ZXN0cyIK
IyBJTUFHRV9MSU5HVUFTPWVuLXVzIGVuLWdiCklNQUdFX0xJTkdVQVM9ImVuLXVzIGVuLWdiIgoj
IFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NWhmLXZmcD1hcm12NWhmLXZmcApQQUNLQUdF
X0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjVoZi12ZnA9ImFybXY1aGYtdmZwIgojIEhPU1RfUFJFRklY
PSR7VEFSR0VUX1BSRUZJWH0KSE9TVF9QUkVGSVg9ImFybS1wb2t5LWxpbnV4LWdudWVhYmktIgoj
IFNVTU1BUllfJHtQTn0tZGV2PSR7U1VNTUFSWX0gLSBEZXZlbG9wbWVudCBmaWxlcwpTVU1NQVJZ
X2JibGF5ZXJzLWRldj0iYmJsYXllcnMgdmVyc2lvbiAxLjAtcjAgLSBEZXZlbG9wbWVudCBmaWxl
cyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjLW5hdGl2ZXNkaz1lZ2xpYmMtbmF0
aXZlc2RrClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMtbmF0aXZlc2RrPSJlZ2xpYmMt
bmF0aXZlc2RrIgojIEFMTE9XRURfRkxBR1M9LU8gLW1jcHUgLW1hcmNoIC1waXBlCkFMTE9XRURf
RkxBR1M9Ii1PIC1tY3B1IC1tYXJjaCAtcGlwZSIKIyBQQVJBTExFTF9NQUtFPS1qIDgKUEFSQUxM
RUxfTUFLRT0iLWogOCIKIyBBU05FRURFRF9wbi1taW5pbW89CiMgVklSVFVBTC1SVU5USU1FX3Vw
ZGF0ZS1hbHRlcm5hdGl2ZXM9dXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgKVklSVFVBTC1SVU5U
SU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXM9InVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgojIFBS
RUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252LW5hdGl2ZXNkaz1lZ2xpYmMtbmF0aXZl
c2RrClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252LW5hdGl2ZXNkaz0iZWdsaWJj
LW5hdGl2ZXNkayIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0ZWhmYi12ZnA9JHtQ
QUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0aGZiLXZmcH0gYXJtdjVlaGZiLXZmcCBhcm12
NXRlaGZiLXZmcApQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0ZWhmYi12ZnA9ImFybXY1
aGZiLXZmcCBhcm12NXRoZmItdmZwIGFybXY1ZWhmYi12ZnAgYXJtdjV0ZWhmYi12ZnAiCiMgUEFD
S0FHRV9ERVBFTkRTPSBycG0tbmF0aXZlIGZpbGUtbmF0aXZlIHBheC11dGlscy1uYXRpdmUgJHtR
QURFUEVORFN9ClBBQ0tBR0VfREVQRU5EUz0icnBtLW5hdGl2ZSBmaWxlLW5hdGl2ZSBwYXgtdXRp
bHMtbmF0aXZlIHByZWxpbmstbmF0aXZlIgojIFRVTkVBQklfT1ZFUlJJREU9Tm9uZQojIFBSRUZF
UlJFRF9WRVJTSU9OX2xpbnV4LWxpYmMtaGVhZGVycz0ke0xJTlVYTElCQ1ZFUlNJT059ClBSRUZF
UlJFRF9WRVJTSU9OX2xpbnV4LWxpYmMtaGVhZGVycz0iMy40LjMiCiMgU09VUkNFRk9SR0VfTUlS
Uk9SPWh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0ClNPVVJDRUZPUkdFX01JUlJPUj0i
aHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQiCiMgUEFDS0FHRV9FWFRSQV9BUkNIU190
dW5lLWFybXY1ZS12ZnA9JHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjUtdmZwfSBhcm12
NWUgYXJtdjVlLXZmcApQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjVlLXZmcD0iYXJtIGFy
bXY0IGFybXY1IGFybXY1LXZmcCBhcm12NWUgYXJtdjVlLXZmcCIKIyBPQkpEVU1QPSR7SE9TVF9Q
UkVGSVh9b2JqZHVtcApleHBvcnQgT0JKRFVNUD0iYXJtLXBva3ktbGludXgtZ251ZWFiaS1vYmpk
dW1wIgojIElOSEVSSVRfRElTVFJPPWRlYmlhbiBkZXZzaGVsbCBzc3RhdGUgbGljZW5zZQpJTkhF
UklUX0RJU1RSTz0iZGViaWFuIGRldnNoZWxsIHNzdGF0ZSBsaWNlbnNlIgojIERFRkFVTFRUVU5F
PWFybTkyNmVqcwpERUZBVUxUVFVORT0iYXJtOTI2ZWpzIgojIElNQUdFX0JBU0VOQU1FPSR7UE59
CklNQUdFX0JBU0VOQU1FPSJiYmxheWVycyIKIyBQQVRDSFRPT0w9cXVpbHQKUEFUQ0hUT09MPSJx
dWlsdCIKIyBBUk1QS0dBUkNIPWFybXY1CkFSTVBLR0FSQ0g9ImFybXY1IgojIFNUQUdJTkdfRVhF
Q1BSRUZJWERJUj0ke1NUQUdJTkdfRElSX0hPU1R9JHtleGVjX3ByZWZpeH0KU1RBR0lOR19FWEVD
UFJFRklYRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9t
eXFlbXVhcm0vdXNyIgojIFNZU1JPT1RfREVTVERJUj0ke1dPUktESVJ9L3N5c3Jvb3QtZGVzdGRp
ci8KU1lTUk9PVF9ERVNURElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93
b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9zeXNyb290LWRl
c3RkaXIvIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJj
LWluaXRpYWw9JHtUQ0xJQkN9LWluaXRpYWwKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYXJt
LXBva3ktbGludXgtZ251ZWFiaS1saWJjLWluaXRpYWw9ImVnbGliYy1pbml0aWFsIgojIFVDTElC
Q1ZFUlNJT049MC45LjMzClVDTElCQ1ZFUlNJT049IjAuOS4zMyIKIyBCVUlMRF9DRkxBR1M9JHtC
VUlMRF9DUFBGTEFHU30gJHtCVUlMRF9PUFRJTUlaQVRJT059CmV4cG9ydCBCVUlMRF9DRkxBR1M9
Ii1pc3lzdGVtL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2
XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1
bmUtYXJtdjV0aGYtdmZwPWFybXY1aGYtdmZwIGFybXY1dGhmLXZmcApQQUNLQUdFX0VYVFJBX0FS
Q0hTX3R1bmUtYXJtdjV0aGYtdmZwPSJhcm12NWhmLXZmcCBhcm12NXRoZi12ZnAiCiMgUEFDS0FH
RV9FWFRSQV9BUkNIU190dW5lLWFybXY1dGVoZi12ZnA9JHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1
bmUtYXJtdjV0aGYtdmZwfSBhcm12NWVoZi12ZnAgYXJtdjV0ZWhmLXZmcApQQUNLQUdFX0VYVFJB
X0FSQ0hTX3R1bmUtYXJtdjV0ZWhmLXZmcD0iYXJtdjVoZi12ZnAgYXJtdjV0aGYtdmZwIGFybXY1
ZWhmLXZmcCBhcm12NXRlaGYtdmZwIgojIFBSRUZFUlJFRF9WRVJTSU9OX2VsZnV0aWxzPTAuMTQ4
ClBSRUZFUlJFRF9WRVJTSU9OX2VsZnV0aWxzPSIwLjE0OCIKIyBTUEVDSUFMX1BLR1NVRkZJWD0t
bmF0aXZlIC1jcm9zcyAtaW5pdGlhbCAtaW50ZXJtZWRpYXRlIC1uYXRpdmVzZGsgLWNyb3Nzc2Rr
IC1jcm9zcy1jYW5hZGlhbgpTUEVDSUFMX1BLR1NVRkZJWD0iLW5hdGl2ZSAtY3Jvc3MgLWluaXRp
YWwgLWludGVybWVkaWF0ZSAtbmF0aXZlc2RrIC1jcm9zc3NkayAtY3Jvc3MtY2FuYWRpYW4iCiMg
QlVJTERfRVhFRVhUPQojIEFTU1VNRV9TSExJQlM9Tm9uZQojIE9MREVTVF9LRVJORUw9Mi42LjE2
Ck9MREVTVF9LRVJORUw9IjIuNi4xNiIKIyBQS0dEQVRBX0RJUj0ke1RNUERJUn0vcGtnZGF0YS8k
e01VTFRJTUFDSF9UQVJHRVRfU1lTfQpQS0dEQVRBX0RJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC90bXAvcGtnZGF0YS9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaSIKIyBQUkVG
RVJSRURfVkVSU0lPTl9weXRob24tbmF0aXZlPTIuNy4zClBSRUZFUlJFRF9WRVJTSU9OX3B5dGhv
bi1uYXRpdmU9IjIuNy4zIgojIGJhc2VfbGliZGlyPSR7YmFzZV9wcmVmaXh9LyR7YmFzZWxpYn0K
ZXhwb3J0IGJhc2VfbGliZGlyPSIvbGliIgojIFNFQ1RJT05fJHtQTn0tZG9jPWRvYwpTRUNUSU9O
X2JibGF5ZXJzLWRvYz0iZG9jIgojIFBSPSR7QGJiLnBhcnNlLkJCSGFuZGxlci52YXJzX2Zyb21f
ZmlsZShkLmdldFZhcignRklMRScpLGQpWzJdIG9yICdyMCd9ClBSPSJyMCIKIyBQVj0ke0BiYi5w
YXJzZS5CQkhhbmRsZXIudmFyc19mcm9tX2ZpbGUoZC5nZXRWYXIoJ0ZJTEUnKSxkKVsxXSBvciAn
MS4wJ30KUFY9IjEuMCIKIyBYQVVUSE9SSVRZPS9ob21lL2xzZXJiYW4vLlhhdXRob3JpdHkKWEFV
VEhPUklUWT0iL2hvbWUvbHNlcmJhbi8uWGF1dGhvcml0eSIKIyBBVVRIT1I9Tm9uZQojIFRVTkVf
RkVBVFVSRVNfdHVuZS1hcm12NXRiLXZmcD0ke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXQtdmZw
fSBiaWdlbmRpYW4KVFVORV9GRUFUVVJFU190dW5lLWFybXY1dGItdmZwPSJhcm12NSB2ZnAgYmln
ZW5kaWFuIgojIEJCRklMRV9QQVRURVJOPV4vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L21ldGEtbXlxZW11YXJtLwpCQkZJTEVfUEFUVEVSTj0iXi9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvbWV0YS1teXFlbXVhcm0vIgojIEJCX1ZFUlNJT049MS4xNS4zCkJCX1ZFUlNJT049
IjEuMTUuMyIKIyBzeXNjb25mZGlyX25hdGl2ZT0vZXRjCnN5c2NvbmZkaXJfbmF0aXZlPSIvZXRj
IgojIEJVSUxEU0RLX0xERkxBR1M9LUwke1NUQUdJTkdfTElCRElSfSAtV2wsLXJwYXRoLWxpbmss
JHtTVEFHSU5HX0xJQkRJUn0gLVdsLC1ycGF0aCwke2xpYmRpcn0gLVdsLC1PMSAtTCR7U1RBR0lO
R19ESVJfSE9TVH0ke2Jhc2VfbGliZGlyfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0RJUl9I
T1NUfSR7YmFzZV9saWJkaXJ9IC1XbCwtcnBhdGgsJHtiYXNlX2xpYmRpcn0gLVdsLC1PMQpCVUlM
RFNES19MREZMQUdTPSItTC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jv
b3RzL215cWVtdWFybS91c3IvbGliIC1XbCwtcnBhdGgtbGluaywvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vdXNyL2xpYiAtV2wsLXJwYXRoLC91
c3IvbGliIC1XbCwtTzEgLUwvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNy
b290cy9teXFlbXVhcm0vbGliIC1XbCwtcnBhdGgtbGluaywvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vbGliIC1XbCwtcnBhdGgsL2xpYiAtV2ws
LU8xIgojIFBLR0RFU1Q9JHtXT1JLRElSfS9wYWNrYWdlcy1zcGxpdApQS0dERVNUPSIvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVl
YWJpL2JibGF5ZXJzLTEuMC1yMC9wYWNrYWdlcy1zcGxpdCIKIyBGRVRDSENNRF93Z2V0PS91c3Iv
YmluL2VudiB3Z2V0IC10IDIgLVQgMzAgLW52IC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0
aWZpY2F0ZQpGRVRDSENNRF93Z2V0PSIvdXNyL2Jpbi9lbnYgd2dldCAtdCAyIC1UIDMwIC1udiAt
LXBhc3NpdmUtZnRwIC0tbm8tY2hlY2stY2VydGlmaWNhdGUiCiMgUEY9JHtQTn0tJHtFWFRFTkRQ
RX0ke1BWfS0ke1BSfQpQRj0iYmJsYXllcnMtMS4wLXIwIgojIFNUQUdJTkdfQklORElSX05BVElW
RT0ke1NUQUdJTkdfRElSX05BVElWRX0ke2JpbmRpcl9uYXRpdmV9ClNUQUdJTkdfQklORElSX05B
VElWRT0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0
LWxpbnV4L3Vzci9iaW4iCiMgR1BHX0FHRU5UX0lORk89L3RtcC9rZXlyaW5nLVlmYkdFbC9ncGc6
MDoxCkdQR19BR0VOVF9JTkZPPSIvdG1wL2tleXJpbmctWWZiR0VsL2dwZzowOjEiCiMgUE49JHtA
YmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJyksZClbMF0g
b3IgJ2RlZmF1bHRwa2duYW1lJ30KUE49ImJibGF5ZXJzIgojIFBPS1lfREVGQVVMVF9FWFRSQV9S
REVQRU5EUz10YXNrLWNvcmUtYm9vdApQT0tZX0RFRkFVTFRfRVhUUkFfUkRFUEVORFM9InRhc2st
Y29yZS1ib290IgojIEZBS0VST09UTk9FTlY9UFNFVURPX1VOTE9BRD0xCkZBS0VST09UTk9FTlY9
IlBTRVVET19VTkxPQUQ9MSIKIyBDTEFTU09WRVJSSURFPWNsYXNzLXRhcmdldApDTEFTU09WRVJS
SURFPSJjbGFzcy10YXJnZXQiCiMgUEFDS0FHRVZBUlM9RklMRVMgUkRFUEVORFMgUlJFQ09NTUVO
RFMgU1VNTUFSWSBERVNDUklQVElPTiBSU1VHR0VTVFMgUlBST1ZJREVTIFJDT05GTElDVFMgUEtH
IEFMTE9XX0VNUFRZIHBrZ19wb3N0aW5zdCBwa2dfcG9zdHJtIElOSVRTQ1JJUFRfTkFNRSBJTklU
U0NSSVBUX1BBUkFNUyBERUJJQU5fTk9BVVRPTkFNRSBBTFRFUk5BVElWRSBQS0dFIFBLR1YgUEtH
UgpQQUNLQUdFVkFSUz0iRklMRVMgUkRFUEVORFMgUlJFQ09NTUVORFMgU1VNTUFSWSBERVNDUklQ
VElPTiBSU1VHR0VTVFMgUlBST1ZJREVTIFJDT05GTElDVFMgUEtHIEFMTE9XX0VNUFRZIHBrZ19w
b3N0aW5zdCBwa2dfcG9zdHJtIElOSVRTQ1JJUFRfTkFNRSBJTklUU0NSSVBUX1BBUkFNUyBERUJJ
QU5fTk9BVVRPTkFNRSBBTFRFUk5BVElWRSBQS0dFIFBLR1YgUEtHUiIKIyBGSUxFU18ke1BOfS1k
ZXY9JHtpbmNsdWRlZGlyfSAke0ZJTEVTX1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgJHtsaWJk
aXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7ZGF0YWRpcn0vcGtnY29uZmlnICR7ZGF0YWRp
cn0vYWNsb2NhbCAke2Jhc2VfbGliZGlyfS8qLm8gJHtsaWJkaXJ9LyR7QlBOfS8qLmxhICR7YmFz
ZV9saWJkaXJ9LyoubGEKRklMRVNfYmJsYXllcnMtZGV2PSIvdXNyL2luY2x1ZGUgL2xpYi9saWIq
LnNvIC91c3IvbGliL2xpYiouc28gL3Vzci9saWIvKi5sYSAvdXNyL2xpYi8qLm8gL3Vzci9saWIv
cGtnY29uZmlnIC91c3Ivc2hhcmUvcGtnY29uZmlnIC91c3Ivc2hhcmUvYWNsb2NhbCAvbGliLyou
byAvdXNyL2xpYi9iYmxheWVycy8qLmxhIC9saWIvKi5sYSIKIyBESVNUUk9fVkVSU0lPTj0xLjIr
c25hcHNob3QtJHtEQVRFfQpESVNUUk9fVkVSU0lPTj0iMS4yK3NuYXBzaG90LTIwMTIwODIyIgoj
IFNES19MRF9BUkNIPSR7QlVJTERfTERfQVJDSH0KIyBTPSR7V09SS0RJUn0vJHtCUH0KUz0iL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgt
Z251ZWFiaS9iYmxheWVycy0xLjAtcjAvYmJsYXllcnMtMS4wIgojIFVTRVJfQ0xBU1NFUz1idWls
ZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rClVTRVJfQ0xBU1NFUz0iYnVpbGRzdGF0
cyBpbWFnZS1ta2xpYnMgaW1hZ2UtcHJlbGluayIKIyBERVBMT1lfRElSX1RBUj0ke0RFUExPWV9E
SVJ9L3RhcgpERVBMT1lfRElSX1RBUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90
bXAvZGVwbG95L3RhciIKIyBJTUFHRV9PVkVSSEVBRF9GQUNUT1I9MS4zCklNQUdFX09WRVJIRUFE
X0ZBQ1RPUj0iMS4zIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NWhmYi12ZnA9JHtUVU5FX0ZF
QVRVUkVTX3R1bmUtYXJtdjViLXZmcH0gY2FsbGNvbnZlbnRpb24taGFyZApUVU5FX0ZFQVRVUkVT
X3R1bmUtYXJtdjVoZmItdmZwPSJhcm12NSB2ZnAgYmlnZW5kaWFuIGNhbGxjb252ZW50aW9uLWhh
cmQiCiMgTUtURU1QRElSQ01EPW1rdGVtcCAtZCAtcSAke1RNUEJBU0V9Ck1LVEVNUERJUkNNRD0i
bWt0ZW1wIC1kIC1xICR7VE1QQkFTRX0iCiMgU1RBR0lOR19LRVJORUxfRElSPSR7U1RBR0lOR19E
SVJfSE9TVH0vdXNyL3NyYy9rZXJuZWwKU1RBR0lOR19LRVJORUxfRElSPSIvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vdXNyL3NyYy9rZXJuZWwi
CiMgQkJfSEFTSENIRUNLX0ZVTkNUSU9OPXNzdGF0ZV9jaGVja2hhc2hlcwpCQl9IQVNIQ0hFQ0tf
RlVOQ1RJT049InNzdGF0ZV9jaGVja2hhc2hlcyIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjRi
PSR7VFVORV9GRUFUVVJFU190dW5lLWFybXY0fSBiaWdlbmRpYW4KVFVORV9GRUFUVVJFU190dW5l
LWFybXY0Yj0iYXJtdjQgYmlnZW5kaWFuIgojIFNFUFBVS1VfTE9HSU49Tm9uZQojIFNFUFBVS1Vf
UFJPRFVDVD1Ob25lCiMgTUxQUkVGSVg9CiMgRklMRVNfU09MSUJTREVWPSR7YmFzZV9saWJkaXJ9
L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0KRklMRVNfU09MSUJT
REVWPSIvbGliL2xpYiouc28gL3Vzci9saWIvbGliKi5zbyIKIyBBRE9CRV9NSVJST1I9aHR0cDov
L2ZwZG93bmxvYWQubWFjcm9tZWRpYS5jb20vZ2V0L2ZsYXNocGxheWVyL2N1cnJlbnQvCkFET0JF
X01JUlJPUj0iaHR0cDovL2ZwZG93bmxvYWQubWFjcm9tZWRpYS5jb20vZ2V0L2ZsYXNocGxheWVy
L2N1cnJlbnQvIgojIFNPTElCUz0uc28uKgpTT0xJQlM9Ii5zby4qIgojIENIUlBBVEhfQklOPWNo
cnBhdGgKQ0hSUEFUSF9CSU49ImNocnBhdGgiCiMgUFJPVklERVM9JHtQfSAke1BGfSAke1BOfSAK
UFJPVklERVM9ImJibGF5ZXJzLTEuMCBiYmxheWVycy0xLjAtcjAgYmJsYXllcnMiCiMgUEtHX0NP
TkZJR19ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2xpYmRpcn0vcGtnY29uZmlnCmV4cG9ydCBQ
S0dfQ09ORklHX0RJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9v
dHMvbXlxZW11YXJtLy91c3IvbGliL3BrZ2NvbmZpZyIKIyBQWVRIT05fQkFTRVZFUlNJT049Mi43
ClBZVEhPTl9CQVNFVkVSU0lPTj0iMi43IgojIFBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUz0KIyBJ
TUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ9IG1rbGlic19vcHRpbWl6ZV9pbWFnZTsgIHByZWxpbmtf
aW1hZ2U7IApJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ9Im1rbGlic19vcHRpbWl6ZV9pbWFnZTsg
IHByZWxpbmtfaW1hZ2U7IgojIERFQklBTlJERVA9ZG9fcGFja2FnZQpERUJJQU5SREVQPSJkb19w
YWNrYWdlIgojIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NWItdmZwPSR7UEFDS0FHRV9F
WFRSQV9BUkNIU190dW5lLWFybXY1fSBhcm12NWItdmZwClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVu
ZS1hcm12NWItdmZwPSJhcm0gYXJtdjQgYXJtdjUgYXJtdjViLXZmcCIKIyBRRU1VX09QVElPTlNf
ZTUwMG1jPS1jcHUgZTUwMG1jClFFTVVfT1BUSU9OU19lNTAwbWM9Ii1jcHUgZTUwMG1jIgojIERJ
U1RST19GRUFUVVJFUz1hbHNhIGFyZ3AgYmx1ZXRvb3RoIGV4dDIgaXJkYSBsYXJnZWZpbGUgcGNt
Y2lhIHVzYmdhZGdldCB1c2Job3N0IHdpZmkgeGF0dHIgbmZzIHplcm9jb25mIHBjaSAzZyB4MTEg
JHtESVNUUk9fRkVBVFVSRVNfTElCQ30gbGFyZ2VmaWxlIG9wZW5nbCR7QG9lLnV0aWxzLmRpc3Ry
b19mZWF0dXJlc19iYWNrZmlsbChkKX0KRElTVFJPX0ZFQVRVUkVTPSJhbHNhIGFyZ3AgYmx1ZXRv
b3RoIGV4dDIgaXJkYSBsYXJnZWZpbGUgcGNtY2lhIHVzYmdhZGdldCB1c2Job3N0IHdpZmkgeGF0
dHIgbmZzIHplcm9jb25mIHBjaSAzZyB4MTEgaXB2NCBpcHY2IGxpYmMtYmFja3RyYWNlIGxpYmMt
YmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdldHMgbGliYy1jaGFy
c2V0cyBsaWJjLWNyeXB0IAkJCQkJbGliYy1jcnlwdC11ZmMgbGliYy1kYi1hbGlhc2VzIGxpYmMt
ZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0cmF2ZXJzZSAJCQkJ
CWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0LWFubCBsaWJjLWxpYm0gbGliYy1saWJt
LWJpZyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSAJCQkJCWxpYmMtbWVtdXNhZ2UgbGli
Yy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxpYmMtc3Bhd24g
bGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIAkJCQkJbGliYy11dG1wIGxpYmMtdXRtcHggbGliYy13
b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdleHAgbGliYy1wb3Np
eC1yZWdleHAtZ2xpYmMgCQkJCQlsaWJjLXBvc2l4LXdjaGFyLWlvIGxhcmdlZmlsZSBvcGVuZ2wg
cHVsc2VhdWRpbyIKIyBUQVJHRVRfU1lTPSR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfSR7
QFsnLScgKyBkLmdldFZhcignVEFSR0VUX09TJywgVHJ1ZSksICcnXVtkLmdldFZhcignVEFSR0VU
X09TJywgVHJ1ZSkgPT0gKCcnIG9yICdjdXN0b20nKV19ClRBUkdFVF9TWVM9ImFybS1wb2t5LWxp
bnV4LWdudWVhYmkiCiMgQVJNUEtHU0ZYX0RTUD0ke0BiYi51dGlscy5jb250YWlucygiVFVORV9G
RUFUVVJFUyIsIFsgImFybXY1IiwgImRzcCIgXSwgImUiLCAiIiwgZCl9CkFSTVBLR1NGWF9EU1A9
ImUiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYy1sb2NhbGU9ZWdsaWJjLWxvY2Fs
ZQpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjLWxvY2FsZT0iZWdsaWJjLWxvY2FsZSIK
IyBQUkVGRVJSRURfVkVSU0lPTl91Y2xpYmM9JHtVQ0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVS
U0lPTl91Y2xpYmM9IjAuOS4zMyIKIyBNVUxUSV9QUk9WSURFUl9XSElURUxJU1Q9dmlydHVhbC9s
aWJpbnRsIHZpcnR1YWwvbGliaW50bC1uYXRpdmUgdmlydHVhbC9saWJpbnRsLW5hdGl2ZXNkayB2
aXJ0dWFsL3hzZXJ2ZXIgdmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZSB2aXJ0dWFs
L3VwZGF0ZS1hbHRlcm5hdGl2ZXMKTVVMVElfUFJPVklERVJfV0hJVEVMSVNUPSJ2aXJ0dWFsL2xp
YmludGwgdmlydHVhbC9saWJpbnRsLW5hdGl2ZSB2aXJ0dWFsL2xpYmludGwtbmF0aXZlc2RrIHZp
cnR1YWwveHNlcnZlciB2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMtbmF0aXZlIHZpcnR1YWwv
dXBkYXRlLWFsdGVybmF0aXZlcyIKIyBQS0dfQ09ORklHX0RJU0FCTEVfVU5JTlNUQUxMRUQ9eWVz
CmV4cG9ydCBQS0dfQ09ORklHX0RJU0FCTEVfVU5JTlNUQUxMRUQ9InllcyIKIyBERVNDUklQVElP
Tl8ke1BOfS1kZXY9JHtERVNDUklQVElPTn0gIFRoaXMgcGFja2FnZSBjb250YWlucyBzeW1ib2xp
YyBsaW5rcywgaGVhZGVyIGZpbGVzLCBhbmQgcmVsYXRlZCBpdGVtcyBuZWNlc3NhcnkgZm9yIHNv
ZnR3YXJlIGRldmVsb3BtZW50LgpERVNDUklQVElPTl9iYmxheWVycy1kZXY9ImJibGF5ZXJzIHZl
cnNpb24gMS4wLXIwICBUaGlzIHBhY2thZ2UgY29udGFpbnMgc3ltYm9saWMgbGlua3MsIGhlYWRl
ciBmaWxlcywgYW5kIHJlbGF0ZWQgaXRlbXMgbmVjZXNzYXJ5IGZvciBzb2Z0d2FyZSBkZXZlbG9w
bWVudC4iCiMgUEFDS0FHRVJERVBUQVNLPWRvX3BhY2thZ2Vfd3JpdGUKUEFDS0FHRVJERVBUQVNL
PSJkb19wYWNrYWdlX3dyaXRlIgojIExJTktFUl9IQVNIX1NUWUxFX21pcHM2NGVsPXN5c3YKTElO
S0VSX0hBU0hfU1RZTEVfbWlwczY0ZWw9InN5c3YiCiMgaW5mb2Rpcj0ke2RhdGFkaXJ9L2luZm8K
ZXhwb3J0IGluZm9kaXI9Ii91c3Ivc2hhcmUvaW5mbyIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJt
djVlYi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjVlLXZmcH0gYmlnZW5kaWFuClRVTkVf
RkVBVFVSRVNfdHVuZS1hcm12NWViLXZmcD0iYXJtdjUgdmZwIGRzcCBiaWdlbmRpYW4iCiMgU0FO
SVRZX0FCSUZJTEU9JHtUTVBESVJ9L2FiaV92ZXJzaW9uClNBTklUWV9BQklGSUxFPSIvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9hYmlfdmVyc2lvbiIKIyBsaWJkaXI9JHtleGVj
X3ByZWZpeH0vJHtiYXNlbGlifQpleHBvcnQgbGliZGlyPSIvdXNyL2xpYiIKIyBTRVBQVUtVX05F
V1JFUE9SVD1Ob25lCiMgRElTVFJPT1ZFUlJJREVTPSR7QGQuZ2V0VmFyKCdESVNUUk8nLCBUcnVl
KSBvciAnJ30KRElTVFJPT1ZFUlJJREVTPSJwb2t5IgojIFFFTVVfT1BUSU9OU19lNTUwMD0tY3B1
IGU1NTAwClFFTVVfT1BUSU9OU19lNTUwMD0iLWNwdSBlNTUwMCIKIyBBTExPV19FTVBUWV8ke1BO
fS1kZXY9MQpBTExPV19FTVBUWV9iYmxheWVycy1kZXY9IjEiCiMgQ09NTUVSQ0lBTF9RVD0KIyBi
YXNlX3ByZWZpeD0KIyBBU05FRURFRF9wbi14c2VydmVyLWtkcml2ZS14b21hcD0KIyBNRVRBREFU
QV9CUkFOQ0g9JHtAYmFzZV9kZXRlY3RfYnJhbmNoKGQpfQpNRVRBREFUQV9CUkFOQ0g9Iihub2Jy
YW5jaCkiCiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3Nzc2RrLWluaXRpYWw9JHtTREtHQ0NW
RVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3NzZGstaW5pdGlhbD0iNC43JSIKIyBD
Qz0ke0NDQUNIRX0ke0hPU1RfUFJFRklYfWdjYyAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9P
UFRJT05TfQpleHBvcnQgQ0M9ImFybS1wb2t5LWxpbnV4LWdudWVhYmktZ2NjICAtbWFyY2g9YXJt
djV0ZSAgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsgIC1tdHVuZT1hcm05MjZlai1zIC0tc3lzcm9v
dD0vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0i
CiMgQkJfSEFTSENPTkZJR19XSElURUxJU1Q9JHtCQl9IQVNIQkFTRV9XSElURUxJU1R9IERBVEUg
VElNRSBTRVNTSU9OX01BTkFHRVIgREJVU19TRVNTSU9OX0JVU19BRERSRVNTIFNTSF9BR0VOVF9Q
SUQgWERHX1NFU1NJT05fQ09PS0lFIFNTSF9BVVRIX1NPQ0sgWEFVVEhPUklUWSBQU0VVRE9fQlVJ
TEQKQkJfSEFTSENPTkZJR19XSElURUxJU1Q9IlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tI
QVNIIEJCUEFUSCBETF9ESVIgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxF
X0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gVVNFUiBGSUxFU1BBVEggU1RBR0lOR19E
SVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgUFJTRVJWX1BP
UlQgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExF
TF9NQUtFIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBEQVRFIFRJTUUgU0VT
U0lPTl9NQU5BR0VSIERCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyBTU0hfQUdFTlRfUElEIFhER19T
RVNTSU9OX0NPT0tJRSBTU0hfQVVUSF9TT0NLIFhBVVRIT1JJVFkgUFNFVURPX0JVSUxEIgojIFRI
SVNESVI9JHtAb3MucGF0aC5kaXJuYW1lKGQuZ2V0VmFyKCdGSUxFJywgVHJ1ZSkpfQpUSElTRElS
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL2NvbmYiCiMgUFJFRkVSUkVEX1BST1ZJ
REVSX3ZpcnR1YWwvJHtTREtfUFJFRklYfWxpYmMtaW5pdGlhbC1uYXRpdmVzZGs9JHtUQ0xJQkN9
LWluaXRpYWwtbmF0aXZlc2RrClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3g4Nl82NC1wb2t5
c2RrLWxpbnV4LWxpYmMtaW5pdGlhbC1uYXRpdmVzZGs9ImVnbGliYy1pbml0aWFsLW5hdGl2ZXNk
ayIKIyBIR0RJUj0ke0NPX0RJUn0vaGcKSEdESVI9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvZG93bmxvYWRzL2hnIgojIFBBQ0tBR0VfRVhUUkFfQVJDSFM9JHtQQUNLQUdFX0VYVFJB
X0FSQ0hTX3R1bmUtJHtERUZBVUxUVFVORX19ClBBQ0tBR0VfRVhUUkFfQVJDSFM9ImFybSBhcm12
NCBhcm12NHQgYXJtdjUgYXJtdjV0IGFybXY1ZSBhcm12NXRlIgojIFBBQ0tBR0VfRVhUUkFfQVJD
SFNfdHVuZS1hcm12NXQtdmZwPSR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1dH0gYXJt
djUtdmZwIGFybXY1dC12ZnAKUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1dC12ZnA9ImFy
bSBhcm12NCBhcm12NHQgYXJtdjUgYXJtdjV0IGFybXY1LXZmcCBhcm12NXQtdmZwIgojIFNES0dD
Q1ZFUlNJT049JHtHQ0NWRVJTSU9OfQpTREtHQ0NWRVJTSU9OPSI0LjclIgojIERFUExPWV9ESVJf
SU1BR0U9JHtERVBMT1lfRElSfS9pbWFnZXMKREVQTE9ZX0RJUl9JTUFHRT0iL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L2ltYWdlcyIKIyBJTUFHRV9MSU5LX05BTUU9
JHtJTUFHRV9CQVNFTkFNRX0tJHtNQUNISU5FfQpJTUFHRV9MSU5LX05BTUU9ImJibGF5ZXJzLW15
cWVtdWFybSIKIyBNVUxUSUxJQl9WQVJJQU5UUz0KIyBQUkVNSVJST1JTPWJ6cjovLy4qLy4qICAg
aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBjdnM6
Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNl
cy8gXG4gZ2l0Oi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWly
cm9yL3NvdXJjZXMvIFxuIGhnOi8vLiovLiogICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2pl
Y3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBvc2M6Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMu
eW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gcDQ6Ly8uKi8uKiAgICBodHRwOi8v
ZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIHN2azovLy4qLy4q
ICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBz
dm46Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291
cmNlcy8gXG4KUFJFTUlSUk9SUz0iYnpyOi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3Rv
cHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIGN2czovLy4qLy4qICAgaHR0cDovL2Rvd25s
b2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBnaXQ6Ly8uKi8uKiAgIGh0
dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gaGc6Ly8u
Ki8uKiAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMv
IFxuIG9zYzovLy4qLy4qICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJv
ci9zb3VyY2VzLyBcbiBwNDovLy4qLy4qICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0
Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gc3ZrOi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlv
Y3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuIHN2bjovLy4qLy4qICAgaHR0cDovL2Rv
d25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiIKIyBCVUlMRF9PUz0k
e0Bvcy51bmFtZSgpWzBdLmxvd2VyKCl9CkJVSUxEX09TPSJsaW51eCIKIyBQU0VVRE9fRElTQUJM
RUQ9MQpleHBvcnQgUFNFVURPX0RJU0FCTEVEPSIxIgojIElNQUdFX0ZTVFlQRVM9IHRhci5iejIg
ZXh0MwpJTUFHRV9GU1RZUEVTPSJ0YXIuYnoyIGV4dDMiCiMgQkJfU0VUU0NFTkVfVkVSSUZZX0ZV
TkNUSU9OPXN5c3Jvb3RfY2hlY2toYXNoZXMKQkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OPSJz
eXNyb290X2NoZWNraGFzaGVzIgojIE5BVElWRUxTQlNUUklORz1VYnVudHUtMTIuMDQKTkFUSVZF
TFNCU1RSSU5HPSJVYnVudHUtMTIuMDQiCiMgUEFDS0FHRV9DTEFTU0VTPXBhY2thZ2VfcnBtClBB
Q0tBR0VfQ0xBU1NFUz0icGFja2FnZV9ycG0iCiMgRkFLRVJPT1RFTlY9UFNFVURPX1BSRUZJWD0k
e1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9IFBTRVVET19MT0NBTFNUQVRFRElS
PSR7UFNFVURPX0xPQ0FMU1RBVEVESVJ9IFBTRVVET19QQVNTV0Q9JHtQU0VVRE9fUEFTU1dEfSBQ
U0VVRE9fTk9TWU1MSU5LRVhQPTEgUFNFVURPX0RJU0FCTEVEPTAKRkFLRVJPT1RFTlY9IlBTRVVE
T19QUkVGSVg9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2
XzY0LWxpbnV4L3VzciBQU0VVRE9fTE9DQUxTVEFURURJUj0vaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEu
MC1yMC9wc2V1ZG8vIFBTRVVET19QQVNTV0Q9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtIFBTRVVET19OT1NZTUxJTktFWFA9MSBQU0VVRE9fRElT
QUJMRUQ9MCIKIyBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11eDg2PTMuNCUKUFJF
RkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXg4Nj0iMy40JSIKIyBTVEFHSU5HX0xPQURF
Ul9ESVI9JHtTVEFHSU5HX0RJUl9IT1NUfS9sb2FkZXIKU1RBR0lOR19MT0FERVJfRElSPSIvaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vbG9hZGVy
IgojIFNTVEFURV9QS0c9JHtTU1RBVEVfRElSfS8ke1NTVEFURV9QS0dOQU1FfQpTU1RBVEVfUEtH
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3NzdGF0ZS1jYWNoZS9JTi9zc3RhdGUt
YmJsYXllcnMtYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmktMS4wLXIwLWFybXY1dGUtMi1JTlZB
TElEIgojIFRPT0xDSEFJTl9PUFRJT05TPSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9
ClRPT0xDSEFJTl9PUFRJT05TPSItLXN5c3Jvb3Q9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtIgojIExJQkNfREVQRU5ERU5DSUVTPWxpYnNlZ2Zh
dWx0IAkJICAgICBlZ2xpYmMgCQkgICAgIGVnbGliYy1kYmcgCQkgICAgIGVnbGliYy1kZXYgCQkg
ICAgIGVnbGliYy11dGlscyAJCSAgICAgZWdsaWJjLXRocmVhZC1kYiAJCSAgICAgJHtAZ2V0X2xp
YmNfbG9jYWxlc19kZXBlbmRlbmNpZXMoZCl9CkxJQkNfREVQRU5ERU5DSUVTPSJsaWJzZWdmYXVs
dCAJCSAgICAgZWdsaWJjIAkJICAgICBlZ2xpYmMtZGJnIAkJICAgICBlZ2xpYmMtZGV2IAkJICAg
ICBlZ2xpYmMtdXRpbHMgCQkgICAgIGVnbGliYy10aHJlYWQtZGIgCQkgICAgIAllZ2xpYmMtbG9j
YWxlZGF0YS1pMThuIAllZ2xpYmMtZ2NvbnYtaWJtODUwIAllZ2xpYmMtZ2NvbnYtY3AxMjUyIAll
Z2xpYmMtZ2NvbnYtaXNvODg1OS0xIAllZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSIKIyBESVNUUk9f
RVhUUkFfUkRFUEVORFM9ICAke1BPS1lfREVGQVVMVF9FWFRSQV9SREVQRU5EU30KRElTVFJPX0VY
VFJBX1JERVBFTkRTPSJ0YXNrLWNvcmUtYm9vdCIKIyBMT0dOQU1FPWxzZXJiYW4KZXhwb3J0IExP
R05BTUU9ImxzZXJiYW4iCiMgT0VfVEVSTUlOQUw9YXV0bwpPRV9URVJNSU5BTD0iYXV0byIKIyBQ
UkVGRVJSRURfUFJPVklERVJfbGludXgtbGliYy1oZWFkZXJzPWxpbnV4LWxpYmMtaGVhZGVycwpQ
UkVGRVJSRURfUFJPVklERVJfbGludXgtbGliYy1oZWFkZXJzPSJsaW51eC1saWJjLWhlYWRlcnMi
CiMgRExfRElSPSR7VE9QRElSfS9kb3dubG9hZHMKRExfRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL2Rvd25sb2FkcyIKIyBPRV9URVJNSU5BTF9FWFBPUlRTPVhBVVRIT1JJVFkg
U0hFTEwgREJVU19TRVNTSU9OX0JVU19BRERSRVNTIERJU1BMQVkgRVhUUkFfT0VNQUtFIFNDUkVF
TkRJUgpPRV9URVJNSU5BTF9FWFBPUlRTPSJYQVVUSE9SSVRZIFNIRUxMIERCVVNfU0VTU0lPTl9C
VVNfQUREUkVTUyBESVNQTEFZIEVYVFJBX09FTUFLRSBTQ1JFRU5ESVIiCiMgQ0FDSEU9L2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvY2FjaGUvZGVmYXVsdC1lZ2xpYmMvbXlxZW11
YXJtCkNBQ0hFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9jYWNoZS9kZWZh
dWx0LWVnbGliYy9teXFlbXVhcm0iCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGlieDEx
PWxpYngxMS10cmltClBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYngxMT0ibGlieDExLXRy
aW0iCiMgVEFSR0VUX1BSRUZJWD0ke1RBUkdFVF9TWVN9LQpUQVJHRVRfUFJFRklYPSJhcm0tcG9r
eS1saW51eC1nbnVlYWJpLSIKIyBBU05FRURFRF9wbi1kaXN0Y2M9CiMgTUFDSElORV9GRUFUVVJF
Uz1hcG0gYWxzYSBwY21jaWEgYmx1ZXRvb3RoIGlyZGEgdXNiZ2FkZ2V0IHNjcmVlbgpNQUNISU5F
X0ZFQVRVUkVTPSJhcG0gYWxzYSBwY21jaWEgYmx1ZXRvb3RoIGlyZGEgdXNiZ2FkZ2V0IHNjcmVl
biIKIyBTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU49JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5k
aXJfbmF0aXZlfS8ke1RVTkVfUEtHQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSR7VEFSR0VUX09TfQpT
VEFHSU5HX0JJTkRJUl9UT09MQ0hBSU49Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL2FybXY1dGUtcG9reS1saW51eC1nbnVl
YWJpIgojIFRBUkdFVF9MREZMQUdTPS1XbCwtTzEgJHtUQVJHRVRfTElOS19IQVNIX1NUWUxFfSAk
e0FTTkVFREVEfQpleHBvcnQgVEFSR0VUX0xERkxBR1M9Ii1XbCwtTzEgLVdsLC0taGFzaC1zdHls
ZT1nbnUgLVdsLC0tYXMtbmVlZGVkIgojIEhPU1RfT1M9JHtUQVJHRVRfT1N9CkhPU1RfT1M9Imxp
bnV4LWdudWVhYmkiCiMgRD0ke1dPUktESVJ9L2ltYWdlCkQ9Ii9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMt
MS4wLXIwL2ltYWdlIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRlYi12ZnA9JHtUVU5FX0ZF
QVRVUkVTX3R1bmUtYXJtdjV0ZS12ZnB9IGJpZ2VuZGlhbgpUVU5FX0ZFQVRVUkVTX3R1bmUtYXJt
djV0ZWItdmZwPSJhcm12NSB2ZnAgZHNwIHRodW1iIGJpZ2VuZGlhbiIKIyBURVJNPXh0ZXJtCmV4
cG9ydCBURVJNPSJ4dGVybSIKIyBHUk9VUF9sb2NhbGU9Tm9uZQojIE1VTFRJTUFDSF9IT1NUX1NZ
Uz0ke1BBQ0tBR0VfQVJDSH0ke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9Ck1VTFRJTUFDSF9IT1NU
X1NZUz0iYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3Zp
cnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcz11cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aApQUkVG
RVJSRURfUFJPVklERVJfdmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzPSJ1cGRhdGUtYWx0ZXJu
YXRpdmVzLWN3b3J0aCIKIyBUQVJHRVRfRlBVPSR7QGQuZ2V0VmFyKCdBUk1QS0dTRlhfRlBVJywg
VHJ1ZSkuc3RyaXAoJy0nKSBvciAnc29mdCd9ClRBUkdFVF9GUFU9InNvZnQiCiMgRE9UREVCVUct
ZGJnPSR7YmluZGlyfS8uZGVidWcgJHtzYmluZGlyfS8uZGVidWcgJHtsaWJleGVjZGlyfS8uZGVi
dWcgJHtsaWJkaXJ9Ly5kZWJ1ZyAke2Jhc2VfYmluZGlyfS8uZGVidWcgJHtiYXNlX3NiaW5kaXJ9
Ly5kZWJ1ZyAke2Jhc2VfbGliZGlyfS8uZGVidWcgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcgJHts
aWJkaXJ9L21hdGNoYm94LXBhbmVsLy5kZWJ1ZyAvdXNyL3NyYy9kZWJ1ZwpET1RERUJVRy1kYmc9
Ii91c3IvYmluLy5kZWJ1ZyAvdXNyL3NiaW4vLmRlYnVnIC91c3IvbGliZXhlYy8uZGVidWcgL3Vz
ci9saWIvLmRlYnVnIC9iaW4vLmRlYnVnIC9zYmluLy5kZWJ1ZyAvbGliLy5kZWJ1ZyAvdXNyL2xp
Yi9iYmxheWVycy8uZGVidWcgL3Vzci9saWIvbWF0Y2hib3gtcGFuZWwvLmRlYnVnIC91c3Ivc3Jj
L2RlYnVnIgojIFNUQUdJTkdfRElSX05BVElWRT0ke1NUQUdJTkdfRElSfS8ke0JVSUxEX1NZU30K
U1RBR0lOR19ESVJfTkFUSVZFPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9z
eXNyb290cy94ODZfNjQtbGludXgiCiMgUEFDS0FHRV9BUkNIUz1hbGwgYW55IG5vYXJjaCAke1BB
Q0tBR0VfRVhUUkFfQVJDSFN9ICR7TUFDSElORV9BUkNIfQpQQUNLQUdFX0FSQ0hTPSJhbGwgYW55
IG5vYXJjaCBhcm0gYXJtdjQgYXJtdjR0IGFybXY1IGFybXY1dCBhcm12NWUgYXJtdjV0ZSBteXFl
bXVhcm0iCiMgVENNT0RFPWRlZmF1bHQKVENNT0RFPSJkZWZhdWx0IgojIERFUExPWV9ESVI9JHtU
TVBESVJ9L2RlcGxveQpERVBMT1lfRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L3RtcC9kZXBsb3kiCiMgQVNORUVERURfcG4tcGNpdXRpbHM9CiMgUEFDS0FHRV9BUkNIPSR7VFVO
RV9QS0dBUkNIfQpQQUNLQUdFX0FSQ0g9ImFybXY1dGUiCiMgTUFDSElORV9FWFRSQV9SREVQRU5E
Uz0KIyBFWFRSQV9PRUNPTkY9CiMgUUVNVV9PUFRJT05TX2U1MDB2Mj0tY3B1IGU1MDB2MgpRRU1V
X09QVElPTlNfZTUwMHYyPSItY3B1IGU1MDB2MiIKIyBodHRwX3Byb3h5PXByb3h5LWpmLmludGVs
LmNvbTo5MTEKaHR0cF9wcm94eT0icHJveHktamYuaW50ZWwuY29tOjkxMSIKIyBTSExJQlNXT1JL
RElSPSR7V09SS0RJUn0vc2hsaWJzClNITElCU1dPUktESVI9Ii9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMt
MS4wLXIwL3NobGlicyIKIyBBU05FRURFRF9wbi1wdXp6bGVzPQojIFNJR0dFTl9FWENMVURFUkVD
SVBFU19BQklTQUZFPSAgc3lzdmluaXQtaW5pdHRhYiBzaGFkb3ctc2VjdXJldHR5IG9wa2ctY29u
ZmlnLWJhc2UgbmV0YmFzZSBmb3JtZmFjdG9yIHhzZXJ2ZXIteGY4Ni1jb25maWcgcG9pbnRlcmNh
bCBiYXNlLWZpbGVzIGtleW1hcHMgClNJR0dFTl9FWENMVURFUkVDSVBFU19BQklTQUZFPSJzeXN2
aW5pdC1pbml0dGFiIHNoYWRvdy1zZWN1cmV0dHkgb3BrZy1jb25maWctYmFzZSBuZXRiYXNlIGZv
cm1mYWN0b3IgeHNlcnZlci14Zjg2LWNvbmZpZyBwb2ludGVyY2FsIGJhc2UtZmlsZXMga2V5bWFw
cyIKIyBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUz0KIyBTVEFNUD0ke1RNUERJUn0v
c3RhbXBzLyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LyR7UEZ9ClNUQU1QPSIvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zdGFtcHMvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkv
YmJsYXllcnMtMS4wLXIwIgojIFBSQVVUT0lOWD0ke1BGfQpQUkFVVE9JTlg9ImJibGF5ZXJzLTEu
MC1yMCIKIyBCQklOQ0xVREVMT0dTPXllcwpCQklOQ0xVREVMT0dTPSJ5ZXMiCiMgUFJFRkVSUkVE
X1BST1ZJREVSX3ZpcnR1YWwvbGliaW50bD1lZ2xpYmMKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1
YWwvbGliaW50bD0iZWdsaWJjIgojIEJVSUxEX0xEX0FSQ0g9CiMgZG9fcGFja2FnZV93cml0ZV90
YXI9Tm9uZQojIEJCX0RFRkFVTFRfVEFTSz1idWlsZApCQl9ERUZBVUxUX1RBU0s9ImJ1aWxkIgoj
IFNUQUdJTkdfREFUQURJUl9OQVRJVkU9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25h
dGl2ZX0KU1RBR0lOR19EQVRBRElSX05BVElWRT0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZSIKIyBSUE1ERVBTPSR7U1RB
R0lOR19MSUJESVJfTkFUSVZFfS9ycG0vYmluL3JwbWRlcHMtb2Vjb3JlIC0tbWFjcm9zICR7U1RB
R0lOR19MSUJESVJfTkFUSVZFfS9ycG0vbWFjcm9zIC0tZGVmaW5lICdfcnBtZmNfbWFnaWNfcGF0
aCAke1NUQUdJTkdfRElSX05BVElWRX0ke2RhdGFkaXJfbmF0aXZlfS9taXNjL21hZ2ljLm1nYycg
LS1ycG1wb3B0ICR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vcnBtcG9wdApSUE1ERVBTPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgv
dXNyL2xpYi9ycG0vYmluL3JwbWRlcHMtb2Vjb3JlIC0tbWFjcm9zIC9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliL3JwbS9tYWNy
b3MgLS1kZWZpbmUgJ19ycG1mY19tYWdpY19wYXRoIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvbWlzYy9tYWdpYy5tZ2Mn
IC0tcnBtcG9wdCAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94
ODZfNjQtbGludXgvdXNyL2xpYi9ycG0vcnBtcG9wdCIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJt
djV0ZWI9JHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0ZX0gYmlnZW5kaWFuClRVTkVfRkVBVFVS
RVNfdHVuZS1hcm12NXRlYj0iYXJtdjUgZHNwIHRodW1iIGJpZ2VuZGlhbiIKIyBRQV9MT0dGSUxF
PSR7VE1QRElSfS9xYS5sb2cKUUFfTE9HRklMRT0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvcWEubG9nIgojIFBTRVVET19MT0NBTFNUQVRFRElSPSR7V09SS0RJUn0vcHNldWRv
LwpQU0VVRE9fTE9DQUxTVEFURURJUj0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90
bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAvcHNldWRv
LyIKIyBYREdfU0VTU0lPTl9DT09LSUU9NTJlYjk4MWE3Y2ZhY2EyMmExOTY1MGI4MDAwMDAwMDct
MTM0MzgzOTg1OS4xNDE1ODUtMjExODQyMTY0MApYREdfU0VTU0lPTl9DT09LSUU9IjUyZWI5ODFh
N2NmYWNhMjJhMTk2NTBiODAwMDAwMDA3LTEzNDM4Mzk4NTkuMTQxNTg1LTIxMTg0MjE2NDAiCiMg
U1JDUkVWPUlOVkFMSUQKU1JDUkVWPSJJTlZBTElEIgojIERJU1BMQVk9OjAKRElTUExBWT0iOjAi
CiMgYmFzZV9saWJkaXJfbmF0aXZlc2RrPS9saWIKYmFzZV9saWJkaXJfbmF0aXZlc2RrPSIvbGli
IgojIFBBQ0tBR0VGVU5DUz1wYWNrYWdlX2dldF9hdXRvX3ByICAgICAgICAgICAgICAgICBwZXJm
b3JtX3BhY2thZ2Vjb3B5ICAgICAgICAgICAgICAgICAke1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5D
U30gICAgICAgICAgICAgICAgIHBhY2thZ2VfZG9fc3BsaXRfbG9jYWxlcyAgICAgICAgICAgICAg
ICAgc3BsaXRfYW5kX3N0cmlwX2ZpbGVzICAgICAgICAgICAgICAgICBmaXh1cF9wZXJtcyAgICAg
ICAgICAgICAgICAgcG9wdWxhdGVfcGFja2FnZXMgICAgICAgICAgICAgICAgIHBhY2thZ2VfZG9f
ZmlsZWRlcHMgICAgICAgICAgICAgICAgIHBhY2thZ2VfZG9fc2hsaWJzICAgICAgICAgICAgICAg
ICBwYWNrYWdlX2RvX3BrZ2NvbmZpZyAgICAgICAgICAgICAgICAgcmVhZF9zaGxpYmRlcHMgICAg
ICAgICAgICAgICAgIHBhY2thZ2VfZGVwY2hhaW5zICAgICAgICAgICAgICAgICBlbWl0X3BrZ2Rh
dGEgIGRvX3BhY2thZ2VfcWEgClBBQ0tBR0VGVU5DUz0icGFja2FnZV9nZXRfYXV0b19wciAgICAg
ICAgICAgICAgICAgcGVyZm9ybV9wYWNrYWdlY29weSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrYWdlX2RvX3NwbGl0X2xvY2FsZXMgICAgICAgICAgICAgICAgIHNwbGl0X2Fu
ZF9zdHJpcF9maWxlcyAgICAgICAgICAgICAgICAgZml4dXBfcGVybXMgICAgICAgICAgICAgICAg
IHBvcHVsYXRlX3BhY2thZ2VzICAgICAgICAgICAgICAgICBwYWNrYWdlX2RvX2ZpbGVkZXBzICAg
ICAgICAgICAgICAgICBwYWNrYWdlX2RvX3NobGlicyAgICAgICAgICAgICAgICAgcGFja2FnZV9k
b19wa2djb25maWcgICAgICAgICAgICAgICAgIHJlYWRfc2hsaWJkZXBzICAgICAgICAgICAgICAg
ICBwYWNrYWdlX2RlcGNoYWlucyAgICAgICAgICAgICAgICAgZW1pdF9wa2dkYXRhICBkb19wYWNr
YWdlX3FhIgojIFVTUkJJTlBBVEhfY2xhc3MtbmF0aXZlc2RrPS91c3IvYmluClVTUkJJTlBBVEhf
Y2xhc3MtbmF0aXZlc2RrPSIvdXNyL2JpbiIKIyBQV0Q9L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9idWlsZApleHBvcnQgUFdEPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkIgojIEJV
SUxEQ0ZHX05FRURFRFZBUlM9VEFSR0VUX0FSQ0ggVEFSR0VUX09TCkJVSUxEQ0ZHX05FRURFRFZB
UlM9IlRBUkdFVF9BUkNIIFRBUkdFVF9PUyIKIyBHQ0NWRVJTSU9OPTQuNyUKR0NDVkVSU0lPTj0i
NC43JSIKIyBCQVNFTElCX3Bvd2VycGM2ND1saWI2NApCQVNFTElCX3Bvd2VycGM2ND0ibGliNjQi
CiMgRVJST1JfUUE9ZGV2LXNvIGRlYnVnLWRlcHMgZGV2LWRlcHMgZGVidWctZmlsZXMgYXJjaCBs
YTIgcGtnY29uZmlnIGxhIHBlcm1zIHVzZWxlc3MtcnBhdGhzIHJwYXRocyBzdGF0aWNkZXYgbGRm
bGFncwpFUlJPUl9RQT0iZGV2LXNvIGRlYnVnLWRlcHMgZGV2LWRlcHMgZGVidWctZmlsZXMgYXJj
aCBsYTIgcGtnY29uZmlnIGxhIHBlcm1zIHVzZWxlc3MtcnBhdGhzIHJwYXRocyBzdGF0aWNkZXYg
bGRmbGFncyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbD1tZXNhLWRyaQpQUkVG
RVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbD0ibWVzYS1kcmkiCiMgR1BFX1NWTj1zdm46Ly9w
cm9qZWN0cy5saW51eHRvZ28ub3JnL3N2bi9ncGUvdHJ1bmsvYmFzZTttb2R1bGU9JHtQTn0KR1BF
X1NWTj0ic3ZuOi8vcHJvamVjdHMubGludXh0b2dvLm9yZy9zdm4vZ3BlL3RydW5rL2Jhc2U7bW9k
dWxlPWJibGF5ZXJzIgojIEVYVEVORFBLR1Y9JHtFWFRFTkRQS0dFVkVSfSR7UEtHVn0tJHtQS0dS
fQpFWFRFTkRQS0dWPSIxLjAtcjAiCiMgQ1BQRkxBR1M9JHtUQVJHRVRfQ1BQRkxBR1N9CiMgUFJF
RkVSUkVEX1ZFUlNJT05fZ3ppcC1uYXRpdmU9MS41ClBSRUZFUlJFRF9WRVJTSU9OX2d6aXAtbmF0
aXZlPSIxLjUiCiMgZG9jZGlyPSR7ZGF0YWRpcn0vZG9jCmV4cG9ydCBkb2NkaXI9Ii91c3Ivc2hh
cmUvZG9jIgojIFFBUEFUSFRFU1Q9Tm9uZQojIFNTVEFURVRBU0tTPSBkb19wb3B1bGF0ZV9zeXNy
b290IGRvX3BhY2thZ2UgZG9fcGFja2FnZV93cml0ZV9ycG0gZG9fcG9wdWxhdGVfbGljClNTVEFU
RVRBU0tTPSJkb19wb3B1bGF0ZV9zeXNyb290IGRvX3BhY2thZ2UgZG9fcGFja2FnZV93cml0ZV9y
cG0gZG9fcG9wdWxhdGVfbGljIgojIFNPTElCU19kYXJ3aW49LiouZHlsaWIKU09MSUJTX2Rhcndp
bj0iLiouZHlsaWIiCiMgU1NUQVRFX01BTk1BQ0g9JHtTU1RBVEVfUEtHQVJDSH0KU1NUQVRFX01B
Tk1BQ0g9ImFybXY1dGUiCiMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGI9ZGIKUFJFRkVS
UkVEX1BST1ZJREVSX3ZpcnR1YWwvZGI9ImRiIgojIEJQPSR7QlBOfS0ke1BWfQpCUD0iYmJsYXll
cnMtMS4wIgojIEJCRklMRV9QQVRURVJOX25vcm1hbD1eL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rl
ci9tZXRhLwpCQkZJTEVfUEFUVEVSTl9ub3JtYWw9Il4vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L21ldGEvIgojIFhMSUJTX01JUlJPUj1odHRwOi8veGxpYnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVh
c2UKWExJQlNfTUlSUk9SPSJodHRwOi8veGxpYnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2UiCiMg
U0RLX0FSQ0g9JHtCVUlMRF9BUkNIfQpTREtfQVJDSD0ieDg2XzY0IgojIFNIRUxMPS9iaW4vYmFz
aApleHBvcnQgU0hFTEw9Ii9iaW4vYmFzaCIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC91
cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZT1vcGtnLW5hdGl2ZQpQUkVGRVJSRURfUFJPVklERVJf
dmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZT0ib3BrZy1uYXRpdmUiCiMgVFVORV9G
RUFUVVJFU190dW5lLWFybXY1dC12ZnA9YXJtdjUgdmZwClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12
NXQtdmZwPSJhcm12NSB2ZnAiCiMgREVCVUdGSUxFRElSRUNUT1JZLWRiZz0vdXNyL2xpYi9kZWJ1
ZyAvdXNyL3NyYy9kZWJ1ZwpERUJVR0ZJTEVESVJFQ1RPUlktZGJnPSIvdXNyL2xpYi9kZWJ1ZyAv
dXNyL3NyYy9kZWJ1ZyIKIyBERVBDSEFJTl9QT1NUPS1kZXYgLWRiZwpERVBDSEFJTl9QT1NUPSIt
ZGV2IC1kYmciCiMgUFJFRkVSUkVEX1BST1ZJREVSX3hmODYtdmlkZW8taW50ZWw9eGY4Ni12aWRl
by1pbnRlbApQUkVGRVJSRURfUFJPVklERVJfeGY4Ni12aWRlby1pbnRlbD0ieGY4Ni12aWRlby1p
bnRlbCIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjVoZi12ZnA9JHtUVU5FX0ZFQVRVUkVTX3R1
bmUtYXJtdjUtdmZwfSBjYWxsY29udmVudGlvbi1oYXJkClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12
NWhmLXZmcD0iYXJtdjUgdmZwIGNhbGxjb252ZW50aW9uLWhhcmQiCiMgQkJfR0VORVJBVEVfTUlS
Uk9SX1RBUkJBTExTPTAKQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPSIwIgojIFNTVEFURV9E
SVI9JHtUT1BESVJ9L3NzdGF0ZS1jYWNoZQpTU1RBVEVfRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL3NzdGF0ZS1jYWNoZSIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjUtdmZw
PWFybXY1IHZmcApUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjUtdmZwPSJhcm12NSB2ZnAiCiMgSU1B
R0VfUk9PVEZTX1NJWkU9NjU1MzYKSU1BR0VfUk9PVEZTX1NJWkU9IjY1NTM2IgojIFBBQ0tBR0Vf
RVhUUkFfQVJDSFNfdHVuZS1hcm12NWViLXZmcD0ke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1h
cm12NWItdmZwfSBhcm12NWViIGFybXY1ZWItdmZwClBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1h
cm12NWViLXZmcD0iYXJtIGFybXY0IGFybXY1IGFybXY1Yi12ZnAgYXJtdjVlYiBhcm12NWViLXZm
cCIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0ZS12ZnA9YXJtdjUgdmZwIGRzcCB0aHVtYgpU
VU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0ZS12ZnA9ImFybXY1IHZmcCBkc3AgdGh1bWIiCiMgRElT
VFJPPXBva3kKdW5zZXQgRElTVFJPCiMgQVJNX1RIVU1CX01fT1BUPSR7QFsnLW1hcm0nLCAnLW10
aHVtYiddW2QuZ2V0VmFyKCdBUk1fSU5TVFJVQ1RJT05fU0VUJywgVHJ1ZSkgPT0gJ3RodW1iJ119
CkFSTV9USFVNQl9NX09QVD0iLW1hcm0iCiMgTE9DQUxFX1NFQ1RJT049CiMgUlBNQlVJTEQ9cnBt
YnVpbGQKUlBNQlVJTEQ9InJwbWJ1aWxkIgojIExJQkNfTE9DQUxFX0RFUEVOREVOQ0lFUz0JZWds
aWJjLWxvY2FsZWRhdGEtaTE4biAJZWdsaWJjLWdjb252LWlibTg1MCAJZWdsaWJjLWdjb252LWNw
MTI1MiAJZWdsaWJjLWdjb252LWlzbzg4NTktMSAJZWdsaWJjLWdjb252LWlzbzg4NTktMTUKTElC
Q19MT0NBTEVfREVQRU5ERU5DSUVTPSJlZ2xpYmMtbG9jYWxlZGF0YS1pMThuIAllZ2xpYmMtZ2Nv
bnYtaWJtODUwIAllZ2xpYmMtZ2NvbnYtY3AxMjUyIAllZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIAll
Z2xpYmMtZ2NvbnYtaXNvODg1OS0xNSIKIyBMSUNFTlNFX0RJUkVDVE9SWT0ke0RFUExPWV9ESVJ9
L2xpY2Vuc2VzCkxJQ0VOU0VfRElSRUNUT1JZPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1
aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMiCiMgVD0ke1dPUktESVJ9L3RlbXAKVD0iL2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFi
aS9iYmxheWVycy0xLjAtcjAvdGVtcCIKIyBSREVQRU5EU19rZXJuZWwtYmFzZT0KIyBiYXNlX3Ni
aW5kaXI9JHtiYXNlX3ByZWZpeH0vc2JpbgpleHBvcnQgYmFzZV9zYmluZGlyPSIvc2JpbiIKIyBT
WVNST09UX0xPQ0s9JHtTVEFHSU5HX0RJUn0vc3RhZ2luZy5sb2NrClNZU1JPT1RfTE9DSz0iL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvc3RhZ2luZy5sb2NrIgoj
IFJQTT1ycG0KUlBNPSJycG0iCiMgQVNORUVERURfcG4taWN1PQojIFBSRUZFUlJFRF9QUk9WSURF
Ul9tYXRjaGJveC1wYW5lbD1tYXRjaGJveC1wYW5lbC0yClBSRUZFUlJFRF9QUk9WSURFUl9tYXRj
aGJveC1wYW5lbD0ibWF0Y2hib3gtcGFuZWwtMiIKIyBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjR0
PWFybXY0IHRodW1iClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NHQ9ImFybXY0IHRodW1iIgojIEdS
T1VQX2RlcGVuZGVuY2llcz1Ob25lCiMgUFJFRkVSUkVEX1ZFUlNJT049Tm9uZQojIE1BQ0hJTkVf
QVJDSD0ke0BbZC5nZXRWYXIoJ1RVTkVfUEtHQVJDSCcsIFRydWUpLCBkLmdldFZhcignTUFDSElO
RScsIFRydWUpXVtib29sKGQuZ2V0VmFyKCdNQUNISU5FJywgVHJ1ZSkpXS5yZXBsYWNlKCctJywg
J18nKX0KTUFDSElORV9BUkNIPSJteXFlbXVhcm0iCiMgQklOVVZFUlNJT049Mi4yMgpCSU5VVkVS
U0lPTj0iMi4yMiIKIyBkYXRhZGlyX25hdGl2ZT0ke3ByZWZpeF9uYXRpdmV9L3NoYXJlCmRhdGFk
aXJfbmF0aXZlPSIvdXNyL3NoYXJlIgojIFNES1BBVEhOQVRJVkU9JHtTREtQQVRIfS9zeXNyb290
cy8ke1NES19TWVN9ClNES1BBVEhOQVRJVkU9Ii9vcHQvcG9reS8xLjIrc25hcHNob3Qvc3lzcm9v
dHMveDg2XzY0LXBva3lzZGstbGludXgiCiMgTElOS0VSX0hBU0hfU1RZTEVfbWlwczY0PXN5c3YK
TElOS0VSX0hBU0hfU1RZTEVfbWlwczY0PSJzeXN2IgojIEhPTUU9L2hvbWUvbHNlcmJhbgpleHBv
cnQgSE9NRT0iL2hvbWUvbHNlcmJhbiIKIyBQUkVGRVJSRURfVkVSU0lPTl9lZ2xpYmMtaW5pdGlh
bC1uYXRpdmVzZGs9JHtFR0xJQkNWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9lZ2xpYmMtaW5p
dGlhbC1uYXRpdmVzZGs9IjIuMTYiCiMgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TPQojIFBLR19D
T05GSUdfTElCRElSPSR7UEtHX0NPTkZJR19ESVJ9CmV4cG9ydCBQS0dfQ09ORklHX0xJQkRJUj0i
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtLy91
c3IvbGliL3BrZ2NvbmZpZyIKIyBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zc3Nkaz0k
e0JJTlVWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zc3Nkaz0iMi4yMiIK
IyBCVUlMRF9DQ19BUkNIPQojIFBSRUZFUlJFRF9WRVJTSU9OX3VjbGliYy1pbml0aWFsPSR7VUNM
SUJDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fdWNsaWJjLWluaXRpYWw9IjAuOS4zMyIKIyBN
SVJST1JTPWZ0cDovLy4qLy4qICAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3Jn
L21pcnJvci9zb3VyY2VzLyBcbiBodHRwOi8vLiovLiogICAgIGh0dHA6Ly9kb3dubG9hZHMueW9j
dG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gaHR0cHM6Ly8uKi8uKiAgICBodHRwOi8v
ZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxuICAke0RFQklBTl9N
SVJST1J9CWh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLWFyY2hpdmUv
MjAxMjAzMjhUMDkyNzUyWi9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWh0dHA6Ly9z
bmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLWFyY2hpdmUvMjAxMTAxMjdUMDg0MjU3
Wi9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJST1J9CWh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4u
b3JnL2FyY2hpdmUvZGViaWFuLWFyY2hpdmUvMjAwOTA4MDJUMDA0MTUzWi9kZWJpYW4vcG9vbCBc
biAke0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxu
ICR7REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmF1LmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4g
JHtERUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuY2wuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAk
e0RFQklBTl9NSVJST1J9CWZ0cDovL2Z0cC5oci5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7
REVCSUFOX01JUlJPUn0JZnRwOi8vZnRwLmZpLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtE
RUJJQU5fTUlSUk9SfQlmdHA6Ly9mdHAuaGsuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RF
QklBTl9NSVJST1J9CWZ0cDovL2Z0cC5odS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVC
SUFOX01JUlJPUn0JZnRwOi8vZnRwLmllLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJ
QU5fTUlSUk9SfQlmdHA6Ly9mdHAuaXQuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklB
Tl9NSVJST1J9CWZ0cDovL2Z0cC5qcC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFO
X01JUlJPUn0JZnRwOi8vZnRwLm5vLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5f
TUlSUk9SfQlmdHA6Ly9mdHAucGwuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9N
SVJST1J9CWZ0cDovL2Z0cC5yby5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01J
UlJPUn0JZnRwOi8vZnRwLnNpLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtERUJJQU5fTUlS
Uk9SfQlmdHA6Ly9mdHAuZXMuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiAke0RFQklBTl9NSVJS
T1J9CWZ0cDovL2Z0cC5zZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIFxuICR7REVCSUFOX01JUlJP
Un0JZnRwOi8vZnRwLnRyLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wgXG4gJHtHTlVfTUlSUk9SfQlm
dHA6Ly9taXJyb3JzLmtlcm5lbC5vcmcvZ251IFxuICR7S0VSTkVMT1JHX01JUlJPUn0JaHR0cDov
L3d3dy5rZXJuZWwub3JnL3B1YiBcbiBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAgIGZ0
cDovL2Z0cC5mcmFua2VuLmRlL3B1Yi9jcnlwdC9taXJyb3IvZnRwLmdudXBnLm9yZy9nY3J5cHQv
IFxuIGZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0LyAgICAgZnRwOi8vZnRwLnN1cmZuZXQubmwv
cHViL3NlY3VyaXR5L2dudXBnLyBcbiBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAgIGh0
dHA6Ly9ndWx1cy5VU2hlcmJyb29rZS5jYS9wdWIvYXBwbC9HbnVQRy8gXG4gZnRwOi8vZGFudGUu
Y3Rhbi5vcmcvdGV4LWFyY2hpdmUgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS90ZXgvQ1RBTiBcbiBm
dHA6Ly9kYW50ZS5jdGFuLm9yZy90ZXgtYXJjaGl2ZSBodHRwOi8vc3Vuc2l0ZS5zdXQuYWMuanAv
cHViL2FyY2hpdmVzL2N0YW4vIFxuIGZ0cDovL2RhbnRlLmN0YW4ub3JnL3RleC1hcmNoaXZlIGh0
dHA6Ly9jdGFuLnVuc3cuZWR1LmF1LyBcbiBmdHA6Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251dGxz
IGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMvIFxuIGZ0cDovL2Z0cC5nbnV0bHMub3Jn
L3B1Yi9nbnV0bHMgZnRwOi8vZnRwLmdudXBnLm9yZy9nY3J5cHQvZ251dGxzLyBcbiBmdHA6Ly9m
dHAuZ251dGxzLm9yZy9wdWIvZ251dGxzIGh0dHA6Ly93d3cubWlycm9ycy53aXJldGFwcGVkLm5l
dC9zZWN1cml0eS9uZXR3b3JrLXNlY3VyaXR5L2dudXRscy8gXG4gZnRwOi8vZnRwLmdudXRscy5v
cmcvcHViL2dudXRscyBmdHA6Ly9mdHAubWlycm9ycy53aXJldGFwcGVkLm5ldC9wdWIvc2VjdXJp
dHkvbmV0d29yay1zZWN1cml0eS9nbnV0bHMvIFxuIGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9n
bnV0bHMgaHR0cDovL2pvc2Vmc3Nvbi5vcmcvZ251dGxzL3JlbGVhc2VzLyBcbiBodHRwOi8vZnRw
LmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGh0dHA6Ly9taXJyb3Iuc3dpdGNoLmNoL2Z0
cC9taXJyb3IvaW5mb3ppcC9zcmMvIFxuIGh0dHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZv
emlwL3NyYy8gZnRwOi8vc3Vuc2l0ZS5pY20uZWR1LnBsL3B1Yi91bml4L2FyY2hpdmluZy9pbmZv
LXppcC9zcmMvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xz
b2YvICBmdHA6Ly9mdHAuY2VyaWFzLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvc3lzdXRpbHMv
bHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8g
IGZ0cDovL2Z0cC50YXUuYWMuaWwvcHViL3VuaXgvYWRtaW4vIFxuIGZ0cDovL2xzb2YuaXRhcC5w
dXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuY2VydC5kZm4uZGUvcHVi
L3Rvb2xzL2FkbWluL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29s
cy91bml4L2xzb2YvICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L3Rvb2xzL2xzb2Yv
IFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6
Ly9mdHAua2Fpem8ub3JnL3B1Yi9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9w
dWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnR1LWRhcm1zdGFkdC5kZS9wdWIvc3lzYWRt
aW4vbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNv
Zi8gIGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9zaXRlcy92aWMuY2MucHVyZHVlLmVkdS90b29scy91
bml4L2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xz
b2YvICBmdHA6Ly9nZC50dXdpZW4uYWMuYXQvdXRpbHMvYWRtaW4tdG9vbHMvbHNvZi8gXG4gZnRw
Oi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL3N1bnNp
dGUudWFsYmVydGEuY2EvcHViL01pcnJvci9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVl
LmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vdGhlLndpcmV0YXBwZWQubmV0L3B1Yi9z
ZWN1cml0eS9ob3N0LXNlY3VyaXR5L2xzb2YvIFxuIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0
ICBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QgXG4gaHR0cDovL2Rvd25sb2Fkcy5zb3Vy
Y2Vmb3JnZS5uZXQvd2F0Y2hkb2cvIGh0dHA6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjLyBcbiBj
dnM6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9z
b3VyY2VzLyBcbiBzdm46Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qu
b3JnL21pcnJvci9zb3VyY2VzLyBcbiBnaXQ6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55
b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBoZzovLy4qLy4qICAgICAgaHR0cDov
L2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBienI6Ly8uKi8u
KiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBc
biBzdms6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJv
ci9zb3VyY2VzLyBcbiBwNDovLy4qLy4qICAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2pl
Y3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBvc2M6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fk
cy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBodHRwcz8kOi8vLiovLiogaHR0
cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBmdHA6Ly8u
Ki8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2Vz
LyBcbiBjdnM6Ly8uKi8uKiAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXG4g
c3ZuOi8vLiovLiogICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxuIGdpdDov
Ly4qLy4qICAgICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcbiBoZzovLy4qLy4q
ICAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXG4gYnpyOi8vLiovLiogICAg
IGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxuIHN2azovLy4qLy4qICAgICBodHRw
Oi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcbiBwNDovLy4qLy4qICAgICAgaHR0cDovL3Nv
dXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXG4gb3NjOi8vLiovLiogICAgIGh0dHA6Ly9zb3VyY2Vz
Lm9wZW5lbWJlZGRlZC5vcmcvIFxuIGh0dHBzPyQ6Ly8uKi8uKiBodHRwOi8vc291cmNlcy5vcGVu
ZW1iZWRkZWQub3JnLyBcbiBmdHA6Ly8uKi8uKiAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVk
ZGVkLm9yZy8gXG4gCk1JUlJPUlM9ImZ0cDovLy4qLy4qICAgICAgaHR0cDovL2Rvd25sb2Fkcy55
b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBodHRwOi8vLiovLiogICAgIGh0dHA6
Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gaHR0cHM6Ly8u
Ki8uKiAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMv
IFxuICBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlodHRwOi8vc25hcHNob3QuZGVi
aWFuLm9yZy9hcmNoaXZlL2RlYmlhbi1hcmNoaXZlLzIwMTIwMzI4VDA5Mjc1MlovZGViaWFuL3Bv
b2wgXG4gZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wJaHR0cDovL3NuYXBzaG90LmRl
Ymlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4tYXJjaGl2ZS8yMDExMDEyN1QwODQyNTdaL2RlYmlhbi9w
b29sIFxuIGZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sCWh0dHA6Ly9zbmFwc2hvdC5k
ZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLWFyY2hpdmUvMjAwOTA4MDJUMDA0MTUzWi9kZWJpYW4v
cG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuZGUuZGVi
aWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlm
dHA6Ly9mdHAuYXUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9y
Zy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuY2wuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6
Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuaHIuZGViaWFuLm9yZy9kZWJp
YW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuZmku
ZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9v
bAlmdHA6Ly9mdHAuaGsuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFu
Lm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuaHUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBm
dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuaWUuZGViaWFuLm9yZy9k
ZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAu
aXQuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4v
cG9vbAlmdHA6Ly9mdHAuanAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGVi
aWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAubm8uZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBc
biBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAucGwuZGViaWFuLm9y
Zy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9m
dHAucm8uZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJp
YW4vcG9vbAlmdHA6Ly9mdHAuc2kuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAu
ZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuZXMuZGViaWFuLm9yZy9kZWJpYW4vcG9v
bCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6Ly9mdHAuc2UuZGViaWFu
Lm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbAlmdHA6
Ly9mdHAudHIuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCBcbiBmdHA6Ly9mdHAuZ251Lm9yZy9nbnUJ
ZnRwOi8vbWlycm9ycy5rZXJuZWwub3JnL2dudSBcbiBodHRwOi8va2VybmVsLm9yZy9wdWIJaHR0
cDovL3d3dy5rZXJuZWwub3JnL3B1YiBcbiBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAg
IGZ0cDovL2Z0cC5mcmFua2VuLmRlL3B1Yi9jcnlwdC9taXJyb3IvZnRwLmdudXBnLm9yZy9nY3J5
cHQvIFxuIGZ0cDovL2Z0cC5nbnVwZy5vcmcvZ2NyeXB0LyAgICAgZnRwOi8vZnRwLnN1cmZuZXQu
bmwvcHViL3NlY3VyaXR5L2dudXBnLyBcbiBmdHA6Ly9mdHAuZ251cGcub3JnL2djcnlwdC8gICAg
IGh0dHA6Ly9ndWx1cy5VU2hlcmJyb29rZS5jYS9wdWIvYXBwbC9HbnVQRy8gXG4gZnRwOi8vZGFu
dGUuY3Rhbi5vcmcvdGV4LWFyY2hpdmUgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS90ZXgvQ1RBTiBc
biBmdHA6Ly9kYW50ZS5jdGFuLm9yZy90ZXgtYXJjaGl2ZSBodHRwOi8vc3Vuc2l0ZS5zdXQuYWMu
anAvcHViL2FyY2hpdmVzL2N0YW4vIFxuIGZ0cDovL2RhbnRlLmN0YW4ub3JnL3RleC1hcmNoaXZl
IGh0dHA6Ly9jdGFuLnVuc3cuZWR1LmF1LyBcbiBmdHA6Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251
dGxzIGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1Yi9nbnV0bHMvIFxuIGZ0cDovL2Z0cC5nbnV0bHMu
b3JnL3B1Yi9nbnV0bHMgZnRwOi8vZnRwLmdudXBnLm9yZy9nY3J5cHQvZ251dGxzLyBcbiBmdHA6
Ly9mdHAuZ251dGxzLm9yZy9wdWIvZ251dGxzIGh0dHA6Ly93d3cubWlycm9ycy53aXJldGFwcGVk
Lm5ldC9zZWN1cml0eS9uZXR3b3JrLXNlY3VyaXR5L2dudXRscy8gXG4gZnRwOi8vZnRwLmdudXRs
cy5vcmcvcHViL2dudXRscyBmdHA6Ly9mdHAubWlycm9ycy53aXJldGFwcGVkLm5ldC9wdWIvc2Vj
dXJpdHkvbmV0d29yay1zZWN1cml0eS9nbnV0bHMvIFxuIGZ0cDovL2Z0cC5nbnV0bHMub3JnL3B1
Yi9nbnV0bHMgaHR0cDovL2pvc2Vmc3Nvbi5vcmcvZ251dGxzL3JlbGVhc2VzLyBcbiBodHRwOi8v
ZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGh0dHA6Ly9taXJyb3Iuc3dpdGNoLmNo
L2Z0cC9taXJyb3IvaW5mb3ppcC9zcmMvIFxuIGh0dHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9p
bmZvemlwL3NyYy8gZnRwOi8vc3Vuc2l0ZS5pY20uZWR1LnBsL3B1Yi91bml4L2FyY2hpdmluZy9p
bmZvLXppcC9zcmMvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4
L2xzb2YvICBmdHA6Ly9mdHAuY2VyaWFzLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvc3lzdXRp
bHMvbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNv
Zi8gIGZ0cDovL2Z0cC50YXUuYWMuaWwvcHViL3VuaXgvYWRtaW4vIFxuIGZ0cDovL2xzb2YuaXRh
cC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuY2VydC5kZm4uZGUv
cHViL3Rvb2xzL2FkbWluL2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90
b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L3Rvb2xzL2xz
b2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBm
dHA6Ly9mdHAua2Fpem8ub3JnL3B1Yi9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVyZHVlLmVk
dS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLnR1LWRhcm1zdGFkdC5kZS9wdWIvc3lz
YWRtaW4vbHNvZi8gXG4gZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgv
bHNvZi8gIGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9zaXRlcy92aWMuY2MucHVyZHVlLmVkdS90b29s
cy91bml4L2xzb2YvIFxuIGZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4
L2xzb2YvICBmdHA6Ly9nZC50dXdpZW4uYWMuYXQvdXRpbHMvYWRtaW4tdG9vbHMvbHNvZi8gXG4g
ZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL3N1
bnNpdGUudWFsYmVydGEuY2EvcHViL01pcnJvci9sc29mLyBcbiBmdHA6Ly9sc29mLml0YXAucHVy
ZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vdGhlLndpcmV0YXBwZWQubmV0L3B1
Yi9zZWN1cml0eS9ob3N0LXNlY3VyaXR5L2xzb2YvIFxuIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9k
aXN0ICBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QgXG4gaHR0cDovL2Rvd25sb2Fkcy5z
b3VyY2Vmb3JnZS5uZXQvd2F0Y2hkb2cvIGh0dHA6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjLyBc
biBjdnM6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJv
ci9zb3VyY2VzLyBcbiBzdm46Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2pl
Y3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBnaXQ6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fk
cy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBoZzovLy4qLy4qICAgICAgaHR0
cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBienI6Ly8u
Ki8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2Vz
LyBcbiBzdms6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21p
cnJvci9zb3VyY2VzLyBcbiBwNDovLy4qLy4qICAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3By
b2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBvc2M6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25s
b2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBodHRwcz8kOi8vLiovLiog
aHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcbiBmdHA6
Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3Vy
Y2VzLyBcbiBjdnM6Ly8uKi8uKiAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8g
XG4gc3ZuOi8vLiovLiogICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxuIGdp
dDovLy4qLy4qICAgICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcbiBoZzovLy4q
Ly4qICAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXG4gYnpyOi8vLiovLiog
ICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxuIHN2azovLy4qLy4qICAgICBo
dHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcbiBwNDovLy4qLy4qICAgICAgaHR0cDov
L3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXG4gb3NjOi8vLiovLiogICAgIGh0dHA6Ly9zb3Vy
Y2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxuIGh0dHBzPyQ6Ly8uKi8uKiBodHRwOi8vc291cmNlcy5v
cGVuZW1iZWRkZWQub3JnLyBcbiBmdHA6Ly8uKi8uKiAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVt
YmVkZGVkLm9yZy8gXG4iCiMgREVTQ1JJUFRJT05fJHtQTn0tZG9jPSR7REVTQ1JJUFRJT059ICBU
aGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4KREVTQ1JJUFRJT05fYmJsYXllcnMt
ZG9jPSJiYmxheWVycyB2ZXJzaW9uIDEuMC1yMCAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3Vt
ZW50YXRpb24uIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRiPSR7VFVORV9GRUFUVVJFU190
dW5lLWFybXY1dH0gYmlnZW5kaWFuClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRiPSJhcm12NSB0
aHVtYiBiaWdlbmRpYW4iCiMgVFVORV9GRUFUVVJFU190dW5lLWFybXY1dGU9YXJtdjUgZHNwIHRo
dW1iClRVTkVfRkVBVFVSRVNfdHVuZS1hcm12NXRlPSJhcm12NSBkc3AgdGh1bWIiCiMgQ1hYPSR7
Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9ZysrICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElP
TlN9CmV4cG9ydCBDWFg9ImFybS1wb2t5LWxpbnV4LWdudWVhYmktZysrICAtbWFyY2g9YXJtdjV0
ZSAgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsgIC1tdHVuZT1hcm05MjZlai1zIC0tc3lzcm9vdD0v
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0iCiMg
U0RLX1ZFUlNJT049MS4yK3NuYXBzaG90ClNES19WRVJTSU9OPSIxLjIrc25hcHNob3QiCiMgQlVJ
TERfVkVORE9SPQojIFNTVEFURV9NQU5JRkVTVFM9JHtUTVBESVJ9L3NzdGF0ZS1jb250cm9sClNT
VEFURV9NQU5JRkVTVFM9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3NzdGF0
ZS1jb250cm9sIgojIERFUENIQUlOX1BSRT0KIyBTREtfVkVORE9SPS1wb2t5c2RrClNES19WRU5E
T1I9Ii1wb2t5c2RrIgojIEdOT01FX0dJVD1naXQ6Ly9naXQuZ25vbWUub3JnCkdOT01FX0dJVD0i
Z2l0Oi8vZ2l0Lmdub21lLm9yZyIKIyBSUFJPVklERVM9CiMgUFJFRkVSUkVEX1ZFUlNJT05fZ2Nj
LXJ1bnRpbWUtbmF0aXZlc2RrPSR7U0RLR0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2Nj
LXJ1bnRpbWUtbmF0aXZlc2RrPSI0LjclIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm12ND1hcm12
NApUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjQ9ImFybXY0IgojIEFTTkVFREVEPS1XbCwtLWFzLW5l
ZWRlZApBU05FRURFRD0iLVdsLC0tYXMtbmVlZGVkIgojIE5NPSR7SE9TVF9QUkVGSVh9bm0KZXhw
b3J0IE5NPSJhcm0tcG9reS1saW51eC1nbnVlYWJpLW5tIgojIFRVTkVfRkVBVFVSRVNfdHVuZS1h
cm12NWItdmZwPSR7VFVORV9GRUFUVVJFU190dW5lLWFybXY1LXZmcH0gYmlnZW5kaWFuClRVTkVf
RkVBVFVSRVNfdHVuZS1hcm12NWItdmZwPSJhcm12NSB2ZnAgYmlnZW5kaWFuIgojIFBLR19DT05G
SUdfUEFUSD0ke1BLR19DT05GSUdfRElSfToke1NUQUdJTkdfREFUQURJUn0vcGtnY29uZmlnCmV4
cG9ydCBQS0dfQ09ORklHX1BBVEg9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1w
L3N5c3Jvb3RzL215cWVtdWFybS8vdXNyL2xpYi9wa2djb25maWc6L2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtL3Vzci9zaGFyZS9wa2djb25maWci
CiMgUFJFRkVSUkVEX1BST1ZJREVSX2d6aXAtbmF0aXZlPXBpZ3otbmF0aXZlClBSRUZFUlJFRF9Q
Uk9WSURFUl9nemlwLW5hdGl2ZT0icGlnei1uYXRpdmUiCiMgUFJFRkVSUkVEX1BST1ZJREVSX2dk
Yj1nZGIKUFJFRkVSUkVEX1BST1ZJREVSX2dkYj0iZ2RiIgojIEJVSUxEX0FTX0FSQ0g9CiMgVENM
SUJDPWVnbGliYwpUQ0xJQkM9ImVnbGliYyIKIyBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94
c2VydmVyPXhzZXJ2ZXIteG9yZwpQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyPSJ4
c2VydmVyLXhvcmciCiMgUEtHREVTVFdPUks9JHtXT1JLRElSfS9wa2dkYXRhClBLR0RFU1RXT1JL
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1s
aW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9wa2dkYXRhIgojIFNQRFhMSUNFTlNFTUFQPU5v
bmUKIyBDT05GX1ZFUlNJT049MQpDT05GX1ZFUlNJT049IjEiCiMgUEFDS0FHRV9FWFRSQV9BUkNI
U190dW5lLWFybXY1dGUtdmZwPSR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1dC12ZnB9
IGFybXY1ZSBhcm12NXRlIGFybXY1ZS12ZnAgYXJtdjV0ZS12ZnAKUEFDS0FHRV9FWFRSQV9BUkNI
U190dW5lLWFybXY1dGUtdmZwPSJhcm0gYXJtdjQgYXJtdjR0IGFybXY1IGFybXY1dCBhcm12NS12
ZnAgYXJtdjV0LXZmcCBhcm12NWUgYXJtdjV0ZSBhcm12NWUtdmZwIGFybXY1dGUtdmZwIgojIFNU
QUdJTkdfRElSX1RBUkdFVD0ke1NUQUdJTkdfRElSfS8ke01BQ0hJTkV9ClNUQUdJTkdfRElSX1RB
UkdFVD0iL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11
YXJtIgojIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRT0wCklNQUdFX1JPT1RGU19FWFRSQV9TUEFD
RT0iMCIKIyBMQ09ORl9WRVJTSU9OPTUKTENPTkZfVkVSU0lPTj0iNSIKIyBGUkVFREVTS1RPUF9D
VlM9Y3ZzOi8vYW5vbmN2czphbm9uY3ZzQGFub25jdnMuZnJlZWRlc2t0b3Aub3JnL2N2cwpGUkVF
REVTS1RPUF9DVlM9ImN2czovL2Fub25jdnM6YW5vbmN2c0Bhbm9uY3ZzLmZyZWVkZXNrdG9wLm9y
Zy9jdnMiCiMgQlVJTERDRkdfSEVBREVSPUJ1aWxkIENvbmZpZ3VyYXRpb246CkJVSUxEQ0ZHX0hF
QURFUj0iQnVpbGQgQ29uZmlndXJhdGlvbjoiCiMgSE9TVF9BU19BUkNIPSR7VEFSR0VUX0FTX0FS
Q0h9CiMgREVCVUdfT1BUSU1JWkFUSU9OPS1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICR7REVC
VUdfRkxBR1N9IC1waXBlCkRFQlVHX09QVElNSVpBVElPTj0iLU8gLWZuby1vbWl0LWZyYW1lLXBv
aW50ZXIgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1waXBlIgojIFJQTUNPTkZf
VEFSR0VUX0JBU0U9JHtERVBMT1lfRElSX1JQTX0vc29sdmVkYgpSUE1DT05GX1RBUkdFVF9CQVNF
PSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGIi
CiMgUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1dD0ke1BBQ0tBR0VfRVhUUkFfQVJDSFNf
dHVuZS1hcm12NHR9IGFybXY1IGFybXY1dApQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjV0
PSJhcm0gYXJtdjQgYXJtdjR0IGFybXY1IGFybXY1dCIKIyBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1
bmUtYXJtdjVlaGYtdmZwPSR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1aGYtdmZwfSBh
cm12NWVoZi12ZnAKUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY1ZWhmLXZmcD0iYXJtdjVo
Zi12ZnAgYXJtdjVlaGYtdmZwIgojIFNJVEVfQ09ORl9WRVJTSU9OPTEKU0lURV9DT05GX1ZFUlNJ
T049IjEiCiMgQlVJTERfTk09JHtCVUlMRF9QUkVGSVh9bm0KZXhwb3J0IEJVSUxEX05NPSJubSIK
IyBDWFhGTEFHUz0ke1RBUkdFVF9DWFhGTEFHU30gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVu
CmV4cG9ydCBDWFhGTEFHUz0iLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10
eXBlcyAtZnBlcm1pc3NpdmUgLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIgojIFBBQ0tBR0Vf
RVhUUkFfQVJDSFNfdHVuZS1hcm12NWI9JHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjR9
IGFybXY1YgpQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjViPSJhcm0gYXJtdjQgYXJtdjVi
IgojIENPTVBBVElCTEVfTUFDSElORT1Ob25lCiMgVEFSR0VUX1ZFTkRPUj0tcG9reQpUQVJHRVRf
VkVORE9SPSItcG9reSIKIyBTQU5JVFlfVEVTVEVEX0RJU1RST1M9IFlvY3RvIChCdWlsdCBieSBQ
b2t5IDcuMCkgMS4yIFxuIFVidW50dSAxMC4wNC40IExUUyBcbiBVYnVudHUgMTEuMTAgXG4gVWJ1
bnR1IDEyLjA0IExUUyBcbiBGZWRvcmEgcmVsZWFzZSAxNSAoTG92ZWxvY2spIFxuIEZlZG9yYSBy
ZWxlYXNlIDE2IChWZXJuZSkgXG4gRmVkb3JhIHJlbGVhc2UgMTcgKEJlZWZ5IE1pcmFjbGUpIFxu
IENlbnRPUyByZWxlYXNlIDUuNiAoRmluYWwpIFxuIENlbnRPUyByZWxlYXNlIDUuNyAoRmluYWwp
IFxuIENlbnRPUyByZWxlYXNlIDYuMiAoRmluYWwpIFxuIERlYmlhbiBHTlUvTGludXggNi4wLjQg
KHNxdWVlemUpIFxuIG9wZW5TVVNFIDExLjQgXG4gb3BlblNVU0UgMTIuMSBcbiAKU0FOSVRZX1RF
U1RFRF9ESVNUUk9TPSJZb2N0byAoQnVpbHQgYnkgUG9reSA3LjApIDEuMiBcbiBVYnVudHUgMTAu
MDQuNCBMVFMgXG4gVWJ1bnR1IDExLjEwIFxuIFVidW50dSAxMi4wNCBMVFMgXG4gRmVkb3JhIHJl
bGVhc2UgMTUgKExvdmVsb2NrKSBcbiBGZWRvcmEgcmVsZWFzZSAxNiAoVmVybmUpIFxuIEZlZG9y
YSByZWxlYXNlIDE3IChCZWVmeSBNaXJhY2xlKSBcbiBDZW50T1MgcmVsZWFzZSA1LjYgKEZpbmFs
KSBcbiBDZW50T1MgcmVsZWFzZSA1LjcgKEZpbmFsKSBcbiBDZW50T1MgcmVsZWFzZSA2LjIgKEZp
bmFsKSBcbiBEZWJpYW4gR05VL0xpbnV4IDYuMC40IChzcXVlZXplKSBcbiBvcGVuU1VTRSAxMS40
IFxuIG9wZW5TVVNFIDEyLjEgXG4iCiMgVFVORV9GRUFUVVJFU190dW5lLWFybXY1dGhmYi12ZnA9
JHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjV0Yi12ZnB9IGNhbGxjb252ZW50aW9uLWhhcmQKVFVO
RV9GRUFUVVJFU190dW5lLWFybXY1dGhmYi12ZnA9ImFybXY1IHZmcCBiaWdlbmRpYW4gY2FsbGNv
bnZlbnRpb24taGFyZCIKIyBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11eDg2LTY0
PTMuNCUKUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVtdXg4Ni02ND0iMy40JSIKIyBQ
S0dfQ09ORklHX1NZU1JPT1RfRElSPSR7U1RBR0lOR19ESVJfSE9TVH0KZXhwb3J0IFBLR19DT05G
SUdfU1lTUk9PVF9ESVI9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jv
b3RzL215cWVtdWFybSIKIyBTRVBQVUtVX0FERENPTU1FTlQ9Tm9uZQojIFBPS1lRRU1VREVQUz0k
e0BiYXNlX2NvbnRhaW5zKCJJTkNPTVBBVElCTEVfTElDRU5TRSIsICJHUEx2MyIsICIiLCAicWVt
dS1jb25maWciLGQpfQpQT0tZUUVNVURFUFM9InFlbXUtY29uZmlnIgojIE9FX0lNUE9SVFM9IG9z
IHN5cyB0aW1lIG9lLnBhdGggb2UudXRpbHMgb2UuZGF0YSBvZS5wYWNrYWdlZ3JvdXAgb2Uuc3N0
YXRlc2lnIG9lLmxzYgpPRV9JTVBPUlRTPSJvcyBzeXMgdGltZSBvZS5wYXRoIG9lLnV0aWxzIG9l
LmRhdGEgb2UucGFja2FnZWdyb3VwIG9lLnNzdGF0ZXNpZyBvZS5sc2IiCiMgUE9LWV9ERUZBVUxU
X0VYVFJBX1JSRUNPTU1FTkRTPWtlcm5lbC1tb2R1bGUtYWYtcGFja2V0ClBPS1lfREVGQVVMVF9F
WFRSQV9SUkVDT01NRU5EUz0ia2VybmVsLW1vZHVsZS1hZi1wYWNrZXQiCiMgUFJFRkVSUkVEX1ZF
UlNJT05fZ2NjLWNyb3Nzc2RrPSR7U0RLR0NDVkVSU0lPTn0KUFJFRkVSUkVEX1ZFUlNJT05fZ2Nj
LWNyb3Nzc2RrPSI0LjclIgojIEZJTEVTXyR7UE59LWxvY2FsZT0ke2RhdGFkaXJ9L2xvY2FsZQpG
SUxFU19iYmxheWVycy1sb2NhbGU9Ii91c3Ivc2hhcmUvbG9jYWxlIgojIEtFRVBVSU1BR0U9eWVz
CktFRVBVSU1BR0U9InllcyIKIyBDT01NT05fTElDRU5TRV9ESVI9JHtDT1JFQkFTRX0vbWV0YS9m
aWxlcy9jb21tb24tbGljZW5zZXMKQ09NTU9OX0xJQ0VOU0VfRElSPSIvaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzIgojIFBSRUZFUlJFRF9QUk9WSURF
Ul92aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZT1wc2V1ZG8tbmF0aXZlClBSRUZFUlJFRF9QUk9WSURF
Ul92aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZT0icHNldWRvLW5hdGl2ZSIKIyBUQVJHRVRfTElOS19I
QVNIX1NUWUxFPSR7QFsnLVdsLC0taGFzaC1zdHlsZT1nbnUnLCcnXVtkLmdldFZhcignTElOS0VS
X0hBU0hfU1RZTEUnLCBUcnVlKSAhPSAnZ251J119ClRBUkdFVF9MSU5LX0hBU0hfU1RZTEU9Ii1X
bCwtLWhhc2gtc3R5bGU9Z251IgojIERJU1RST19GRUFUVVJFU19CQUNLRklMTD1wdWxzZWF1ZGlv
CkRJU1RST19GRUFUVVJFU19CQUNLRklMTD0icHVsc2VhdWRpbyIKIyBIT1NUVE9PTFNfV0hJVEVM
SVNUX0dQTHYzPQojIFNUQUdJTkdfRElSX0hPU1Q9JHtTVEFHSU5HX0RJUn0vJHtNQUNISU5FfQpT
VEFHSU5HX0RJUl9IT1NUPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNy
b290cy9teXFlbXVhcm0iCiMgRElTVFJPX0ZFQVRVUkVTX0xJQkM9JHtESVNUUk9fRkVBVFVSRVNf
TElCQ19ERUZBVUxUfQpESVNUUk9fRkVBVFVSRVNfTElCQz0iaXB2NCBpcHY2IGxpYmMtYmFja3Ry
YWNlIGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdldHMg
bGliYy1jaGFyc2V0cyBsaWJjLWNyeXB0IAkJCQkJbGliYy1jcnlwdC11ZmMgbGliYy1kYi1hbGlh
c2VzIGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0cmF2
ZXJzZSAJCQkJCWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0LWFubCBsaWJjLWxpYm0g
bGliYy1saWJtLWJpZyBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSAJCQkJCWxpYmMtbWVt
dXNhZ2UgbGliYy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxp
YmMtc3Bhd24gbGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIAkJCQkJbGliYy11dG1wIGxpYmMtdXRt
cHggbGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdleHAg
bGliYy1wb3NpeC1yZWdleHAtZ2xpYmMgCQkJCQlsaWJjLXBvc2l4LXdjaGFyLWlvIgojIFNTVEFU
RV9FWFRSQVBBVEg9CiMgQlVJTERfU1RSSVA9JHtCVUlMRF9QUkVGSVh9c3RyaXAKZXhwb3J0IEJV
SUxEX1NUUklQPSJzdHJpcCIKIyBRQURFUEVORFNfdmlydGNsYXNzLW5hdGl2ZXNkaz0KIyBVU1JC
SU5QQVRIPSR7YmluZGlyfQpVU1JCSU5QQVRIPSIvdXNyL2JpbiIKIyBUUkFOU0xBVEVEX1RBUkdF
VF9BUkNIPSR7QGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLnJlcGxhY2UoIl8iLCAiLSIp
fQpUUkFOU0xBVEVEX1RBUkdFVF9BUkNIPSJhcm0iCiMgQlVJTERTREtfQ0ZMQUdTPSR7QlVJTERT
REtfQ1BQRkxBR1N9ICR7QlVJTERfT1BUSU1JWkFUSU9OfQpCVUlMRFNES19DRkxBR1M9Ii1pc3lz
dGVtL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJt
L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSIKIyBUVU5FX1BLR0FSQ0g9JHtBUk1QS0dBUkNIfSR7QVJN
UEtHU0ZYX1RIVU1CfSR7QVJNUEtHU0ZYX0RTUH0ke0FSTVBLR1NGWF9FQUJJfSR7QVJNUEtHU0ZY
X0VORElBTn0ke0FSTVBLR1NGWF9GUFV9ClRVTkVfUEtHQVJDSD0iYXJtdjV0ZSIKIyBQUklOQz0w
ClBSSU5DPSIwIgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1j
b21waWxlcmxpYnM9Z2NjLXJ1bnRpbWUKUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYXJtLXBv
a3ktbGludXgtZ251ZWFiaS1jb21waWxlcmxpYnM9ImdjYy1ydW50aW1lIgojIFRVTkVfQ0NBUkdT
PSAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhcm12NSIsICItbWFyY2g9
YXJtdjUke0FSTVBLR1NGWF9USFVNQn0ke0FSTVBLR1NGWF9EU1B9IiwgIiIsIGQpfSAke0BiYi51
dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhcm12NCIsICItbWFyY2g9YXJtdjQke0FS
TVBLR1NGWF9USFVNQn0iLCAiIiwgZCl9ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRV
UkVTIiwgInRodW1iIiwgIiR7QVJNX1RIVU1CX01fT1BUfSIsICIiLCBkKX0gJHtAYmIudXRpbHMu
Y29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibm8tdGh1bWItaW50ZXJ3b3JrIiwgIi1tbm8tdGh1
bWItaW50ZXJ3b3JrIiwgIi1tdGh1bWItaW50ZXJ3b3JrIiwgZCl9ICR7QGJiLnV0aWxzLmNvbnRh
aW5zKCJUVU5FX0ZFQVRVUkVTIiwgInZmcCIsIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRV
UkVTIiwgImNhbGxjb252ZW50aW9uLWhhcmQiLCAiLW1mbG9hdC1hYmk9aGFyZCIsICItbWZsb2F0
LWFiaT1zb2Z0ZnAiLCBkKSwgIiIgLGQpfSAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFU
VVJFUyIsICJhcm05MjZlanMiLCAiLW10dW5lPWFybTkyNmVqLXMiLCAiIiwgZCl9ClRVTkVfQ0NB
UkdTPSItbWFyY2g9YXJtdjV0ZSAgLW1hcm0gLW10aHVtYi1pbnRlcndvcmsgIC1tdHVuZT1hcm05
MjZlai1zIgojIEdOT01FX0tFWVJJTkdfUElEPTE0NDEKR05PTUVfS0VZUklOR19QSUQ9IjE0NDEi
CiMgQkJfSEFTSEZJTEVOQU1FPSR7U1NUQVRFX0VYVFJBUEFUSH0gJHtTU1RBVEVfUEtHU1BFQ30K
QkJfSEFTSEZJTEVOQU1FPSJzc3RhdGUtYmJsYXllcnMtYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVh
YmktMS4wLXIwLWFybXY1dGUtMi0iCiMgRkVUQ0hDTURfYnpyPS91c3IvYmluL2VudiBienIKRkVU
Q0hDTURfYnpyPSIvdXNyL2Jpbi9lbnYgYnpyIgojIE1FVEFEQVRBX1JFVklTSU9OPSR7QGJhc2Vf
ZGV0ZWN0X3JldmlzaW9uKGQpfQpNRVRBREFUQV9SRVZJU0lPTj0iOGI4NzQ4YzhmOTYzOTAwYjgz
ZGMwZmRkNzc1NzU1NmY5MTdmZTRmZCIKIyBUVU5FX0ZFQVRVUkVTPSR7VFVORV9GRUFUVVJFU190
dW5lLSR7REVGQVVMVFRVTkV9fQpUVU5FX0ZFQVRVUkVTPSJhcm12NSBkc3AgdGh1bWIgYXJtOTI2
ZWpzIgojIEJVSUxEX1NZUz0ke0JVSUxEX0FSQ0h9JHtCVUlMRF9WRU5ET1J9LSR7QlVJTERfT1N9
CkJVSUxEX1NZUz0ieDg2XzY0LWxpbnV4IgojIEJCRklMRV9QUklPUklUWV95b2N0bz01CkJCRklM
RV9QUklPUklUWV95b2N0bz0iNSIKIyBIQU5ESEVMRFNfQ1ZTPWN2czovL2Fub25jdnM6YW5vbmN2
c0Bhbm9uY3ZzLmhhbmRoZWxkcy5vcmcvY3ZzCkhBTkRIRUxEU19DVlM9ImN2czovL2Fub25jdnM6
YW5vbmN2c0Bhbm9uY3ZzLmhhbmRoZWxkcy5vcmcvY3ZzIgojIGxpYmRpcl9uYXRpdmVzZGs9JHtw
cmVmaXhfbmF0aXZlc2RrfS9saWIKbGliZGlyX25hdGl2ZXNkaz0iL3Vzci9saWIiCiMgUUVNVV9P
UFRJT05TX2FybXY3YT0tY3B1IGNvcnRleC1hOApRRU1VX09QVElPTlNfYXJtdjdhPSItY3B1IGNv
cnRleC1hOCIKIyBUQ0xJQkNBUFBFTkQ9CiMgU1RBR0lOR19ESVI9JHtUTVBESVJ9L3N5c3Jvb3Rz
ClNUQUdJTkdfRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290
cyIKIyBMSU5LRVJfSEFTSF9TVFlMRV9taXBzPXN5c3YKTElOS0VSX0hBU0hfU1RZTEVfbWlwcz0i
c3lzdiIKIyBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVE
X1RBUkdFVF9BUkNIfT0ke0dDQ1ZFUlNJT059ClBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy1j
YW5hZGlhbi1hcm09IjQuNyUiCiMgR05VX01JUlJPUj1mdHA6Ly9mdHAuZ251Lm9yZy9nbnUKR05V
X01JUlJPUj0iZnRwOi8vZnRwLmdudS5vcmcvZ251IgojIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJB
X1JSRUNPTU1FTkRTPQojIFBSRUZFUlJFRF9WRVJTSU9OX2VnbGliYz0ke0VHTElCQ1ZFUlNJT059
ClBSRUZFUlJFRF9WRVJTSU9OX2VnbGliYz0iMi4xNiIKIyBCQl9TSUdOQVRVUkVfSEFORExFUj1P
RUJhc2ljSGFzaApCQl9TSUdOQVRVUkVfSEFORExFUj0iT0VCYXNpY0hhc2giCiMgTElOS0VSX0hB
U0hfU1RZTEU9Z251CkxJTktFUl9IQVNIX1NUWUxFPSJnbnUiCiMgTE9DQUxFX1VURjhfT05MWT0w
CkxPQ0FMRV9VVEY4X09OTFk9IjAiCiMgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fcWVt
dW1pcHM9My40JQpQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0b19xZW11bWlwcz0iMy40JSIK
IyBWSVJUVUFMLVJVTlRJTUVfYWxzYS1zdGF0ZT1hbHNhLXN0YXRlClZJUlRVQUwtUlVOVElNRV9h
bHNhLXN0YXRlPSJhbHNhLXN0YXRlIgojIFNTSF9BR0VOVF9QSUQ9MTQ4NwpTU0hfQUdFTlRfUElE
PSIxNDg3IgojIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiLW5hdGl2ZT1kYi1uYXRpdmUK
UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGItbmF0aXZlPSJkYi1uYXRpdmUiCiMgUFJFRkVS
UkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliaWNvbnY9ZWdsaWJjClBSRUZFUlJFRF9QUk9WSURFUl92
aXJ0dWFsL2xpYmljb252PSJlZ2xpYmMiCiMgTElDRU5TRT1JTlZBTElECkxJQ0VOU0U9IklOVkFM
SUQiCiMgTE9DQUxFQkFTRVBOPSR7UE59CkxPQ0FMRUJBU0VQTj0iYmJsYXllcnMiCiMgQ09SRUJB
U0U9L2hvbWUvbHNlcmJhbi93b3JrL21hc3RlcgpDT1JFQkFTRT0iL2hvbWUvbHNlcmJhbi93b3Jr
L21hc3RlciIKIyBHTk9NRV9NSVJST1I9aHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3Nv
dXJjZXMKR05PTUVfTUlSUk9SPSJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNl
cyIKIyBQUkVGRVJSRURfVkVSU0lPTl9saWJnY2M9JHtHQ0NWRVJTSU9OfQpQUkVGRVJSRURfVkVS
U0lPTl9saWJnY2M9IjQuNyUiCiMgUEFDS0FHRVNfRFlOQU1JQz0ke1BOfS1sb2NhbGUtKgpQQUNL
QUdFU19EWU5BTUlDPSJiYmxheWVycy1sb2NhbGUtKiIKIyBTU1RBVEVfUEtHU1BFQz1zc3RhdGUt
JHtQTn0tJHtQQUNLQUdFX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0ke1RBUkdFVF9PU30tJHtQVn0t
JHtQUn0tJHtTU1RBVEVfUEtHQVJDSH0tJHtTU1RBVEVfVkVSU0lPTn0tClNTVEFURV9QS0dTUEVD
PSJzc3RhdGUtYmJsYXllcnMtYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmktMS4wLXIwLWFybXY1
dGUtMi0iCiMgTE9DQUxDT05GX1ZFUlNJT049MQpMT0NBTENPTkZfVkVSU0lPTj0iMSIKIyBUQVJH
RVRfQ0NfS0VSTkVMX0FSQ0g9IC1tbm8tdGh1bWItaW50ZXJ3b3JrIC1tYXJtClRBUkdFVF9DQ19L
RVJORUxfQVJDSD0iLW1uby10aHVtYi1pbnRlcndvcmsgLW1hcm0iCiMgQ09NUEFUSUJMRV9IT1NU
PU5vbmUKIyBQUkVGRVJSRURfUFJPVklERVJfY29uc29sZS10b29scz1rYmQKUFJFRkVSUkVEX1BS
T1ZJREVSX2NvbnNvbGUtdG9vbHM9ImtiZCIKIyBTU1RBVEVQUkVJTlNURlVOQ1M9CiMgREVQTE9Z
X0RJUl9JUEs9JHtERVBMT1lfRElSfS9pcGsKREVQTE9ZX0RJUl9JUEs9Ii9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9pcGsiCiMgU1NIX0FVVEhfU09DSz0vdG1wL2tl
eXJpbmctWWZiR0VsL3NzaApTU0hfQVVUSF9TT0NLPSIvdG1wL2tleXJpbmctWWZiR0VsL3NzaCIK
IyBTVEFHSU5HX0ZJUk1XQVJFX0RJUj0ke1NUQUdJTkdfRElSX0hPU1R9L2Zpcm13YXJlClNUQUdJ
TkdfRklSTVdBUkVfRElSPSIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNy
b290cy9teXFlbXVhcm0vZmlybXdhcmUiCiMgQkJGSUxFUz0gL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9tZXRhL3JlY2lwZXMtKi8qLyouYmIgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRh
LXlvY3RvL3JlY2lwZXMtKi8qLyouYmIgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9tZXRhLXlv
Y3RvL3JlY2lwZXMtKi8qLyouYmJhcHBlbmQgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9tZXRhLW15cWVtdWFybS9yZWNpcGVzLSovKi8qLmJiIC9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvbWV0YS1teXFlbXVhcm0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZApCQkZJTEVTPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL21ldGEvcmVjaXBlcy0qLyovKi5iYiAvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL21ldGEteW9jdG8vcmVjaXBlcy0qLyovKi5iYiAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL21ldGEteW9jdG8vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCAvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL2J1aWxkL21ldGEtbXlxZW11YXJtL3JlY2lwZXMtKi8qLyouYmIgL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9tZXRhLW15cWVtdWFybS9yZWNpcGVzLSovKi8q
LmJiYXBwZW5kIgojIEFTPSR7SE9TVF9QUkVGSVh9YXMgJHtIT1NUX0FTX0FSQ0h9CmV4cG9ydCBB
Uz0iYXJtLXBva3ktbGludXgtZ251ZWFiaS1hcyIKIyBCVUlMRF9SQU5MSUI9JHtCVUlMRF9QUkVG
SVh9cmFubGliCmV4cG9ydCBCVUlMRF9SQU5MSUI9InJhbmxpYiIKIyBTU1RBVEVfUEtHQVJDSD0k
e1BBQ0tBR0VfQVJDSH0KU1NUQVRFX1BLR0FSQ0g9ImFybXY1dGUiCiMgUFJFRkVSUkVEX1ZFUlNJ
T05fZ2NjLXJ1bnRpbWU9JHtHQ0NWRVJTSU9OfQpQUkVGRVJSRURfVkVSU0lPTl9nY2MtcnVudGlt
ZT0iNC43JSIKIyBCTkZJTEU9JHtCVUlMRFNUQVRTX0JBU0V9Ly5idWlsZG5hbWUKQk5GSUxFPSIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9idWlsZHN0YXRzLy8uYnVpbGRuYW1l
IgojIEFVVE9SRVY9JHtAYmIuZmV0Y2gyLmdldF9hdXRvcmV2KGQpfQpBVVRPUkVWPSJBVVRPSU5D
IgojIGJpbmRpcl9uYXRpdmVzZGs9JHtwcmVmaXhfbmF0aXZlc2RrfS9iaW4KYmluZGlyX25hdGl2
ZXNkaz0iL3Vzci9iaW4iCiMgZG9fcGFja2FnZV93cml0ZV9pcGs9Tm9uZQojIEJVSUxEX0NQUEZM
QUdTPS1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CmV4cG9ydCBCVUlMRF9DUFBGTEFH
Uz0iLWlzeXN0ZW0vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94
ODZfNjQtbGludXgvdXNyL2luY2x1ZGUiCiMgREVQTE9ZX0RJUl9ERUI9JHtERVBMT1lfRElSfS9k
ZWIKREVQTE9ZX0RJUl9ERUI9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2Rl
cGxveS9kZWIiCiMgREVQTE9ZX0RJUl9SUE09JHtERVBMT1lfRElSfS9ycG0KREVQTE9ZX0RJUl9S
UE09Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9ycG0iCiMgUFJF
RkVSUkVEX1ZFUlNJT05fZWdsaWJjLWxvY2FsZT0ke0VHTElCQ1ZFUlNJT059ClBSRUZFUlJFRF9W
RVJTSU9OX2VnbGliYy1sb2NhbGU9IjIuMTYiCiMgRElTVFJPX05BTUU9WW9jdG8gKEJ1aWx0IGJ5
IFBva3kgNy4wKQpESVNUUk9fTkFNRT0iWW9jdG8gKEJ1aWx0IGJ5IFBva3kgNy4wKSIKIyBBUk1Q
S0dTRlhfVEhVTUI9JHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCBbICJhcm12
NCIsICJ0aHVtYiIgXSwgInQiLCAiIiwgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVB
VFVSRVMiLCBbICJhcm12NSIsICJ0aHVtYiIgXSwgInQiLCAiIiwgZCl9JHtAYmIudXRpbHMuY29u
dGFpbnMoIlRVTkVfRkVBVFVSRVMiLCBbICJhcm12NiIsICJ0aHVtYiIgXSwgInQiLCAiIiwgZCl9
JHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCBbICJhcm12NyIsICJ0aHVtYiIg
XSwgInQyIiwgIiIsIGQpfQpBUk1QS0dTRlhfVEhVTUI9InQiCiMgQ0xFQU5GVU5DUz0gc3N0YXRl
X2NsZWFuYWxsCkNMRUFORlVOQ1M9InNzdGF0ZV9jbGVhbmFsbCIKIyBBVVRPX0xJQk5BTUVfUEtH
Uz0ke1BBQ0tBR0VTfQpBVVRPX0xJQk5BTUVfUEtHUz0iYmJsYXllcnMtZGJnIGJibGF5ZXJzLXN0
YXRpY2RldiBiYmxheWVycy1kZXYgYmJsYXllcnMtZG9jIGJibGF5ZXJzLWxvY2FsZSAgYmJsYXll
cnMiCiMgTk8zMkxJQlM9MQpOTzMyTElCUz0iMSIKIyBTRVBQVUtVX0FUVEFDSE1FTlQ9Tm9uZQpk
b19mZXRjaGFsbCgpIHsKCToKCn0KCmRpZSgpIHsKCWJiZmF0YWwgIiQqIgoKfQoKYmFzZV9kb19p
bnN0YWxsKCkgewoJOgoKfQoKcmVzb2x2ZV9wYWNrYWdlX3JwbSgpIHsKCWxvY2FsIGNvbmZmaWxl
PSIkMSIKCXNoaWZ0Cglsb2NhbCBwa2dfbmFtZT0iIgoJZm9yIHNvbHZlIGluIGBjYXQgJHtjb25m
ZmlsZX1gOyBkbwoJCXBrZ19uYW1lPSQocnBtIC1EICJfZGJwYXRoICRzb2x2ZSIgLUQgIl9fZGJp
X3R4biBjcmVhdGUgbm9mc3luYyIgLXEgLS1xZiAiJXtwYWNrYWdlb3JpZ2lufVxuIiAiJEAiIHwg
Z3JlcCAtdiAiaXMgbm90IGluc3RhbGxlZCIgfHwgdHJ1ZSkKCQlpZiBbIC1uICIkcGtnX25hbWUi
IC1hICIkcGtnX25hbWUiICE9ICIobm9uZSkiIF07IHRoZW4KCQkJZWNobyAkcGtnX25hbWUKCQkJ
YnJlYWs7CgkJZmkKCWRvbmUKCn0KCnByZWxpbmtfaW1hZ2UoKSB7CiMJZXhwb3J0IFBTRVVET19E
RUJVRz00CiMJL2Jpbi9lbnYgfCAvYmluL2dyZXAgUFNFVURPCiMJZWNobyAiTERfTElCUkFSWV9Q
QVRIPSRMRF9MSUJSQVJZX1BBVEgiCiMJZWNobyAiTERfUFJFTE9BRD0kTERfUFJFTE9BRCIKCglw
cmVfcHJlbGlua19zaXplPWBkdSAta3MgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90
bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAvcm9vdGZz
IHwgYXdrICd7c2l6ZSA9ICQxIDsgcHJpbnQgc2l6ZSB9J2AKCWVjaG8gIlNpemUgYmVmb3JlIHBy
ZWxpbmtpbmcgJHByZV9wcmVsaW5rX3NpemUuIgoKCSMgV2UgbmVlZCBhIHByZWxpbmsgY29uZiBv
biB0aGUgZmlsZXN5c3RlbSwgYWRkIG9uZSBpZiBpdCdzIG1pc3NpbmcKCWlmIFsgISAtZSAvaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1n
bnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9yb290ZnMvZXRjL3ByZWxpbmsuY29uZiBdOyB0aGVuCgkJ
Y3AgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxp
bnV4L2V0Yy9wcmVsaW5rLmNvbmYgXAoJCQkvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9yb290
ZnMvZXRjL3ByZWxpbmsuY29uZgoJCWR1bW15X3ByZWxpbmtfY29uZj10cnVlOwoJZWxzZQoJCWR1
bW15X3ByZWxpbmtfY29uZj1mYWxzZTsKCWZpCgoJIyBwcmVsaW5rIQoJL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zYmluL3ByZWxp
bmsgLS1yb290IC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0
ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL3Jvb3RmcyAtYW1SIC1OIC1jIC9l
dGMvcHJlbGluay5jb25mCgoJIyBSZW1vdmUgdGhlIHByZWxpbmsuY29uZiBpZiB3ZSBoYWQgdG8g
YWRkIGl0LgoJaWYgWyAiJGR1bW15X3ByZWxpbmtfY29uZiIgPSAidHJ1ZSIgXTsgdGhlbgoJCXJt
IC1mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5
LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL3Jvb3Rmcy9ldGMvcHJlbGluay5jb25mCglm
aQoKCXByZV9wcmVsaW5rX3NpemU9YGR1IC1rcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1
aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9y
b290ZnMgfCBhd2sgJ3tzaXplID0gJDEgOyBwcmludCBzaXplIH0nYAoJZWNobyAiU2l6ZSBhZnRl
ciBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKCn0KCnBhY2thZ2VfaW5zdGFsbF9pbnRl
cm5hbF9ycG0oKSB7CgoJbG9jYWwgdGFyZ2V0X3Jvb3Rmcz0iJHtJTlNUQUxMX1JPT1RGU19SUE19
IgoJbG9jYWwgcGxhdGZvcm09IiR7SU5TVEFMTF9QTEFURk9STV9SUE19IgoJbG9jYWwgcGxhdGZv
cm1fZXh0cmE9IiR7SU5TVEFMTF9QTEFURk9STV9FWFRSQV9SUE19IgoJbG9jYWwgY29uZmJhc2U9
IiR7SU5TVEFMTF9DT05GQkFTRV9SUE19IgoJbG9jYWwgcGFja2FnZV90b19pbnN0YWxsPSIke0lO
U1RBTExfUEFDS0FHRVNfUlBNfSIKCWxvY2FsIHBhY2thZ2VfYXR0ZW1wdG9ubHk9IiR7SU5TVEFM
TF9QQUNLQUdFU19BVFRFTVBUT05MWV9SUE19IgoJbG9jYWwgcGFja2FnZV9saW5ndWFzPSIke0lO
U1RBTExfUEFDS0FHRVNfTElOR1VBU19SUE19IgoJbG9jYWwgcHJvdmlkZW5hbWU9IiR7SU5TVEFM
TF9QUk9WSURFTkFNRV9SUE19IgoJbG9jYWwgdGFzaz0iJHtJTlNUQUxMX1RBU0tfUlBNfSIKCglp
ZiBbICIke0lOU1RBTExfQ09NUExFTUVOVEFSWV9SUE19IiAhPSAiMSIgXSA7IHRoZW4KCQkjIFNl
dHVwIGJhc2Ugc3lzdGVtIGNvbmZpZ3VyYXRpb24KCQlta2RpciAtcCAke3RhcmdldF9yb290ZnN9
L2V0Yy9ycG0vCgkJZWNobyAiJHtwbGF0Zm9ybX0tcG9reS1saW51eC1nbnVlYWJpIiA+ICR7dGFy
Z2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybQoJCWlmIFsgISAteiAiJHBsYXRmb3JtX2V4dHJh
IiBdOyB0aGVuCgkJCWZvciBwdCBpbiAkcGxhdGZvcm1fZXh0cmEgOyBkbwoJCQkJY2FzZSAkcHQg
aW4KCQkJCQlub2FyY2ggfCBhbnkgfCBhbGwpCgkJCQkJCW9zPSJgZWNobyBsaW51eC1nbnVlYWJp
IHwgc2VkICJzLC0uKiwsImAuKiIKCQkJCQkJOzsKCQkJCQkqKQoJCQkJCQlvcz0ibGludXgtZ251
ZWFiaSIKCQkJCQkJOzsKCQkJCWVzYWMKCQkJCWVjaG8gIiRwdC0uKi0kb3MiID4+ICR7dGFyZ2V0
X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybQoJCQlkb25lCgkJZmkKCgkJIyBUZWxsIFJQTSB0aGF0
IHRoZSAiLyIgZGlyZWN0b3J5IGV4aXN0IGFuZCBpcyBhdmFpbGFibGUKCQlta2RpciAtcCAke3Rh
cmdldF9yb290ZnN9L2V0Yy9ycG0vc3lzaW5mbwoJCWVjaG8gIi8iID4ke3RhcmdldF9yb290ZnN9
L2V0Yy9ycG0vc3lzaW5mby9EaXJuYW1lcwoJCWlmIFsgISAteiAiJHByb3ZpZGVuYW1lIiBdOyB0
aGVuCgkJCWNhdCAvZGV2L251bGwgPiAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vc3lzaW5mby9Q
cm92aWRlbmFtZQoJCQlmb3IgcHJvdmlkZSBpbiAkcHJvdmlkZW5hbWUgOyBkbwoJCQkJZWNobyAk
cHJvdmlkZSA+PiAke3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vc3lzaW5mby9Qcm92aWRlbmFtZQoJ
CQlkb25lCgkJZmkKCWVsc2UKCQltdiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvdG90YWxfc29s
dXRpb24ubWFuaWZlc3QgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL29yaWdpbmFsX3NvbHV0aW9u
Lm1hbmlmZXN0CglmaQoKCSMgU2V0dXAgbWFuaWZlc3Qgb2YgcGFja2FnZXMgdG8gaW5zdGFsbC4u
LgoJbWtkaXIgLXAgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsCglybSAtZiAke3RhcmdldF9yb290
ZnN9L2luc3RhbGwvaW5zdGFsbC5tYW5pZmVzdAoKCSMgVWNsaWJjIGJ1aWxkcyBkb24ndCBwcm92
aWRlIHRoaXMgc3R1ZmYuLi4KCWlmIFsgeGxpbnV4LWdudWVhYmkgPSAieGxpbnV4IiBdIHx8IFsg
eGxpbnV4LWdudWVhYmkgPSAieGxpbnV4LWdudWVhYmkiIF0gOyB0aGVuCgkJaWYgWyAhIC16ICIk
e3BhY2thZ2VfbGluZ3Vhc30iIF07IHRoZW4KCQkJcHJvY2Vzc19wa2dfbGlzdF9ycG0gbGluZ3Vh
cyAke3BhY2thZ2VfbGluZ3Vhc30KCQlmaQoJZmkKCglpZiBbICEgLXogIiR7cGFja2FnZV90b19p
bnN0YWxsfSIgXTsgdGhlbgoJCXByb2Nlc3NfcGtnX2xpc3RfcnBtIGRlZmF1bHQgJHtwYWNrYWdl
X3RvX2luc3RhbGx9CglmaQoKCSMgTm9ybWFsIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgoJIyBHZW5l
cmF0ZSBhbiBpbnN0YWxsIHNvbHV0aW9uIGJ5IGRvaW5nIGEgLS1qdXN0ZGIgaW5zdGFsbCwgdGhl
biByZWNyZWF0ZSBpdCB3aXRoCgkjIGFuIGFjdHVhbCBwYWNrYWdlIGluc3RhbGwhCglpZiBbIC1z
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsLm1hbmlmZXN0IF07IHRoZW4KCQllY2hv
ICIjIEluc3RhbGwgbWFuaWZlc3QgcGFkZGluZyIgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxs
L2luc3RhbGwubWFuaWZlc3QKCQlycG0gLS1wcmVkZWZpbmUgIl9ycG1kc19zeXNpbmZvX3BhdGgg
JHt0YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3N5c2luZm8iIFwKCQkJLS1wcmVkZWZpbmUgIl9ycG1y
Y19wbGF0Zm9ybV9wYXRoICR7dGFyZ2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybSIgXAoJCQkt
LXJvb3QgIiR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbCIgXAoJCQktRCAiX2RicGF0aCAke3Rhcmdl
dF9yb290ZnN9L2luc3RhbGwiIC1EICJgY2F0ICR7Y29uZmJhc2V9LWJhc2VfYXJjaHMubWFjcm9g
IiBcCgkJCS1EICJfX2RiaV90eG4gY3JlYXRlIG5vZnN5bmMiIFwKCQkJLVUgLS1qdXN0ZGIgLS1y
ZXBsYWNlcGtncyAtLW5vc2NyaXB0cyAtLW5vdHJpZ2dlcnMgLS1ub3BhcmVudGRpcnMgLS1ub2xp
bmt0b3MgLS1pZ25vcmVzaXplIFwKCQkJJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3RhbGwu
bWFuaWZlc3QKCWZpCgoJaWYgWyAhIC16ICIke3BhY2thZ2VfYXR0ZW1wdG9ubHl9IiBdOyB0aGVu
CgkJZWNobyAiQWRkaW5nIGF0dGVtcHQgb25seSBwYWNrYWdlcy4uLiIKCQlwcm9jZXNzX3BrZ19s
aXN0X3JwbSBhdHRlbXB0b25seSAke3BhY2thZ2VfYXR0ZW1wdG9ubHl9CgkJY2F0ICR7dGFyZ2V0
X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsX2F0dGVtcHRvbmx5Lm1hbmlmZXN0IHwgd2hpbGUgcmVh
ZCBwa2dfbmFtZQoJCWRvCgkJCWVjaG8gIkF0dGVtcHRpbmcgJHBrZ19uYW1lLi4uIiA+PiAiYGRp
cm5hbWUgJHtCQl9MT0dGSUxFfWAvbG9nLmRvXyR7dGFza31fYXR0ZW1wdG9ubHkuJHtQSUR9IgoJ
CQlycG0gLS1wcmVkZWZpbmUgIl9ycG1kc19zeXNpbmZvX3BhdGggJHt0YXJnZXRfcm9vdGZzfS9l
dGMvcnBtL3N5c2luZm8iIFwKCQkJCS0tcHJlZGVmaW5lICJfcnBtcmNfcGxhdGZvcm1fcGF0aCAk
e3RhcmdldF9yb290ZnN9L2V0Yy9ycG0vcGxhdGZvcm0iIFwKCQkJCS0tcm9vdCAiJHt0YXJnZXRf
cm9vdGZzfS9pbnN0YWxsIiBcCgkJCQktRCAiX2RicGF0aCAke3RhcmdldF9yb290ZnN9L2luc3Rh
bGwiIC1EICJgY2F0ICR7Y29uZmJhc2V9Lm1hY3JvYCIgXAoJCQkJLUQgIl9fZGJpX3R4biBjcmVh
dGUgbm9mc3luYyBwcml2YXRlIiBcCgkJCQktVSAtLWp1c3RkYiAtLXJlcGxhY2Vwa2dzIC0tbm9z
Y3JpcHRzIC0tbm90cmlnZ2VycyAtLW5vcGFyZW50ZGlycyAtLW5vbGlua3RvcyAtLWlnbm9yZXNp
emUgXAoJCQkkcGtnX25hbWUgPj4gImBkaXJuYW1lICR7QkJfTE9HRklMRX1gL2xvZy5kb18ke3Rh
c2t9X2F0dGVtcHRvbmx5LiR7UElEfSIgfHwgdHJ1ZQoJCWRvbmUKCWZpCgoJIyMjIyBOb3RlOiAn
UmVjb21tZW5kcycgaXMgYW4gYXJiaXRyYXJ5IHRhZyB0aGF0IG1lYW5zIF9TVUdHRVNUU18gaW4g
T0UtY29yZS4uCgkjIEFkZCBhbnkgcmVjb21tZW5kZWQgcGFja2FnZXMgdG8gdGhlIGltYWdlCgkj
IFJQTSBkb2VzIG5vdCBzb2x2ZSBmb3IgcmVjb21tZW5kZWQgcGFja2FnZXMgYmVjYXVzZSB0aGV5
IGFyZSBvcHRpb25hbC4uLgoJIyBTbyB3ZSBxdWVyeSB0aGVtIGFuZCB0cmVlIHRoZW0gbGlrZSB0
aGUgQVRURU1QVE9OTFkgcGFja2FnZXMgYWJvdmUuLi4KCSMgQ2hhbmdlIHRoZSBsb29wIHRvICIx
IiB0byBydW4gdGhpcyBjb2RlLi4uCglsb29wPTAKCWlmIFsgJGxvb3AgLWVxIDEgXTsgdGhlbgoJ
IGVjaG8gIlByb2Nlc3NpbmcgcmVjb21tZW5kZWQgcGFja2FnZXMuLi4iCgkgY2F0IC9kZXYvbnVs
bCA+ICAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLmxpc3QKCSB3aGlsZSBbICRs
b29wIC1lcSAxIF07IGRvCgkJIyBEdW1wIHRoZSBmdWxsIHNldCBvZiByZWNvbW1lbmRzLi4uCgkJ
cnBtIC0tcHJlZGVmaW5lICJfcnBtZHNfc3lzaW5mb19wYXRoICR7dGFyZ2V0X3Jvb3Rmc30vZXRj
L3JwbS9zeXNpbmZvIiBcCgkJCS0tcHJlZGVmaW5lICJfcnBtcmNfcGxhdGZvcm1fcGF0aCAke3Rh
cmdldF9yb290ZnN9L2V0Yy9ycG0vcGxhdGZvcm0iIFwKCQkJLS1yb290ICIke3RhcmdldF9yb290
ZnN9L2luc3RhbGwiIFwKCQkJLUQgIl9kYnBhdGggJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsIiAt
RCAiYGNhdCAke2NvbmZiYXNlfS5tYWNyb2AiIFwKCQkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9m
c3luYyBwcml2YXRlIiBcCgkJCS1xYSAtLXFmICJbJXtSRUNPTU1FTkRTfVxuXSIgfCBzb3J0IC11
ID4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVuZAoJCSMgRGlkIHdlIGFkZCBtb3Jl
IHRvIHRoZSBsaXN0PwoJCWdyZXAgLXYgLXggLUYgLWYgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxs
L3JlY29tbWVuZC5saXN0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQgPiAke3Rh
cmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLm5ldyB8fCB0cnVlCgkJIyBXZSBkb24ndCB3
YW50IHRvIGxvb3AgdW5sZXNzIHRoZXJlIGlzIGEgY2hhbmdlIHRvIHRoZSBsaXN0IQoJCWxvb3A9
MAoJCWNhdCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLm5ldyB8IFwKCQkgd2hp
bGUgcmVhZCBwa2cgOyBkbwoJCQkjIE9oaCB0aGVyZSB3YXMgYSBuZXcgb25lLCB3ZSdsbCBuZWVk
IHRvIGxvb3AgYWdhaW4uLi4KCQkJbG9vcD0xCgkJCWVjaG8gIlByb2Nlc3NpbmcgJHBrZy4uLiIK
CQkJZm91bmQ9MAoJCQlmb3IgYXJjaHZhciBpbiBiYXNlX2FyY2hzIG1sX2FyY2hzIDsgZG8KCQkJ
CXBrZ19uYW1lPSQocmVzb2x2ZV9wYWNrYWdlX3JwbSAke2NvbmZiYXNlfS0ke2FyY2h2YXJ9LmNv
bmYgJHtwa2d9KQoJCQkJaWYgWyAtbiAiJHBrZ19uYW1lIiBdOyB0aGVuCgkJCQkJZm91bmQ9MQoJ
CQkJCWJyZWFrCgkJCQlmaQoJCQlkb25lCgoJCQlpZiBbICRmb3VuZCAtZXEgMCBdOyB0aGVuCgkJ
CQllY2hvICJOb3RlOiBVbmFibGUgdG8gZmluZCBwYWNrYWdlICRwa2cgLS0gc3VnZ2VzdHMiCgkJ
CQllY2hvICJVbmFibGUgdG8gZmluZCBwYWNrYWdlICRwa2cuIiA+PiAiYGRpcm5hbWUgJHtCQl9M
T0dGSUxFfWAvbG9nLmRvXyR7dGFza31fcmVjb21tZW5kLiR7UElEfSIKCQkJCWNvbnRpbnVlCgkJ
CWZpCgkJCWVjaG8gIkF0dGVtcHRpbmcgJHBrZ19uYW1lLi4uIiA+PiAiYGRpcm5hbWUgJHtCQl9M
T0dGSUxFfWAvbG9nLmRvX3t0YXNrfV9yZWNvbW1lbmQuJHtQSUR9IgoJCQlycG0gLS1wcmVkZWZp
bmUgIl9ycG1kc19zeXNpbmZvX3BhdGggJHt0YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3N5c2luZm8i
IFwKCQkJCS0tcHJlZGVmaW5lICJfcnBtcmNfcGxhdGZvcm1fcGF0aCAke3RhcmdldF9yb290ZnN9
L2V0Yy9ycG0vcGxhdGZvcm0iIFwKCQkJCS0tcm9vdCAiJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxs
IiBcCgkJCQktRCAiX2RicGF0aCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwiIC1EICJgY2F0ICR7
Y29uZmJhc2V9Lm1hY3JvYCIgXAoJCQkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyBwcml2
YXRlIiBcCgkJCQktVSAtLWp1c3RkYiAtLXJlcGxhY2Vwa2dzIC0tbm9zY3JpcHRzIC0tbm90cmln
Z2VycyAtLW5vcGFyZW50ZGlycyAtLW5vbGlua3RvcyAtLWlnbm9yZXNpemUgXAoJCQkJJHBrZ19u
YW1lID4+ICJgZGlybmFtZSAke0JCX0xPR0ZJTEV9YC9sb2cuZG9fJHt0YXNrfV9yZWNvbW1lbmQu
JHtQSUR9IiAyPiYxIHx8IHRydWUKCQlkb25lCgkJY2F0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFs
bC9yZWNvbW1lbmQubGlzdCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLm5ldyB8
IHNvcnQgLXUgPiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLm5ldy5saXN0CgkJ
bXYgLWYgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3JlY29tbWVuZC5uZXcubGlzdCAke3Rhcmdl
dF9yb290ZnN9L2luc3RhbGwvcmVjb21tZW5kLmxpc3QKCQlybSAke3RhcmdldF9yb290ZnN9L2lu
c3RhbGwvcmVjb21tZW5kICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9yZWNvbW1lbmQubmV3Cgkg
ZG9uZQoJZmkKCgkjIE5vdyB0aGF0IHdlIGhhdmUgYSBzb2x1dGlvbiwgcHVsbCBvdXQgYSBsaXN0
IG9mIHdoYXQgdG8gaW5zdGFsbC4uLgoJZWNobyAiTWFuaWZlc3Q6ICR7dGFyZ2V0X3Jvb3Rmc30v
aW5zdGFsbC9pbnN0YWxsLm1hbmlmZXN0IgoJcnBtIC1EICJfZGJwYXRoICR7dGFyZ2V0X3Jvb3Rm
c30vaW5zdGFsbCIgLXFhIC0tcWYgIiV7cGFja2FnZW9yaWdpbn1cbiIgXAoJCS0tcm9vdCAiJHt0
YXJnZXRfcm9vdGZzfS9pbnN0YWxsIiBcCgkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyBw
cml2YXRlIiBcCgkJPiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5zdGFsbF9zb2x1dGlvbi5t
YW5pZmVzdAoKCXRvdWNoICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsX211bHRpbGli
X3NvbHV0aW9uLm1hbmlmZXN0CgoJaWYgWyAtcyAiJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2lu
c3RhbGxfbXVsdGlsaWIubWFuaWZlc3QiIF07IHRoZW4KCQkjIG11bHRpbGliIHBhY2thZ2UgaW5z
dGFsbGF0aW9uCgkJZWNobyAiIyBJbnN0YWxsIG11bHRpbGliIG1hbmlmZXN0IHBhZGRpbmciID4+
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsX211bHRpbGliLm1hbmlmZXN0CgoJCSMg
R2VuZXJhdGUgYW4gaW5zdGFsbCBzb2x1dGlvbiBieSBkb2luZyBhIC0tanVzdGRiIGluc3RhbGws
IHRoZW4gcmVjcmVhdGUgaXQgd2l0aAoJCSMgYW4gYWN0dWFsIHBhY2thZ2UgaW5zdGFsbCEKCQly
cG0gLS1wcmVkZWZpbmUgIl9ycG1kc19zeXNpbmZvX3BhdGggJHt0YXJnZXRfcm9vdGZzfS9ldGMv
cnBtL3N5c2luZm8iIFwKCQkJLS1wcmVkZWZpbmUgIl9ycG1yY19wbGF0Zm9ybV9wYXRoICR7dGFy
Z2V0X3Jvb3Rmc30vZXRjL3JwbS9wbGF0Zm9ybSIgXAoJCQktLXJvb3QgIiR7dGFyZ2V0X3Jvb3Rm
c30vaW5zdGFsbCIgXAoJCQktRCAiX2RicGF0aCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwiIC1E
ICJgY2F0ICR7Y29uZmJhc2V9LW1sX2FyY2hzLm1hY3JvYCIgXAoJCQktRCAiX19kYmlfdHhuIGNy
ZWF0ZSBub2ZzeW5jIiBcCgkJCS1VIC0tanVzdGRiIC0tcmVwbGFjZXBrZ3MgLS1ub3NjcmlwdHMg
LS1ub3RyaWdnZXJzIC0tbm9wYXJlbnRkaXJzIC0tbm9saW5rdG9zIC0taWdub3Jlc2l6ZSBcCgkJ
CSR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsX211bHRpbGliLm1hbmlmZXN0CgoJCSMg
Tm93IHRoYXQgd2UgaGF2ZSBhIHNvbHV0aW9uLCBwdWxsIG91dCBhIGxpc3Qgb2Ygd2hhdCB0byBp
bnN0YWxsLi4uCgkJZWNobyAiTWFuaWZlc3Q6ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0
YWxsX211bHRpbGliLm1hbmlmZXN0IgoJCXJwbSAtRCAiX2RicGF0aCAke3RhcmdldF9yb290ZnN9
L2luc3RhbGwiIC1xYSAtLXFmICIle3BhY2thZ2VvcmlnaW59XG4iIFwKCQkJLS1yb290ICIke3Rh
cmdldF9yb290ZnN9L2luc3RhbGwiIFwKCQkJLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyBw
cml2YXRlIiBcCgkJCT4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luc3RhbGxfbXVsdGlsaWJf
c29sdXRpb24ubWFuaWZlc3QKCglmaQoKCWNhdCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5z
dGFsbF9zb2x1dGlvbi5tYW5pZmVzdCA+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC90b3RhbF9z
b2x1dGlvbi5tYW5pZmVzdAoJY2F0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbnN0YWxsX211
bHRpbGliX3NvbHV0aW9uLm1hbmlmZXN0ID4+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC90b3Rh
bF9zb2x1dGlvbi5tYW5pZmVzdAoKCSMgQ29uc3RydWN0IGluc3RhbGwgc2NyaXB0bGV0IHdyYXBw
ZXIKCWNhdCA8PCBFT0YgPiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3Jr
L2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9zY3JpcHRsZXRfd3Jh
cHBlcgojIS9iaW4vYmFzaAoKZXhwb3J0IFBBVEg9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
c2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZf
NjQtbGludXgvdXNyL2Jpbi9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTovaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0vdXNyL2Jpbi9jcm9zc3Nj
cmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0
LWxpbnV4L3Vzci9zYmluOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jv
b3RzL3g4Nl82NC1saW51eC91c3IvYmluOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC9zYmluOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC8vYmluOi9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9t
ZS9sc2VyYmFuL3dvcmsvaG9iX3Rlc3Qvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvaG9iX3Rl
c3QvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFr
ZS9iaW4vOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6
L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9zY3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2JpdGJha2UvYmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9z
Y3JpcHRzOi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi9ob21lL2xzZXJi
YW4vd29yay9tYXN0ZXIvc2NyaXB0czovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2JpdGJha2Uv
YmluLzovaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL3NjcmlwdHM6L2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9iaXRiYWtlL2Jpbi86L2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9zY3JpcHRzOi9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYml0YmFrZS9iaW4vOi91c3IvbGliL2xpZ2h0ZG0vbGln
aHRkbTovdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9z
YmluOi9iaW46L3Vzci9nYW1lcyIKZXhwb3J0IEQ9IiR7dGFyZ2V0X3Jvb3Rmc30iCmV4cG9ydCBP
RkZMSU5FX1JPT1Q9IlwkRCIKZXhwb3J0IElQS0dfT0ZGTElORV9ST09UPSJcJEQiCmV4cG9ydCBP
UEtHX09GRkxJTkVfUk9PVD0iXCREIgoKXCQyIFwkMS9cJDMgXCQ0CmlmIFsgXCQ/IC1uZSAwIF07
IHRoZW4KICBta2RpciAtcCBcJDEvZXRjL3JwbS1wb3N0aW5zdHMKICBudW09MTAwCiAgd2hpbGUg
WyAtZSBcJDEvZXRjL3JwbS1wb3N0aW5zdHMvXCR7bnVtfSBdOyBkbyBudW09XCQoKG51bSArIDEp
KTsgZG9uZQogIGVjaG8gIiMhXCQyIiA+IFwkMS9ldGMvcnBtLXBvc3RpbnN0cy9cJHtudW19CiAg
ZWNobyAiIyBBcmc6IFwkNCIgPj4gXCQxL2V0Yy9ycG0tcG9zdGluc3RzL1wke251bX0KICBjYXQg
XCQxL1wkMyA+PiBcJDEvZXRjL3JwbS1wb3N0aW5zdHMvXCR7bnVtfQogIGNobW9kICt4IFwkMS9l
dGMvcnBtLXBvc3RpbnN0cy9cJHtudW19CmZpCkVPRgoKCWNobW9kIDA3NTUgL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9i
YmxheWVycy0xLjAtcjAvc2NyaXB0bGV0X3dyYXBwZXIKCgkjIENvbmZpZ3VyZSBSUE0uLi4gd2Ug
ZW5mb3JjZSB0aGVzZSBzZXR0aW5ncyEKCW1rZGlyIC1wICR7dGFyZ2V0X3Jvb3Rmc30ke3JwbWxp
YmRpcn0KCW1rZGlyIC1wICR7dGFyZ2V0X3Jvb3Rmc30ke3JwbWxpYmRpcn0vbG9nCgkjIEFmdGVy
IGNoYW5nZSB0aGUgX19kYi4qIGNhY2hlIHNpemUsIGxvZyBmaWxlIHdpbGwgbm90IGJlIGdlbmVy
YXRlZCBhdXRvbWF0aWNhbGx5LAoJIyB0aGF0IHdpbGwgcmFpc2Ugc29tZSB3YXJuaW5ncywgc28g
dG91Y2ggYSBiYXJlIGxvZyBmb3IgcnBtIHdyaXRlIGludG8gaXQuCgl0b3VjaCAke3RhcmdldF9y
b290ZnN9JHtycG1saWJkaXJ9L2xvZy9sb2cuMDAwMDAwMDAwMQoJY2F0ID4gJHt0YXJnZXRfcm9v
dGZzfSR7cnBtbGliZGlyfS9EQl9DT05GSUcgPDwgRU9GCiMgPT09PT09PT09PT09PT09PSBFbnZp
cm9ubWVudApzZXRfZGF0YV9kaXIgLgpzZXRfY3JlYXRlX2RpciAuCnNldF9sZ19kaXIgLi9sb2cK
c2V0X3RtcF9kaXIgLi90bXAKc2V0X2ZsYWdzIGRiX2xvZ19hdXRvcmVtb3ZlIG9uCgojIC0tIHRo
cmVhZF9jb3VudCBtdXN0IGJlID49IDgKc2V0X3RocmVhZF9jb3VudCA2NAoKIyA9PT09PT09PT09
PT09PT09IExvZ2dpbmcKCiMgPT09PT09PT09PT09PT09PSBNZW1vcnkgUG9vbApzZXRfY2FjaGVz
aXplIDAgMTA0ODU3NiAwCnNldF9tcF9tbWFwc2l6ZSAyNjg0MzU0NTYKCiMgPT09PT09PT09PT09
PT09PSBMb2NraW5nCnNldF9sa19tYXhfbG9ja3MgMTYzODQKc2V0X2xrX21heF9sb2NrZXJzIDE2
Mzg0CnNldF9sa19tYXhfb2JqZWN0cyAxNjM4NAptdXRleF9zZXRfbWF4IDE2Mzg0MAoKIyA9PT09
PT09PT09PT09PT09IFJlcGxpY2F0aW9uCkVPRgoKCWlmIFsgIiR7SU5TVEFMTF9DT01QTEVNRU5U
QVJZX1JQTX0iID0gIjEiIF0gOyB0aGVuCgkJIyBPbmx5IGluc3RhbGwgcGFja2FnZXMgbm90IGFs
cmVhZHkgaW5zdGFsbGVkIChkZXBlbmRlbmN5IGNhbGN1bGF0aW9uIHdpbGwKCQkjIGFsbW9zdCBj
ZXJ0YWlubHkgaGF2ZSBhZGRlZCBzb21lIHRoYXQgaGF2ZSBiZWVuKQoJCXNvcnQgJHt0YXJnZXRf
cm9vdGZzfS9pbnN0YWxsL29yaWdpbmFsX3NvbHV0aW9uLm1hbmlmZXN0ID4gJHt0YXJnZXRfcm9v
dGZzfS9pbnN0YWxsL29yaWdpbmFsX3NvbHV0aW9uX3NvcnRlZC5tYW5pZmVzdAoJCXNvcnQgJHt0
YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0ID4gJHt0YXJnZXRf
cm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uX3NvcnRlZC5tYW5pZmVzdAoJCWNvbW0gLTIg
LTMgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uX3NvcnRlZC5tYW5pZmVz
dCBcCgkJCSR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9vcmlnaW5hbF9zb2x1dGlvbl9zb3J0ZWQu
bWFuaWZlc3QgfCBhd2sgJ3twcmludCAkMX0nID4gXAoJCQkke3RhcmdldF9yb290ZnN9L2luc3Rh
bGwvZGlmZi5tYW5pZmVzdAoJCW12ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9kaWZmLm1hbmlm
ZXN0ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC90b3RhbF9zb2x1dGlvbi5tYW5pZmVzdAoJZWxp
ZiBbICIke0lOQ19SUE1fSU1BR0VfR0VOfSIgPSAiMSIgLWEgLWYgIiRwcmVfYnRtYW5pZmVzdCIg
XTsgdGhlbgoJCWVjaG8gIlNraXBwaW5nIHByZSBpbnN0YWxsIGR1ZSB0byBleGlzdGluZyBpbWFn
ZSIKCWVsc2UKCQkjIFJQTSBpcyBzcGVjaWFsLiBJdCBjYW4ndCBoYW5kbGUgZGVwZW5kZW5jaWVz
IGFuZCBwcmVpbnN0YWxsIHNjcmlwdHMgY29ycmVjdGx5LiBJdHMKCQkjIHByb2JhYmx5IGEgZmVh
dHVyZS4gVGhlIG9ubHkgd2F5IHRvIGNvbnZpbmNlIHJwbSB0byBhY3R1YWxseSBydW4gdGhlIHBy
ZWluc3RhbGwgc2NyaXB0cwoJCSMgZm9yIGJhc2UtcGFzc3dkIGFuZCBzaGFkb3cgZmlyc3QgYmVm
b3JlIGluc3RhbGxpbmcgcGFja2FnZXMgdGhhdCBkZXBlbmQgb24gdGhlc2UgcGFja2FnZXMKCQkj
IGlzIHRvIGRvIHR3byBpbWFnZSBpbnN0YWxscywgaW5zdGFsbGluZyBvbmUgc2V0IG9mIHBhY2th
Z2VzLCB0aGVuIHRoZSBvdGhlci4KCQlybSAtZiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5p
dGlhbF9pbnN0YWxsLm1hbmlmZXN0CgkJZWNobyAiSW5zdGFsbGluZyBiYXNlIGRlcGVuZGVuY2ll
cyBmaXJzdCAoYmFzZS1wYXNzd2QsIGJhc2UtZmlsZXMgYW5kIHNoYWRvdykgc2luY2UgcnBtIGlz
IHNwZWNpYWwiCgkJZ3JlcCAvYmFzZS1wYXNzd2QtWzAtOV0gJHt0YXJnZXRfcm9vdGZzfS9pbnN0
YWxsL3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0ID4+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9p
bml0aWFsX2luc3RhbGwubWFuaWZlc3QgfHwgdHJ1ZQoJCWdyZXAgL2Jhc2UtZmlsZXMtWzAtOV0g
JHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0ID4+ICR7dGFy
Z2V0X3Jvb3Rmc30vaW5zdGFsbC9pbml0aWFsX2luc3RhbGwubWFuaWZlc3QgfHwgdHJ1ZQoJCWdy
ZXAgL3NoYWRvdy1bMC05XSAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvdG90YWxfc29sdXRpb24u
bWFuaWZlc3QgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luaXRpYWxfaW5zdGFsbC5tYW5p
ZmVzdCB8fCB0cnVlCgoJCWlmIFsgLXMgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luaXRpYWxf
aW5zdGFsbC5tYW5pZmVzdCBdOyB0aGVuCgkJCWVjaG8gIiMgSW5pdGlhbCBJbnN0YWxsIG1hbmlm
ZXN0IHBhZGRpbmcuLi4iID4+ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9pbml0aWFsX2luc3Rh
bGwubWFuaWZlc3QKCgkJCSMgR2VuZXJhdGUgYW4gaW5zdGFsbCBzb2x1dGlvbiBieSBkb2luZyBh
IC0tanVzdGRiIGluc3RhbGwsIHRoZW4gcmVjcmVhdGUgaXQgd2l0aAoJCQkjIGFuIGFjdHVhbCBw
YWNrYWdlIGluc3RhbGwhCgkJCW1rZGlyIC1wICR7dGFyZ2V0X3Jvb3Rmc30vaW5pdGlhbAoKCQkJ
cnBtIC0tcHJlZGVmaW5lICJfcnBtZHNfc3lzaW5mb19wYXRoICR7dGFyZ2V0X3Jvb3Rmc30vZXRj
L3JwbS9zeXNpbmZvIiBcCgkJCQktLXByZWRlZmluZSAiX3JwbXJjX3BsYXRmb3JtX3BhdGggJHt0
YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3BsYXRmb3JtIiBcCgkJCQktLXJvb3QgIiR7dGFyZ2V0X3Jv
b3Rmc30vaW5zdGFsbCIgXAoJCQkJLUQgIl9kYnBhdGggJHt0YXJnZXRfcm9vdGZzfS9pbml0aWFs
IiAtRCAiYGNhdCAke2NvbmZiYXNlfS5tYWNyb2AiIFwKCQkJCS1EICJfX2RiaV90eG4gY3JlYXRl
IG5vZnN5bmMiIFwKCQkJCS1VIC0tanVzdGRiIC0tcmVwbGFjZXBrZ3MgLS1ub3NjcmlwdHMgLS1u
b3RyaWdnZXJzIC0tbm9wYXJlbnRkaXJzIC0tbm9saW5rdG9zIC0taWdub3Jlc2l6ZSBcCgkJCQkk
e3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5pdGlhbF9pbnN0YWxsLm1hbmlmZXN0CgoJCQlycG0g
LUQgIl9kYnBhdGggJHt0YXJnZXRfcm9vdGZzfS9pbml0aWFsIiAtcWEgLS1xZiAiJXtwYWNrYWdl
b3JpZ2lufVxuIiBcCgkJCQktRCAiX19kYmlfdHhuIGNyZWF0ZSBub2ZzeW5jIHByaXZhdGUiIFwK
CQkJCS0tcm9vdCAiJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsIiBcCgkJCQk+ICR7dGFyZ2V0X3Jv
b3Rmc30vaW5zdGFsbC9pbml0aWFsX3NvbHV0aW9uLm1hbmlmZXN0CgoJCQlycG1fdXBkYXRlX3Br
ZyAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5pdGlhbF9zb2x1dGlvbi5tYW5pZmVzdAoKCQkJ
Z3JlcCAtRnYgLWYgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL2luaXRpYWxfc29sdXRpb24ubWFu
aWZlc3QgJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0ID4g
JHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0aW9uLm1hbmlmZXN0Lm5ldwoJCQlt
diAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvdG90YWxfc29sdXRpb24ubWFuaWZlc3QubmV3ICR7
dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC90b3RhbF9zb2x1dGlvbi5tYW5pZmVzdAoKCQkJcm0gLXJm
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5pdGlhbAoJCWZpCglmaQoKCWVjaG8gIkluc3RhbGxpbmcgbWFp
biBzb2x1dGlvbiBtYW5pZmVzdCAoJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsL3RvdGFsX3NvbHV0
aW9uLm1hbmlmZXN0KSIKCglycG1fdXBkYXRlX3BrZyAke3RhcmdldF9yb290ZnN9L2luc3RhbGwv
dG90YWxfc29sdXRpb24ubWFuaWZlc3QKCn0KCmJiZGVidWcoKSB7CglVU0FHRT0nVXNhZ2U6IGJi
ZGVidWcgWzEyM10gIm1lc3NhZ2UiJwoJaWYgWyAkIyAtbHQgMiBdOyB0aGVuCgkJYmJmYXRhbCAi
JFVTQUdFIgoJZmkKCgkjIFN0cmlwIG9mZiB0aGUgZGVidWcgbGV2ZWwgYW5kIGVuc3VyZSBpdCBp
cyBhbiBpbnRlZ2VyCglEQkdMVkw9JDE7IHNoaWZ0CglpZiAhIFtbICIkREJHTFZMIiA9fiBeWzAt
OV0rIF1dOyB0aGVuCgkJYmJmYXRhbCAiJFVTQUdFIgoJZmkKCgkjIEFsbCBkZWJ1ZyBvdXRwdXQg
aXMgcHJpbnRlZCB0byB0aGUgbG9ncwoJZWNobyAiREVCVUc6ICQqIgoKfQoKYmFzZV9kb19wYWNr
YWdlKCkgewoJOgoKfQoKZG9fY29uZmlndXJlKCkgewogICAgYmFzZV9kb19jb25maWd1cmUKCn0K
CnBhY2thZ2VfZ2VuZXJhdGVfcnBtX2NvbmYoKSB7CgkjIFVwZGF0ZSB0YXJnZXQgcGFja2FnZXMK
CXBhY2thZ2VfZ2VuZXJhdGVfcnBtX2NvbmZfY29tbW9uICIvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGIiIGJhc2VfYXJjaHMgbWxfYXJjaHMKCgkj
IFVwZGF0ZSBTREsgcGFja2FnZXMKCXBhY2thZ2VfZ2VuZXJhdGVfcnBtX2NvbmZfY29tbW9uICIv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGItc2Rr
IiBiYXNlX2FyY2hzCgp9CgpvZV9zb2luc3RhbGwoKSB7CgkjIFB1cnBvc2U6IEluc3RhbGwgc2hh
cmVkIGxpYnJhcnkgZmlsZSBhbmQKCSMgICAgICAgICAgY3JlYXRlIHRoZSBuZWNlc3NhcnkgbGlu
a3MKCSMgRXhhbXBsZToKCSMKCSMgb2VfCgkjCgkjYmJub3RlIGluc3RhbGxpbmcgc2hhcmVkIGxp
YnJhcnkgJDEgdG8gJDIKCSMKCWxpYm5hbWU9YGJhc2VuYW1lICQxYAoJaW5zdGFsbCAtbSA3NTUg
JDEgJDIvJGxpYm5hbWUKCXNvbmFtZWxpbms9YGFybS1wb2t5LWxpbnV4LWdudWVhYmktcmVhZGVs
ZiAtZCAkMSB8Z3JlcCAnTGlicmFyeSBzb25hbWU6JyB8c2VkIC1lICdzLy4qXFtcKC4qXClcXS4q
L1wxLydgCglzb2xpbms9YGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXC5zb1wuLiovLnNvLydg
CglsbiAtc2YgJGxpYm5hbWUgJDIvJHNvbmFtZWxpbmsKCWxuIC1zZiAkbGlibmFtZSAkMi8kc29s
aW5rCgp9CgpvZV9tYWNoaW5zdGFsbCgpIHsKCSMgUHVycG9zZTogSW5zdGFsbCBtYWNoaW5lIGRl
cGVuZGVudCBmaWxlcywgaWYgYXZhaWxhYmxlCgkjICAgICAgICAgIElmIG5vdCBhdmFpbGFibGUs
IGNoZWNrIGlmIHRoZXJlIGlzIGEgZGVmYXVsdAoJIyAgICAgICAgICBJZiBubyBkZWZhdWx0LCBq
dXN0IHRvdWNoIHRoZSBkZXN0aW5hdGlvbgoJIyBFeGFtcGxlOgoJIyAgICAgICAgICAgICAgICAk
MSAgJDIgICAkMyAgICAgICAgICQ0CgkjIG9lX21hY2hpbnN0YWxsIC1tIDA2NDQgZnN0YWIgL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgt
Z251ZWFiaS9iYmxheWVycy0xLjAtcjAvaW1hZ2UvZXRjL2ZzdGFiCgkjCgkjIFRPRE86IENoZWNr
IGFyZ3VtZW50IG51bWJlcj8KCSMKCWZpbGVuYW1lPWBiYXNlbmFtZSAkM2AKCWRpcm5hbWU9YGRp
cm5hbWUgJDNgCgoJZm9yIG8gaW4gYGVjaG8gbGludXgtZ251ZWFiaTphcm06YnVpbGQtbGludXg6
cG4tYmJsYXllcnM6bXlxZW11YXJtOmFybXY1OnBva3k6Y2xhc3MtdGFyZ2V0OmZvcmNldmFyaWFi
bGU6dGh1bWI6bGliYy1nbGliYyB8IHRyICc6JyAnICdgOyBkbwoJCWlmIFsgLWUgJGRpcm5hbWUv
JG8vJGZpbGVuYW1lIF07IHRoZW4KCQkJYmJub3RlICRkaXJuYW1lLyRvLyRmaWxlbmFtZSBwcmVz
ZW50LCBpbnN0YWxsaW5nIHRvICQ0CgkJCWluc3RhbGwgJDEgJDIgJGRpcm5hbWUvJG8vJGZpbGVu
YW1lICQ0CgkJCXJldHVybgoJCWZpCglkb25lCiMJYmJub3RlIG92ZXJyaWRlcyBzcGVjaWZpYyBm
aWxlIE5PVCBwcmVzZW50LCB0cnlpbmcgZGVmYXVsdD0kMy4uLgoJaWYgWyAtZSAkMyBdOyB0aGVu
CgkJYmJub3RlICQzIHByZXNlbnQsIGluc3RhbGxpbmcgdG8gJDQKCQlpbnN0YWxsICQxICQyICQz
ICQ0CgllbHNlCgkJYmJub3RlICQzIE5PVCBwcmVzZW50LCB0b3VjaGluZyBlbXB0eSAkNAoJCXRv
dWNoICQ0CglmaQoKfQoKY3JlYXRlX2NtZGxpbmVfd3JhcHBlcigpIHsKICAgIyBDcmVhdGUgYSB3
cmFwcGVyIHNjcmlwdAogICAjCiAgICMgVGhlc2UgYXJlIHVzZWZ1bCB0byB3b3JrIGFyb3VuZCBy
ZWxvY2F0aW9uIGlzc3VlcywgYnkgc2V0dGluZyBlbnZpcm9ubWVudAogICAjIHZhcmlhYmxlcyB3
aGljaCBwb2ludCB0byBwYXRocyBpbiB0aGUgZmlsZXN5c3RlbS4KICAgIwogICAjIFVzYWdlOiBj
cmVhdGVfd3JhcHBlciBGSUxFTkFNRSBbW1ZBUj1WQUxVRV0uLl0KCiAgIGNtZD0kMQogICBzaGlm
dAoKICAgZWNobyAiR2VuZXJhdGluZyB3cmFwcGVyIHNjcmlwdCBmb3IgJGNtZCIKCiAgIG12ICRj
bWQgJGNtZC5yZWFsCiAgIGNtZG5hbWU9YGJhc2VuYW1lICRjbWRgLnJlYWwKICAgY2F0IDw8RU5E
ID4kY21kCiMhL2Jpbi9zaApyZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYApleGVjIFxgZGly
bmFtZSBcJHJlYWxwYXRoXGAvJGNtZG5hbWUgJEAgIlwkQCIKRU5ECiAgIGNobW9kICt4ICRjbWQK
Cn0KCmJhc2VfZG9fY29tcGlsZSgpIHsKCWlmIFsgLWUgTWFrZWZpbGUgLW8gLWUgbWFrZWZpbGUg
LW8gLWUgR05VbWFrZWZpbGUgXTsgdGhlbgoJCW9lX3J1bm1ha2UgfHwgZGllICJtYWtlIGZhaWxl
ZCIKCWVsc2UKCQliYm5vdGUgIm5vdGhpbmcgdG8gY29tcGlsZSIKCWZpCgp9CgpiYmZhdGFsKCkg
ewoJZWNobyAiRVJST1I6ICQqIgoJZXhpdCAxCgp9Cgpkb19wYWNrYWdlX3dyaXRlKCkgewoJOgoK
fQoKc3lzcm9vdF9zdGFnZV9kaXIoKSB7CglzcmM9IiQxIgoJZGVzdD0iJDIiCgkjIGlmIHRoZSBz
cmMgZG9lc24ndCBleGlzdCBkb24ndCBkbyBhbnl0aGluZwoJaWYgWyAhIC1kICIkc3JjIiBdOyB0
aGVuCgkJIHJldHVybgoJZmkKCgkjIFdlIG9ubHkgd2FudCB0byBzdGFnZSB0aGUgY29udGVudHMg
b2YgJHNyYyBpZiBpdCdzIG5vbi1lbXB0eSBzbyBmaXJzdCBybWRpciAkc3JjCgkjIHRoZW4gaWYg
aXQgc3RpbGwgZXhpc3RzIChybWRpciBvbiBub24tZW1wdHkgZGlyIGZhaWxzKSB3ZSBjYW4gY29w
eSBpdHMgY29udGVudHMKCXJtZGlyICIkc3JjIiAyPiAvZGV2L251bGwgfHwgdHJ1ZQoJIyBIb3dl
dmVyIHdlIGFsd2F5cyB3YW50IHRvIHN0YWdlIGEgJHNyYyBpdHNlbGYsIGV2ZW4gaWYgaXQncyBl
bXB0eQoJbWtkaXIgLXAgIiRkZXN0IgoJaWYgWyAtZCAiJHNyYyIgXTsgdGhlbgoJCXRhciAtY2Yg
LSAtQyAiJHNyYyIgLXBzIC4gfCB0YXIgLXhmIC0gLUMgIiRkZXN0IgoJZmkKCn0KCm9lX2xpYmlu
c3RhbGwoKSB7CgkjIFB1cnBvc2U6IEluc3RhbGwgYSBsaWJyYXJ5LCBpbiBhbGwgaXRzIGZvcm1z
CgkjIEV4YW1wbGUKCSMKCSMgb2VfbGliaW5zdGFsbCBsaWJsdGRsIC9ob21lL2xzZXJiYW4vd29y
ay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL215cWVtdWFybS91c3IvbGliLwoJIyBvZV9saWJp
bnN0YWxsIC1DIHNyYy9saWJibGFoIGxpYmJsYWggL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAv
aW1hZ2UvL3Vzci9saWIvCglkaXI9IiIKCWxpYnRvb2w9IiIKCXNpbGVudD0iIgoJcmVxdWlyZV9z
dGF0aWM9IiIKCXJlcXVpcmVfc2hhcmVkPSIiCglzdGFnaW5nX2luc3RhbGw9IiIKCXdoaWxlIFsg
IiQjIiAtZ3QgMCBdOyBkbwoJCWNhc2UgIiQxIiBpbgoJCS1DKQoJCQlzaGlmdAoJCQlkaXI9IiQx
IgoJCQk7OwoJCS1zKQoJCQlzaWxlbnQ9MQoJCQk7OwoJCS1hKQoJCQlyZXF1aXJlX3N0YXRpYz0x
CgkJCTs7CgkJLXNvKQoJCQlyZXF1aXJlX3NoYXJlZD0xCgkJCTs7CgkJLSopCgkJCWJiZmF0YWwg
Im9lX2xpYmluc3RhbGw6IHVua25vd24gb3B0aW9uOiAkMSIKCQkJOzsKCQkqKQoJCQlicmVhazsK
CQkJOzsKCQllc2FjCgkJc2hpZnQKCWRvbmUKCglsaWJuYW1lPSIkMSIKCXNoaWZ0CglkZXN0cGF0
aD0iJDEiCglpZiBbIC16ICIkZGVzdHBhdGgiIF07IHRoZW4KCQliYmZhdGFsICJvZV9saWJpbnN0
YWxsOiBubyBkZXN0aW5hdGlvbiBwYXRoIHNwZWNpZmllZCIKCWZpCglpZiBlY2hvICIkZGVzdHBh
dGgvIiB8IGVncmVwICdeL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9v
dHMvbXlxZW11YXJtL3Vzci9saWIvJyA+L2Rldi9udWxsCgl0aGVuCgkJc3RhZ2luZ19pbnN0YWxs
PTEKCWZpCgoJX19ydW5jbWQgKCkgewoJCWlmIFsgLXogIiRzaWxlbnQiIF07IHRoZW4KCQkJZWNo
byA+JjIgIm9lX2xpYmluc3RhbGw6ICQqIgoJCWZpCgkJJCoKCX0KCglpZiBbIC16ICIkZGlyIiBd
OyB0aGVuCgkJZGlyPWBwd2RgCglmaQoKCWRvdGxhaT0kbGlibmFtZS5sYWkKCgkjIFNhbml0eSBj
aGVjayB0aGF0IHRoZSBsaWJuYW1lLmxhaSBpcyB1bmlxdWUKCW51bWJlcl9vZl9maWxlcz1gKGNk
ICRkaXI7IGZpbmQgLiAtbmFtZSAiJGRvdGxhaSIpIHwgd2MgLWxgCglpZiBbICRudW1iZXJfb2Zf
ZmlsZXMgLWd0IDEgXTsgdGhlbgoJCWJiZmF0YWwgIm9lX2xpYmluc3RhbGw6ICRkb3RsYWkgaXMg
bm90IHVuaXF1ZSBpbiAkZGlyIgoJZmkKCgoJZGlyPSRkaXJgKGNkICRkaXI7ZmluZCAuIC1uYW1l
ICIkZG90bGFpIikgfCBzZWQgInMvXlwuLy87cy9cLyRkb3RsYWlcJC8vO3EiYAoJb2xkZGlyPWBw
d2RgCglfX3J1bmNtZCBjZCAkZGlyCgoJbGFmaWxlPSRsaWJuYW1lLmxhCgoJIyBJZiBzdWNoIGZp
bGUgZG9lc24ndCBleGlzdCwgdHJ5IHRvIGN1dCB2ZXJzaW9uIHN1ZmZpeAoJaWYgWyAhIC1mICIk
bGFmaWxlIiBdOyB0aGVuCgkJbGlibmFtZTE9YGVjaG8gIiRsaWJuYW1lIiB8IHNlZCAncy8tWzAt
OS5dKiQvLydgCgkJbGFmaWxlMT0kbGlibmFtZS5sYQoJCWlmIFsgLWYgIiRsYWZpbGUxIiBdOyB0
aGVuCgkJCWxpYm5hbWU9JGxpYm5hbWUxCgkJCWxhZmlsZT0kbGFmaWxlMQoJCWZpCglmaQoKCWlm
IFsgLWYgIiRsYWZpbGUiIF07IHRoZW4KCQkjIGxpYnRvb2wgYXJjaGl2ZQoJCWV2YWwgYGNhdCAk
bGFmaWxlfGdyZXAgIl5saWJyYXJ5X25hbWVzPSJgCgkJbGlidG9vbD0xCgllbHNlCgkJbGlicmFy
eV9uYW1lcz0iJGxpYm5hbWUuc28qICRsaWJuYW1lLmRsbC5hICRsaWJuYW1lLiouZHlsaWIiCglm
aQoKCV9fcnVuY21kIGluc3RhbGwgLWQgJGRlc3RwYXRoLwoJZG90YT0kbGlibmFtZS5hCglpZiBb
IC1mICIkZG90YSIgLW8gLW4gIiRyZXF1aXJlX3N0YXRpYyIgXTsgdGhlbgoJCXJtIC1mICRkZXN0
cGF0aC8kZG90YQoJCV9fcnVuY21kIGluc3RhbGwgLW0gMDY0NCAkZG90YSAkZGVzdHBhdGgvCglm
aQoJaWYgWyAtZiAiJGRvdGxhaSIgLWEgLW4gIiRsaWJ0b29sIiBdOyB0aGVuCgkJcm0gLWYgJGRl
c3RwYXRoLyRsaWJuYW1lLmxhCgkJX19ydW5jbWQgaW5zdGFsbCAtbSAwNjQ0ICRkb3RsYWkgJGRl
c3RwYXRoLyRsaWJuYW1lLmxhCglmaQoKCWZvciBuYW1lIGluICRsaWJyYXJ5X25hbWVzOyBkbwoJ
CWZpbGVzPWBldmFsIGVjaG8gJG5hbWVgCgkJZm9yIGYgaW4gJGZpbGVzOyBkbwoJCQlpZiBbICEg
LWUgIiRmIiBdOyB0aGVuCgkJCQlpZiBbIC1uICIkbGlidG9vbCIgXTsgdGhlbgoJCQkJCWJiZmF0
YWwgIm9lX2xpYmluc3RhbGw6ICRkaXIvJGYgbm90IGZvdW5kLiIKCQkJCWZpCgkJCWVsaWYgWyAt
TCAiJGYiIF07IHRoZW4KCQkJCV9fcnVuY21kIGNwIC1QICIkZiIgJGRlc3RwYXRoLwoJCQllbGlm
IFsgISAtTCAiJGYiIF07IHRoZW4KCQkJCWxpYmZpbGU9IiRmIgoJCQkJcm0gLWYgJGRlc3RwYXRo
LyRsaWJmaWxlCgkJCQlfX3J1bmNtZCBpbnN0YWxsIC1tIDA3NTUgJGxpYmZpbGUgJGRlc3RwYXRo
LwoJCQlmaQoJCWRvbmUKCWRvbmUKCglpZiBbIC16ICIkbGliZmlsZSIgXTsgdGhlbgoJCWlmICBb
IC1uICIkcmVxdWlyZV9zaGFyZWQiIF07IHRoZW4KCQkJYmJmYXRhbCAib2VfbGliaW5zdGFsbDog
dW5hYmxlIHRvIGxvY2F0ZSBzaGFyZWQgbGlicmFyeSIKCQlmaQoJZWxpZiBbIC16ICIkbGlidG9v
bCIgXTsgdGhlbgoJCSMgc3BlY2lhbCBjYXNlIGhhY2sgZm9yIG5vbi1saWJ0b29sIC5zby4jLiMu
IyBsaW5rcwoJCWJhc2VsaWJmaWxlPWBiYXNlbmFtZSAiJGxpYmZpbGUiYAoJCWlmIChlY2hvICRi
YXNlbGliZmlsZSB8IGdyZXAgLXFFICdebGliLipcLnNvXC5bMC05Ll0qJCcpOyB0aGVuCgkJCXNv
bmFtZWxpbms9YGFybS1wb2t5LWxpbnV4LWdudWVhYmktcmVhZGVsZiAtZCAkbGliZmlsZSB8Z3Jl
cCAnTGlicmFyeSBzb25hbWU6JyB8c2VkIC1lICdzLy4qXFtcKC4qXClcXS4qL1wxLydgCgkJCXNv
bGluaz1gZWNobyAkYmFzZWxpYmZpbGUgfCBzZWQgLWUgJ3MvXC5zb1wuLiovLnNvLydgCgkJCWlm
IFsgLW4gIiRzb25hbWVsaW5rIiAtYSB4IiRiYXNlbGliZmlsZSIgIT0geCIkc29uYW1lbGluayIg
XTsgdGhlbgoJCQkJX19ydW5jbWQgbG4gLXNmICRiYXNlbGliZmlsZSAkZGVzdHBhdGgvJHNvbmFt
ZWxpbmsKCQkJZmkKCQkJX19ydW5jbWQgbG4gLXNmICRiYXNlbGliZmlsZSAkZGVzdHBhdGgvJHNv
bGluawoJCWZpCglmaQoKCV9fcnVuY21kIGNkICIkb2xkZGlyIgoKfQoKcGFja2FnZV91cGRhdGVf
aW5kZXhfcnBtX2NvbW1vbigpIHsKCXJwbWNvbmZfYmFzZT0iJDEiCglzaGlmdAoKICAgICAgICBj
cmVhdGVkaXJzPSIiCglmb3IgYXJjaHZhciBpbiAiJEAiOyBkbwoJCWV2YWwgYXJjaHM9XCR7JHth
cmNodmFyfX0KCQlwYWNrYWdlZGlycz0iIgoJCWZvciBhcmNoIGluICRhcmNoczsgZG8KCQkJcGFj
a2FnZWRpcnM9Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9ycG0v
JGFyY2ggJHBhY2thZ2VkaXJzIgoJCQlybSAtcmYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvZGVwbG95L3JwbS8kYXJjaC9zb2x2ZWRiLmRvbmUKCQlkb25lCgoJCWNhdCAvZGV2
L251bGwgPiAke3JwbWNvbmZfYmFzZX0tJHthcmNodmFyfS5jb25mCgkJZm9yIHBrZ2RpciBpbiAk
cGFja2FnZWRpcnM7IGRvCgkJCWlmIFsgLWUgJHBrZ2Rpci8gXTsgdGhlbgoJCQkJZWNobyAiR2Vu
ZXJhdGluZyBzb2x2ZSBkYiBmb3IgJHBrZ2Rpci4uLiIKCQkJCWVjaG8gJHBrZ2Rpci9zb2x2ZWRi
ID4+ICR7cnBtY29uZl9iYXNlfS0ke2FyY2h2YXJ9LmNvbmYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVkaXJzPSIkY3JlYXRlZGlycyAkcGtnZGlyIgoJCQlmaQoJCWRvbmUK
CWRvbmUKCXJwbS1jcmVhdGVzb2x2ZWRiLnB5ICJycG0iICRjcmVhdGVkaXJzCgp9CgpiYndhcm4o
KSB7CgllY2hvICJXQVJOSU5HOiAkKiIKCn0KCmJhc2VfZG9fY29uZmlndXJlKCkgewoJOgoKfQoK
cnBtX2NvbW1vbl9jb21hbmQoKSB7CgogICAgbG9jYWwgdGFyZ2V0X3Jvb3Rmcz0iJHtJTlNUQUxM
X1JPT1RGU19SUE19IgoKICAgIHJwbSAtLXJvb3QgJHt0YXJnZXRfcm9vdGZzfSBcCiAgICAgICAg
LS1wcmVkZWZpbmUgIl9ycG1kc19zeXNpbmZvX3BhdGggJHt0YXJnZXRfcm9vdGZzfS9ldGMvcnBt
L3N5c2luZm8iIFwKICAgICAgICAtLXByZWRlZmluZSAiX3JwbXJjX3BsYXRmb3JtX3BhdGggJHt0
YXJnZXRfcm9vdGZzfS9ldGMvcnBtL3BsYXRmb3JtIiBcCiAgICAgICAgLUQgIl92YXIgL3ZhciIg
XAogICAgICAgIC1EICJfZGJwYXRoICR7cnBtbGliZGlyfSIgXAogICAgICAgIC1EICJfdG1wcGF0
aCAvaW5zdGFsbC90bXAiIFwKICAgICAgICAtLW5vcGFyZW50ZGlycyAtLW5vbGlua3RvcyBcCiAg
ICAgICAgLUQgIl9fZGJpX3R4biBjcmVhdGUgbm9mc3luYyBwcml2YXRlIiBcCiAgICAgICAgLUQg
Il9jcm9zc19zY3JpcHRsZXRfd3JhcHBlciAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxk
L3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9zY3Jp
cHRsZXRfd3JhcHBlciIgJEAKCn0KCmJibm90ZSgpIHsKCWVjaG8gIk5PVEU6ICQqIgoKfQoKZG9f
aW5zdGFsbCgpIHsKICAgIGJhc2VfZG9faW5zdGFsbAoKfQoKcnBtX3VwZGF0ZV9wa2coKSB7Cgog
ICAgbWFuaWZlc3Q9JDEKICAgIGJ0bWFuaWZlc3Q9JG1hbmlmZXN0LmJ0Lm1hbmlmZXN0CiAgICBw
cmVfYnRtYW5pZmVzdD0vaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2Fy
bXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC90ZW1wLyR7YnRtYW5pZmVz
dCMjLyovfQogICAgbG9jYWwgdGFyZ2V0X3Jvb3Rmcz0iJHtJTlNUQUxMX1JPT1RGU19SUE19IgoK
ICAgICMgU2F2ZSB0aGUgcnBtJ3MgYnVpbGQgdGltZSBmb3IgaW5jcmVtZW50YWwgaW1hZ2UgZ2Vu
ZXJhdGlvbiwgYW5kIHRoZSBmaWxlCiAgICAjIHdvdWxkIGJlIG1vdmVkIHRvIC9ob21lL2xzZXJi
YW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkv
YmJsYXllcnMtMS4wLXIwL3RlbXAKICAgIGZvciBpIGluIGBjYXQgJG1hbmlmZXN0YDsgZG8KICAg
ICAgICAjIFVzZSAicnBtIiByYXRoZXIgdGhhbiAicnBtIiBoZXJlLCBzaW5jZSB3ZSBkb24ndCBu
ZWVkIHRoZQogICAgICAgICMgJy0tZGJwYXRoJyBvcHRpb24KICAgICAgICBlY2hvICIkaSBgcnBt
IC1xcCAtLXFmICcle0JVSUxEVElNRX1cbicgJGlgIgogICAgZG9uZSB8IHNvcnQgLXUgPiAkYnRt
YW5pZmVzdAoKICAgICMgT25seSBpbnN0YWxsIHRoZSBkaWZmZXJlbnQgcGtncyBpZiBpbmNyZW1l
bnRhbCBpbWFnZSBnZW5lcmF0aW9uIGlzIHNldAogICAgaWYgWyAiJHtJTkNfUlBNX0lNQUdFX0dF
Tn0iID0gIjEiIC1hIC1mICIkcHJlX2J0bWFuaWZlc3QiIC1hIFwKICAgICAgICAicnBtIiA9ICJy
cG0iIF07IHRoZW4KICAgICAgICBjb21tIC0xIC0zICRidG1hbmlmZXN0ICRwcmVfYnRtYW5pZmVz
dCB8IHNlZCAncyMuKi9cKC4qXClcLnJwbSAuKiNcMSMnID4gXAogICAgICAgICAgICAke3Rhcmdl
dF9yb290ZnN9L2luc3RhbGwvcmVtb3ZlLm1hbmlmZXN0CiAgICAgICAgY29tbSAtMiAtMyAkYnRt
YW5pZmVzdCAkcHJlX2J0bWFuaWZlc3QgfCBhd2sgJ3twcmludCAkMX0nID4gXAogICAgICAgICAg
ICAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5jcmVtZW50YWwubWFuaWZlc3QKCiAgICAgICAg
IyBBdHRlbXB0IHRvIHJlbW92ZSB1bndhbnRlZCBwa2dzLCB0aGUgc2NyaXB0cyhwcmUsIHBvc3Qs
IGV0Yy4pIGhhcyBub3QKICAgICAgICAjIGJlZW4gcnVuIGJ5IG5vdywgc28gZG9uJ3QgaGF2ZSB0
byBydW4gdGhlbShwcmV1biwgcG9zdHVuLCBldGMuKSB3aGVuCiAgICAgICAgIyBlcmFzZSB0aGUg
cGtnCiAgICAgICAgaWYgWyAtcyAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvcmVtb3ZlLm1hbmlm
ZXN0IF07IHRoZW4KICAgICAgICAgICAgcnBtX2NvbW1vbl9jb21hbmQgLS1ub3NjcmlwdHMgLS1u
b2RlcHMgXAogICAgICAgICAgICAgICAgLWUgYGNhdCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwv
cmVtb3ZlLm1hbmlmZXN0YAogICAgICAgIGZpCgogICAgICAgICMgQXR0ZW1wdCB0byBpbnN0YWxs
IHRoZSBpbmNyZW1lbnRhbCBwa2dzCiAgICAgICAgaWYgWyAtcyAke3RhcmdldF9yb290ZnN9L2lu
c3RhbGwvaW5jcmVtZW50YWwubWFuaWZlc3QgXTsgdGhlbgogICAgICAgICAgICBycG1fY29tbW9u
X2NvbWFuZCAtLW5vZGVwcyAtLXJlcGxhY2VmaWxlcyAtLXJlcGxhY2Vwa2dzIFwKICAgICAgICAg
ICAgICAgLVV2aCAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvaW5jcmVtZW50YWwubWFuaWZlc3QK
ICAgICAgICBmaQogICAgZWxzZQogICAgICAgICMgQXR0ZW1wdCB0byBpbnN0YWxsCiAgICAgICAg
cnBtX2NvbW1vbl9jb21hbmQgLS1yZXBsYWNlcGtncyAtVWh2ICRtYW5pZmVzdAogICAgZmkKCn0K
CnN5c3Jvb3Rfc3RhZ2VfZGlycygpIHsKCWZyb209IiQxIgoJdG89IiQyIgoKCXN5c3Jvb3Rfc3Rh
Z2VfZGlyICRmcm9tL3Vzci9pbmNsdWRlICR0by91c3IvaW5jbHVkZQoJaWYgWyAieDg2XzY0LWxp
bnV4IiA9ICJhcm0tcG9reS1saW51eC1nbnVlYWJpIiBdOyB0aGVuCgkJc3lzcm9vdF9zdGFnZV9k
aXIgJGZyb20vdXNyL2JpbiAkdG8vdXNyL2JpbgoJCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tL3Vz
ci9zYmluICR0by91c3Ivc2JpbgoJCXN5c3Jvb3Rfc3RhZ2VfZGlyICRmcm9tL2JpbiAkdG8vYmlu
CgkJc3lzcm9vdF9zdGFnZV9kaXIgJGZyb20vc2JpbiAkdG8vc2JpbgoJCXN5c3Jvb3Rfc3RhZ2Vf
ZGlyICRmcm9tL3Vzci9saWJleGVjICR0by91c3IvbGliZXhlYwoJCXN5c3Jvb3Rfc3RhZ2VfZGly
ICRmcm9tL2V0YyAkdG8vZXRjCgkJc3lzcm9vdF9zdGFnZV9kaXIgJGZyb20vdmFyICR0by92YXIK
CWZpCglpZiBbIC1kICRmcm9tL3Vzci9saWIgXQoJdGhlbgoJCXN5c3Jvb3Rfc3RhZ2VfbGliZGly
ICRmcm9tLy91c3IvbGliICR0by91c3IvbGliCglmaQoJaWYgWyAtZCAkZnJvbS9saWIgXQoJdGhl
bgoJCXN5c3Jvb3Rfc3RhZ2VfbGliZGlyICRmcm9tL2xpYiAkdG8vbGliCglmaQoJc3lzcm9vdF9z
dGFnZV9kaXIgJGZyb20vdXNyL3NoYXJlICR0by91c3Ivc2hhcmUKCSMgV2UgZG9uJ3QgY2FyZSBh
Ym91dCBkb2NzL2luZm8vbWFucGFnZXMvbG9jYWxlcwoJcm0gLXJmICR0by91c3Ivc2hhcmUvbWFu
LyAkdG8vdXNyL3NoYXJlL2RvYy8gJHRvL3Vzci9zaGFyZS9pbmZvLyAke3RvfS91c3Ivc2hhcmUv
bG9jYWxlLwoKfQoKcHJvY2Vzc19wa2dfbGlzdF9ycG0oKSB7Cglsb2NhbCBpbnN0dHlwZT0kMQoJ
c2hpZnQKCSMgJEAgaXMgc3BlY2lhbCBQT1NJWCBsaW5lYXIgYXJyYXkgY2FuIG5vdCBiZSBhc3Np
Z25lZAoJIyB0byBhIGxvY2FsIHZhcmlhYmxlIGRpcmVjdGx5IGluIGRhc2ggc2luY2UgaXRzIHNl
cGFyYXRlZCBieQoJIyBzcGFjZSBhbmQgZGFzaCBleHBhbmRzIGl0IGJlZm9yZSBhc3NpZ25tZW50
CgkjIGFuZCBsb2NhbCB4PTEgMiAzIGFuZCBub3QgeD0iMSAyIDMiCglsb2NhbCBwa2dzCglwa2dz
PSIkQCIKCWxvY2FsIGNvbmZiYXNlPSR7SU5TVEFMTF9DT05GQkFTRV9SUE19CgoJZWNobyAtbiA+
ICR7dGFyZ2V0X3Jvb3Rmc30vaW5zdGFsbC9iYXNlX2FyY2hzLnBrZ2xpc3QKCWVjaG8gLW4gPiAk
e3RhcmdldF9yb290ZnN9L2luc3RhbGwvbWxfYXJjaHMucGtnbGlzdAoKCWZvciBwa2cgaW4gJHBr
Z3M7IGRvCgkJZWNobyAiUHJvY2Vzc2luZyAkcGtnLi4uIgoKCQlhcmNodmFyPWJhc2VfYXJjaHMK
CQltbF9wa2c9JHBrZwoJCWZvciBpIGluICR7TVVMVElMSUJfUFJFRklYX0xJU1R9IDsgZG8KCQkJ
CXN1YnN0PSR7cGtnIyR7aX0tfQoJCQkJaWYgWyAkc3Vic3QgIT0gJHBrZyBdIDsgdGhlbgoJCQkJ
CQltbF9wa2c9JHN1YnN0CgkJCQkJCWFyY2h2YXI9bWxfYXJjaHMKCQkJCQkJYnJlYWsKCQkJCWZp
CgkJZG9uZQoKCQllY2hvICRtbF9wa2cgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0YWxsLyRhcmNo
dmFyLnBrZ2xpc3QKCWRvbmUKCglsb2NhbCBtYW5pZmVzdHBmeD0iaW5zdGFsbCIKCWxvY2FsIGV4
dHJhb3B0PSIiCglpZiBbICIkaW5zdHR5cGUiID0gImF0dGVtcHRvbmx5IiBdIDsgdGhlbgoJCW1h
bmlmZXN0cGZ4PSJpbnN0YWxsX2F0dGVtcHRvbmx5IgoJCWV4dHJhb3B0PSItaSIKCWZpCgoJcnBt
cmVzb2x2ZSAkZXh0cmFvcHQgJHtjb25mYmFzZX0tYmFzZV9hcmNocy5jb25mICR7dGFyZ2V0X3Jv
b3Rmc30vaW5zdGFsbC9iYXNlX2FyY2hzLnBrZ2xpc3QgPj4gJHt0YXJnZXRfcm9vdGZzfS9pbnN0
YWxsLyR7bWFuaWZlc3RwZnh9Lm1hbmlmZXN0CglpZiBbIC1zICR7dGFyZ2V0X3Jvb3Rmc30vaW5z
dGFsbC9tbF9hcmNocy5wa2dsaXN0IF0gOyB0aGVuCgkJcnBtcmVzb2x2ZSAkZXh0cmFvcHQgJHtj
b25mYmFzZX0tbWxfYXJjaHMuY29uZiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvbWxfYXJjaHMu
cGtnbGlzdCA+PiAke3RhcmdldF9yb290ZnN9L2luc3RhbGwvJHttYW5pZmVzdHBmeH1fbXVsdGls
aWIubWFuaWZlc3QKCWZpCgp9Cgpzc3RhdGVfY3JlYXRlX3BhY2thZ2UoKSB7CgljZCAke1NTVEFU
RV9CVUlMRERJUn0KCVRGSUxFPWBta3RlbXAgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWls
ZC9zc3RhdGUtY2FjaGUvSU4vc3N0YXRlLWJibGF5ZXJzLWFybXY1dGUtcG9reS1saW51eC1nbnVl
YWJpLTEuMC1yMC1hcm12NXRlLTItSU5WQUxJRC5YWFhYWFhYWGAKCSMgTmVlZCB0byBoYW5kbGUg
ZW1wdHkgZGlyZWN0b3JpZXMKCWlmIFsgIiQobHMgLUEpIiBdOyB0aGVuCgkJdGFyIC1jemYgJFRG
SUxFICoKCWVsc2UKCQl0YXIgLWN6IC0tZmlsZT0kVEZJTEUgLS1maWxlcy1mcm9tPS9kZXYvbnVs
bAoJZmkKCWNobW9kIDA2NjQgJFRGSUxFCgltdiAkVEZJTEUgL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC9zc3RhdGUtY2FjaGUvSU4vc3N0YXRlLWJibGF5ZXJzLWFybXY1dGUtcG9reS1s
aW51eC1nbnVlYWJpLTEuMC1yMC1hcm12NXRlLTItSU5WQUxJRAoKCWNkIC9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJs
YXllcnMtMS4wLXIwCglybSAtcmYgJHtTU1RBVEVfQlVJTERESVJ9Cgp9CgpiYnBsYWluKCkgewoJ
ZWNobyAiJCoiCgp9CgpsZGNvbmZpZ19wb3N0aW5zdF9mcmFnbWVudCgpIHsKaWYgWyB4IiREIiA9
ICJ4IiBdOyB0aGVuCglpZiBbIC14IC9zYmluL2xkY29uZmlnIF07IHRoZW4gL3NiaW4vbGRjb25m
aWcgOyBmaQpmaQoKfQoKZG9fY2hlY2t1cmlhbGwoKSB7Cgk6Cgp9CgpwYWNrYWdlZHN0YWdpbmdf
ZmFzdHBhdGgoKSB7Cgk6Cgp9CgpycG1fbG9nX2NoZWNrKCkgewogICAgICAgdGFyZ2V0PSIkMSIK
ICAgICAgIGxmX3BhdGg9IiQyIgoKICAgICAgIGxmX3R4dD0iYGNhdCAkbGZfcGF0aGAiCiAgICAg
ICBmb3Iga2V5d29yZF9kaWUgaW4gIkNhbm5vdCBmaW5kIHBhY2thZ2UiICJleGl0IDEiIEVSUiBG
YWlsCiAgICAgICBkbwogICAgICAgICAgICAgICBpZiAoZWNobyAiJGxmX3R4dCIgfCBncmVwIC12
IGxvZ19jaGVjayB8IGdyZXAgIiRrZXl3b3JkX2RpZSIpID4vZGV2L251bGwgMj4mMQogICAgICAg
ICAgICAgICB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgZWNobyAibG9nX2NoZWNrOiBUaGVy
ZSB3ZXJlIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBsb2dmaWxlIgogICAgICAgICAgICAgICAgICAg
ICAgIGVjaG8gLWUgImxvZ19jaGVjazogTWF0Y2hlZCBrZXl3b3JkOiBbJGtleXdvcmRfZGllXVxu
IgogICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiRsZl90eHQiIHwgZ3JlcCAtdiBsb2dfY2hl
Y2sgfCBncmVwIC1DIDUgLWkgIiRrZXl3b3JkX2RpZSIKICAgICAgICAgICAgICAgICAgICAgICBl
Y2hvICIiCiAgICAgICAgICAgICAgICAgICAgICAgZG9fZXhpdD0xCiAgICAgICAgICAgICAgIGZp
CiAgICAgICBkb25lCiAgICAgICB0ZXN0ICIkZG9fZXhpdCIgPSAxICYmIGV4aXQgMQogICAgICAg
dHJ1ZQoKfQoKZG9fY29tcGlsZSgpIHsKICAgIGJhc2VfZG9fY29tcGlsZQoKfQoKZG9fYnVpbGQo
KSB7Cgk6Cgp9Cgpzc3RhdGVfdW5wYWNrX3BhY2thZ2UoKSB7Cglta2RpciAtcCAke1NTVEFURV9J
TlNURElSfQoJY2QgJHtTU1RBVEVfSU5TVERJUn0KCXRhciAteHZ6ZiAvaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL3NzdGF0ZS1jYWNoZS9JTi9zc3RhdGUtYmJsYXllcnMtYXJtdjV0ZS1w
b2t5LWxpbnV4LWdudWVhYmktMS4wLXIwLWFybXY1dGUtMi1JTlZBTElECgp9CgpwYWNrYWdlX3Vw
ZGF0ZV9pbmRleF9ycG0oKSB7CglpZiBbICEgLXogIiR7REVQTE9ZX0tFRVBfUEFDS0FHRVN9IiAt
byAhIC1lICIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvcnBtIiBd
OyB0aGVuCgkJcmV0dXJuCglmaQoKCSMgVXBkYXRlIHRhcmdldCBwYWNrYWdlcwoJYmFzZV9hcmNo
cz0iYWxsIGFueSBub2FyY2ggYXJtIGFybXY0IGFybXY0dCBhcm12NSBhcm12NXQgYXJtdjVlIGFy
bXY1dGUgbXlxZW11YXJtIgoJbWxfYXJjaHM9IiR7TVVMVElMSUJfUEFDS0FHRV9BUkNIU30iCglw
YWNrYWdlX3VwZGF0ZV9pbmRleF9ycG1fY29tbW9uICIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGIiIGJhc2VfYXJjaHMgbWxfYXJjaHMKCgkjIFVw
ZGF0ZSBTREsgcGFja2FnZXMKCWJhc2VfYXJjaHM9ImFsbCBhbnkgbm9hcmNoIHg4Nl82NC1uYXRp
dmVzZGsiCglwYWNrYWdlX3VwZGF0ZV9pbmRleF9ycG1fY29tbW9uICIvaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvcnBtL3NvbHZlZGItc2RrIiBiYXNlX2FyY2hzCgp9
CgpzeXNyb290X3N0YWdlX2FsbCgpIHsKCXN5c3Jvb3Rfc3RhZ2VfZGlycyAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2Ji
bGF5ZXJzLTEuMC1yMC9pbWFnZSAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93
b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9zeXNyb290LWRl
c3RkaXIvCgp9CgpsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdCgpIHsKCW1rZGlyIC1wIC9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9saWNlbnNlcy9iYmxheWVycy1teXFl
bXVhcm0tMjAxMjA4MjIxNDM4MDYKCSMgR2V0IGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzCgls
aXN0X2luc3RhbGxlZF9wYWNrYWdlcyB8IGdyZXAgLXYgImxvY2FsZSIgfHNvcnQgPiAvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXllcnMtbXlx
ZW11YXJtLTIwMTIwODIyMTQzODA2L3BhY2thZ2UubWFuaWZlc3QKCUlOU1RBTExFRF9QS0dTPWBj
YXQgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L2xpY2Vuc2VzL2Ji
bGF5ZXJzLW15cWVtdWFybS0yMDEyMDgyMjE0MzgwNi9wYWNrYWdlLm1hbmlmZXN0YAoJIyByZW1v
dmUgZXhpc3RpbmcgbGljZW5zZS5tYW5pZmVzdCBmaWxlCglpZiBbIC1mIC9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9saWNlbnNlcy9iYmxheWVycy1teXFlbXVhcm0t
MjAxMjA4MjIxNDM4MDYvbGljZW5zZS5tYW5pZmVzdCBdOyB0aGVuCgkJcm0gL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L2xpY2Vuc2VzL2JibGF5ZXJzLW15cWVtdWFy
bS0yMDEyMDgyMjE0MzgwNi9saWNlbnNlLm1hbmlmZXN0CglmaQoJIyBsaXN0IG9mIGluc3RhbGxl
ZCBwYWNrYWdlcyBpcyBicm9rZW4gZm9yIGRlYgoJZm9yIHBrZyBpbiAke0lOU1RBTExFRF9QS0dT
fTsgZG8KCQkjIG5vdCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyBidXQgbGljZW5zZXMgYXJlIG5v
dCBhcmNoIGRlcGVuZGFudCBpaXJjCgkJZmlsZW5hbWU9YGxzIC9ob21lL2xzZXJiYW4vd29yay9t
YXN0ZXIvYnVpbGQvdG1wL3BrZ2RhdGEvKi9ydW50aW1lLXJldmVyc2UvJHtwa2d9fCBoZWFkIC0x
YAoJCXBrZ2VkX3BuPSIkKHNlZCAtbiAncy9eUE46IC8vcCcgJHtmaWxlbmFtZX0pIgoJCXBrZ2Vk
X2xpYz0iJChzZWQgLW4gJy9eTElDRU5TRTogL3sgcy9eTElDRU5TRTogLy87IHMvWyt8JigpKl0v
IC9nOyBzLyAgKi8gL2c7IHAgfScgJHtmaWxlbmFtZX0pIgoJCXBrZ2VkX3B2PSIkKHNlZCAtbiAn
cy9eUFY6IC8vcCcgJHtmaWxlbmFtZX0pIgoJCSMgY2hlY2sgdG8gc2VlIGlmIHRoZSBwYWNrYWdl
IG5hbWUgZXhpc3RzIGluIHRoZSBtYW5pZmVzdC4gaWYgc28sIGJhaWwuCgkJaWYgISBncmVwIC1x
ICJQQUNLQUdFIE5BTUU6ICR7cGtnfSIgJHtmaWxlbmFtZX07IHRoZW4KCQkJIyBleGNsdWRlIGxv
Y2FsIHJlY2lwZXMKCQkJaWYgWyAhICIke3BrZ2VkX3BufSIgPSAiKmxvY2FsZSoiIF07IHRoZW4K
CQkJCWVjaG8gIlBBQ0tBR0UgTkFNRToiICR7cGtnfSA+PiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXllcnMtbXlxZW11YXJtLTIwMTIwODIy
MTQzODA2L2xpY2Vuc2UubWFuaWZlc3QKCQkJCWVjaG8gIlBBQ0tBR0UgVkVSU0lPTjoiICR7cGtn
ZWRfcHZ9ID4+IC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9saWNl
bnNlcy9iYmxheWVycy1teXFlbXVhcm0tMjAxMjA4MjIxNDM4MDYvbGljZW5zZS5tYW5pZmVzdAoJ
CQkJZWNobyAiUkVDSVBFIE5BTUU6IiAke3BrZ2VkX3BufSA+PiAvaG9tZS9sc2VyYmFuL3dvcmsv
bWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXllcnMtbXlxZW11YXJtLTIwMTIw
ODIyMTQzODA2L2xpY2Vuc2UubWFuaWZlc3QKCQkJCWVjaG8gIkxJQ0VOU0U6ICIgPj4gL2hvbWUv
bHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVwbG95L2xpY2Vuc2VzL2JibGF5ZXJzLW15
cWVtdWFybS0yMDEyMDgyMjE0MzgwNi9saWNlbnNlLm1hbmlmZXN0CgkJCQlmb3IgbGljIGluICR7
cGtnZWRfbGljfTsgZG8KCQkJCQlpZiBbIC1lICIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1
aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvJHtwa2dlZF9wbn0vZ2VuZXJpY18ke2xpY30iIF07IHRo
ZW4KCQkJCQkJZWNobyAke2xpY318c2VkIHMnL2dlbmVyaWNfLy8nZyA+PiAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXllcnMtbXlxZW11YXJt
LTIwMTIwODIyMTQzODA2L2xpY2Vuc2UubWFuaWZlc3QKCQkJCQllbHNlCgkJCQkJCWVjaG8gIldB
Uk5JTkc6IFRoZSBsaWNlbnNlIGxpc3RlZCwgIiAke2xpY30gIiB3YXMgbm90IGluIHRoZSBsaWNl
bnNlcyBjb2xsZWN0ZWQgZm9yICIgJHtwa2dlZF9wbn0+PiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXllcnMtbXlxZW11YXJtLTIwMTIwODIy
MTQzODA2L2xpY2Vuc2UubWFuaWZlc3QKCQkJCQlmaQoJCQkJZG9uZQoJCQkJZWNobyAiIiA+PiAv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvYmJsYXll
cnMtbXlxZW11YXJtLTIwMTIwODIyMTQzODA2L2xpY2Vuc2UubWFuaWZlc3QKCQkJZmkKCQlmaQoJ
ZG9uZQoKCSMgVHdvIG9wdGlvbnMgaGVyZToKCSMgLSBKdXN0IGNvcHkgdGhlIG1hbmlmZXN0Cgkj
IC0gQ29weSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBsaWNlbnNlIGRpcmVjdG9yaWVzCgkjIFdpdGgg
Ym90aCBvcHRpb25zIHNldCB3ZSBzZWUgYSAuNSBNIGluY3JlYXNlIGluIGNvcmUtaW1hZ2UtbWlu
aW1hbAoJaWYgWyAtbiAiJHtDT1BZX0xJQ19NQU5JRkVTVH0iIF07IHRoZW4KCQlta2RpciAtcCAv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51
eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9yb290ZnMvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNl
cy8KCQljcCAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvbGljZW5z
ZXMvYmJsYXllcnMtbXlxZW11YXJtLTIwMTIwODIyMTQzODA2L2xpY2Vuc2UubWFuaWZlc3QgL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgt
Z251ZWFiaS9iYmxheWVycy0xLjAtcjAvcm9vdGZzL3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXMv
bGljZW5zZS5tYW5pZmVzdAoJCWlmIFsgLW4gIiR7Q09QWV9MSUNfRElSU30iIF07IHRoZW4KCQkJ
Zm9yIHBrZyBpbiAke0lOU1RBTExFRF9QS0dTfTsgZG8KCQkJCW1rZGlyIC1wIC9ob21lL2xzZXJi
YW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkv
YmJsYXllcnMtMS4wLXIwL3Jvb3Rmcy91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzLyR7cGtnfQoJ
CQkJZm9yIGxpYyBpbiBgbHMgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvZGVw
bG95L2xpY2Vuc2VzLyR7cGtnfWA7IGRvCgkJCQkJIyBSZWFsbHkgZG9uJ3QgbmVlZCB0byBjb3B5
IHRoZSBnZW5lcmljcyBhcyB0aGV5J3JlCgkJCQkJIyByZXByZXNlbnRlZCBpbiB0aGUgbWFuaWZl
c3QgYW5kIGluIHRoZSBhY3R1YWwgcGtnIGxpY2Vuc2VzCgkJCQkJIyBEb2luZyBzbyB3b3VsZCBt
YWtlIHlvdXIgaW1hZ2UgcXVpdGUgYSBiaXQgbGFyZ2VyCgkJCQkJaWYgW1sgIiR7bGljfSIgIT0g
ImdlbmVyaWNfIiogXV07IHRoZW4KCQkJCQkJY3AgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9i
dWlsZC90bXAvZGVwbG95L2xpY2Vuc2VzLyR7cGtnfS8ke2xpY30gL2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVy
cy0xLjAtcjAvcm9vdGZzL3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXMvJHtwa2d9LyR7bGljfQoJ
CQkJCWVsaWYgW1sgIiR7bGljfSIgPT0gImdlbmVyaWNfIiogXV07IHRoZW4KCQkJCQkJaWYgWyAh
IC1mIC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5
LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL3Jvb3Rmcy91c3Ivc2hhcmUvY29tbW9uLWxp
Y2Vuc2VzLyR7bGljfSBdOyB0aGVuCgkJCQkJCQljcCAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC9kZXBsb3kvbGljZW5zZXMvJHtwa2d9LyR7bGljfSAvaG9tZS9sc2VyYmFuL3dv
cmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5
ZXJzLTEuMC1yMC9yb290ZnMvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcy8KCQkJCQkJZmkKCQkJ
CQkJbG4gLXMgLi4vJHtsaWN9IC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dv
cmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL3Jvb3Rmcy91c3Iv
c2hhcmUvY29tbW9uLWxpY2Vuc2VzLyR7cGtnfS8ke2xpY30KCQkJCQlmaQoJCQkJZG9uZQoJCQlk
b25lCgkJZmkKCWZpCgoKfQoKbWtsaWJzX29wdGltaXplX2ltYWdlKCkgewoJZm9yIGltZyBpbiAk
e01LTElCU19PUFRJTUlaRURfSU1BR0VTfQoJZG8KCQlpZiBbICIke2ltZ30iID0gImJibGF5ZXJz
IiBdIHx8IFsgIiR7aW1nfSIgPSAiYWxsIiBdCgkJdGhlbgoJCQlta2xpYnNfb3B0aW1pemVfaW1h
Z2VfZG9pdAoJCQlicmVhawoJCWZpCglkb25lCgp9CgpvZV9ydW5tYWtlKCkgewoJaWYgWyB4IiRN
QUtFIiA9IHggXTsgdGhlbiBNQUtFPW1ha2U7IGZpCgliYm5vdGUgbWFrZSAtZSBNQUtFRkxBR1M9
ICIkQCIKCW1ha2UgLWUgTUFLRUZMQUdTPSAiJEAiIHx8IGRpZSAib2VfcnVubWFrZSBmYWlsZWQi
Cgp9CgpjcmVhdGVfd3JhcHBlcigpIHsKICAgIyBDcmVhdGUgYSB3cmFwcGVyIHNjcmlwdAogICAj
CiAgICMgVGhlc2UgYXJlIHVzZWZ1bCB0byB3b3JrIGFyb3VuZCByZWxvY2F0aW9uIGlzc3Vlcywg
Ynkgc2V0dGluZyBlbnZpcm9ubWVudAogICAjIHZhcmlhYmxlcyB3aGljaCBwb2ludCB0byBwYXRo
cyBpbiB0aGUgZmlsZXN5c3RlbS4KICAgIwogICAjIFVzYWdlOiBjcmVhdGVfd3JhcHBlciBGSUxF
TkFNRSBbW1ZBUj1WQUxVRV0uLl0KCiAgIGNtZD0kMQogICBzaGlmdAoKICAgZWNobyAiR2VuZXJh
dGluZyB3cmFwcGVyIHNjcmlwdCBmb3IgJGNtZCIKCiAgIG12ICRjbWQgJGNtZC5yZWFsCiAgIGNt
ZG5hbWU9YGJhc2VuYW1lICRjbWRgLnJlYWwKICAgY2F0IDw8RU5EID4kY21kCiMhL2Jpbi9zaApy
ZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYApleGVjIGVudiAkQCBcYGRpcm5hbWUgXCRyZWFs
cGF0aFxgLyRjbWRuYW1lICJcJEAiCkVORAogICBjaG1vZCAreCAkY21kCgp9CgpiYmVycm9yKCkg
ewoJZWNobyAiRVJST1I6ICQqIgoKfQoKbWtsaWJzX29wdGltaXplX2ltYWdlX2RvaXQoKSB7Cgly
bSAtcmYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBv
a3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAvbWtsaWJzCglta2RpciAtcCAvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVl
YWJpL2JibGF5ZXJzLTEuMC1yMC9ta2xpYnMvZGVzdAoJY2QgL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0x
LjAtcjAvcm9vdGZzCglkdSAtYnMgPiAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3Rt
cC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9ta2xpYnMv
ZHUuYmVmb3JlLm1rbGlicy50eHQKCWZvciBpIGluIGBmaW5kIC5gOyBkbyBmaWxlICRpOyBkb25l
IFwKCQl8IGdyZXAgRUxGIFwKCQl8IGdyZXAgIkxTQiBleGVjdXRhYmxlIiBcCgkJfCBncmVwICJk
eW5hbWljYWxseSBsaW5rZWQiIFwKCQl8IHNlZCAicy86LiovLyIgXAoJCXwgc2VkICJzK15cLi8r
KyIgXAoJCT4gL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRl
LXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAvbWtsaWJzL2V4ZWN1dGFibGVzLmxp
c3QKCgljYXNlIGFybSBpbgoJCXBvd2VycGMgfCBtaXBzIHwgbWljcm9ibGF6ZSApCgkJCWR5bmFt
aWNfbG9hZGVyPSIvbGliL2xkLnNvLjEiCgkJCTs7CgkJcG93ZXJwYzY0KQoJCQlkeW5hbWljX2xv
YWRlcj0iL2xpYi9sZDY0LnNvLjEiCgkJCTs7CgkJeDg2XzY0KQoJCQlkeW5hbWljX2xvYWRlcj0i
L2xpYi9sZC1saW51eC14ODYtNjQuc28uMiIKCQkJOzsKCQlpNTg2ICkKCQkJZHluYW1pY19sb2Fk
ZXI9Ii9saWIvbGQtbGludXguc28uMiIKCQkJOzsKCQlhcm0gKQoJCQlkeW5hbWljX2xvYWRlcj0i
L2xpYi9sZC1saW51eC5zby4zIgoJCQk7OwoJCSogKQoJCQlkeW5hbWljX2xvYWRlcj0iL3Vua25v
d25fZHluYW1pY19saW5rZXIiCgkJCTs7Cgllc2FjCgoJbWtsaWJzIC12IFwKCQktLWxkbGliICR7
ZHluYW1pY19sb2FkZXJ9IFwKCQktLWxpYmRpciBsaWIgXAoJCS0tc3lzcm9vdCAvaG9tZS9sc2Vy
YmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy9teXFlbXVhcm0gXAoJCS0tcm9vdCAv
aG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51
eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9yb290ZnMgXAoJCS0tdGFyZ2V0IGBlY2hvIGFybS1w
b2t5LWxpbnV4LWdudWVhYmktIHwgc2VkICdzLy0kLy8nIGAgXAoJCS1kIC9ob21lL2xzZXJiYW4v
d29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJs
YXllcnMtMS4wLXIwL21rbGlicy9kZXN0IFwKCQlgY2F0IC9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4w
LXIwL21rbGlicy9leGVjdXRhYmxlcy5saXN0YAoKCWNkIC9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4w
LXIwL21rbGlicy9kZXN0Cglmb3IgaSBpbiAqCglkbwoJCWNwICRpIGBmaW5kIC9ob21lL2xzZXJi
YW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkv
YmJsYXllcnMtMS4wLXIwL3Jvb3RmcyAtbmFtZSAkaWAKCWRvbmUKCgljZCAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2Ji
bGF5ZXJzLTEuMC1yMC9yb290ZnMKCWR1IC1icyA+IC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIv
YnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIw
L21rbGlicy9kdS5hZnRlci5ta2xpYnMudHh0CgoJZWNobyByb290ZnMgc2l6ZSBiZWZvcmUgbWts
aWJzIG9wdGltaXphdGlvbjogYGNhdCAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3Rt
cC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9ta2xpYnMv
ZHUuYmVmb3JlLm1rbGlicy50eHRgCgllY2hvIHJvb3RmcyBzaXplIGFmdGVyIG1rbGlicyBvcHRp
bWl6YXRpb246IGBjYXQgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9h
cm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxheWVycy0xLjAtcjAvbWtsaWJzL2R1LmFmdGVy
Lm1rbGlicy50eHRgCgp9CgpwYWNrYWdlX2dlbmVyYXRlX3JwbV9jb25mX2NvbW1vbigpIHsKCXJw
bWNvbmZfYmFzZT0iJDEiCglzaGlmdAoKCXByaW50ZiAiX3NvbHZlX2RicGF0aCAiID4gJHtycG1j
b25mX2Jhc2V9Lm1hY3JvCglvX2NvbG9uPSJmYWxzZSIKCglmb3IgYXJjaHZhciBpbiAiJEAiOyBk
bwoJCXByaW50ZiAiX3NvbHZlX2RicGF0aCAiID4gJHtycG1jb25mX2Jhc2V9LSR7YXJjaHZhcn0u
bWFjcm8KCQljb2xvbj0iZmFsc2UiCgkJZm9yIGVhY2ggaW4gYGNhdCAke3JwbWNvbmZfYmFzZX0t
JHthcmNodmFyfS5jb25mYCA7IGRvCgkJCWlmIFsgIiRvX2NvbG9uIiA9ICJ0cnVlIiBdOyB0aGVu
CgkJCQlwcmludGYgIjoiID4+ICR7cnBtY29uZl9iYXNlfS5tYWNybwoJCQlmaQoJCQlpZiBbICIk
Y29sb24iID0gInRydWUiIF07IHRoZW4KCQkJCXByaW50ZiAiOiIgPj4gJHtycG1jb25mX2Jhc2V9
LSR7YXJjaHZhcn0ubWFjcm8KCQkJZmkKCQkJcHJpbnRmICIlcyIgJGVhY2ggPj4gJHtycG1jb25m
X2Jhc2V9Lm1hY3JvCgkJCW9fY29sb249InRydWUiCgkJCXByaW50ZiAiJXMiICRlYWNoID4+ICR7
cnBtY29uZl9iYXNlfS0ke2FyY2h2YXJ9Lm1hY3JvCgkJCWNvbG9uPSJ0cnVlIgoJCWRvbmUKCQlw
cmludGYgIlxuIiA+PiAke3JwbWNvbmZfYmFzZX0tJHthcmNodmFyfS5tYWNybwoJZG9uZQoJcHJp
bnRmICJcbiIgPj4gJHtycG1jb25mX2Jhc2V9Lm1hY3JvCgp9CgpzeXNyb290X3N0YWdlX2xpYmRp
cigpIHsKCXNyYz0iJDEiCglkZXN0PSIkMiIKCglzeXNyb290X3N0YWdlX2RpciAkc3JjICRkZXN0
Cgp9CgoKCnB5dGhvbiBjaGVja19zYW5pdHlfdG1wZGlyX2NoYW5nZSAoKSB7CmRlZiBjaGVja19z
YW5pdHlfdG1wZGlyX2NoYW5nZSh0bXBkaXIsIGRhdGEpOgogICAgIyBTYW5pdHkgY2hlY2tzIHRv
IGJlIGRvbmUgd2hlbiB0aGUgdmFsdWUgb2YgVE1QRElSIGNoYW5nZXMKCiAgICAjIENoZWNrIHRo
YXQgVE1QRElSIGlzbid0IG9uIGEgZmlsZXN5c3RlbSB3aXRoIGxpbWl0ZWQgZmlsZW5hbWUgbGVu
Z3RoIChlZy4gZUNyeXB0RlMpCiAgICB0ZXN0bXNnID0gY2hlY2tfY3JlYXRlX2xvbmdfZmlsZW5h
bWUodG1wZGlyLCAiVE1QRElSIikKICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gZmV0Y2ggZnJvbSB2
YXJpb3VzIG5ldHdvcmsgdHJhbnNwb3J0cwogICAgdGVzdG1zZyA9IHRlc3Rtc2cgKyBjaGVja19j
b25uZWN0aXZpdHkoZGF0YSkKICAgIHJldHVybiB0ZXN0bXNnCn0KCgpweXRob24gcnBhdGhfcmVw
bGFjZSAoKSB7CmRlZiBycGF0aF9yZXBsYWNlIChwYXRoLCBkKToKICAgIGJpbmRpcnMgPSBkLmV4
cGFuZCgiL3Vzci9iaW4gL3Vzci9zYmluIC9zYmluIC9iaW4gL3Vzci9saWIgL2xpYiAvdXNyL2xp
YmV4ZWMgIikuc3BsaXQoKQoKICAgIGZvciBiaW5kaXIgaW4gYmluZGlyczoKICAgICAgICAjYmIu
bm90ZSAoIlByb2Nlc3NpbmcgZGlyZWN0b3J5ICIgKyBiaW5kaXIpCiAgICAgICAgZGlyZWN0b3J5
ID0gcGF0aCArICIvIiArIGJpbmRpcgogICAgICAgIHByb2Nlc3NfZGlyIChkaXJlY3RvcnksIGQp
Cn0KCgpweXRob24gZG9fcGF0Y2ggKCkgewogICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2Rv
X3BhdGNoJywgZCkKfQoKCnB5dGhvbiBkb19kZXZzaGVsbCAoKSB7CiAgICBvZV90ZXJtaW5hbChk
LmdldFZhcignU0hFTEwnLCBUcnVlKSwgJ09wZW5FbWJlZGRlZCBEZXZlbG9wZXIgU2hlbGwnLCBk
KQp9CgoKcHl0aG9uIG9lX2ltcG9ydF9laCAoKSB7CiAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2
ZW50LkNvbmZpZ1BhcnNlZCk6CiAgICAgICAgb2VfaW1wb3J0KGUuZGF0YSkKICAgICAgICBlLmRh
dGEuc2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCBvZS5sc2IuZGlzdHJvX2lkZW50aWZpZXIoKSkK
fQoKCnB5dGhvbiBwYWNrYWdlX3FhX2NoZWNrX3Vuc2FmZV9yZWZlcmVuY2VzX2luX3NjcmlwdHMg
KCkgewpkZWYgcGFja2FnZV9xYV9jaGVja191bnNhZmVfcmVmZXJlbmNlc19pbl9zY3JpcHRzKHBh
dGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgoJIiIiCglXYXJuIGlmIHNjcmlwdHMgaW4gYmFz
ZV9bYmluZGlyfHNiaW5kaXJ8bGliZGlyXSByZWZlcmVuY2UgZmlsZXMgdW5kZXIgZXhlY19wcmVm
aXgKCSIiIgoJaWYgdW5zYWZlX3JlZmVyZW5jZXNfc2tpcHBhYmxlKHBhdGgsIG5hbWUsIGQpOgoJ
CXJldHVybgoKCWlmIG5vdCBlbGY6CgkJaW1wb3J0IHN0YXQKCQlpbXBvcnQgc3VicHJvY2VzcwoJ
CXBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKCgkJIyBFbnN1cmUgd2UncmUgY2hlY2tpbmcgYW4g
ZXhlY3V0YWJsZSBzY3JpcHQKCQlzdGF0aW5mbyA9IG9zLnN0YXQocGF0aCkKCQlpZiBib29sKHN0
YXRpbmZvLnN0X21vZGUgJiBzdGF0LlNfSVhVU1IpOgoJCQkjIGdyZXAgc2hlbGwgc2NyaXB0cyBm
b3IgcG9zc2libGUgcmVmZXJlbmNlcyB0byAvZXhlY19wcmVmaXgvCgkJCWV4ZWNfcHJlZml4ID0g
ZC5nZXRWYXIoJ2V4ZWNfcHJlZml4JywgVHJ1ZSkKCQkJc3RhdGVtZW50ID0gImdyZXAgLWUgJyVz
LycgJXMgPiAvZGV2L251bGwiICUgKGV4ZWNfcHJlZml4LCBwYXRoKQoJCQlpZiBzdWJwcm9jZXNz
LmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgoJCQkJZXJyb3JfbXNnID0gcG4gKyAi
OiBGb3VuZCBhIHJlZmVyZW5jZSB0byAlcy8gaW4gJXMiICUgKGV4ZWNfcHJlZml4LCBwYXRoKQoJ
CQkJcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVuc2FmZS1yZWZlcmVuY2VzLWluLXNjcmlwdHMi
LCBlcnJvcl9tc2csIGQpCgkJCQllcnJvcl9tc2cgPSAiU2hlbGwgc2NyaXB0cyBpbiBiYXNlX2Jp
bmRpciBhbmQgYmFzZV9zYmluZGlyIHNob3VsZCBub3QgcmVmZXJlbmNlIGFueXRoaW5nIGluIGV4
ZWNfcHJlZml4IgoJCQkJcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInVuc2FmZS1yZWZlcmVuY2Vz
LWluLXNjcmlwdHMiLCBlcnJvcl9tc2csIGQpCn0KCgpweXRob24gZG9fbGlzdHRhc2tzICgpIHsK
ICAgIGltcG9ydCBzeXMKICAgICMgZW1pdCB2YXJpYWJsZXMgYW5kIHNoZWxsIGZ1bmN0aW9ucwog
ICAgI2JiLmRhdGEuZW1pdF9lbnYoc3lzLl9fc3Rkb3V0X18sIGQpCiAgICAjIGVtaXQgdGhlIG1l
dGFkYXRhIHdoaWNoIGlzbnQgdmFsaWQgc2hlbGwKICAgIGZvciBlIGluIGQua2V5cygpOgogICAg
ICAgIGlmIGQuZ2V0VmFyRmxhZyhlLCAndGFzaycpOgogICAgICAgICAgICBiYi5wbGFpbigiJXMi
ICUgZSkKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2NsZWFuX3BhdGggKCkgewpkZWYgcGFja2FnZV9x
YV9jbGVhbl9wYXRoKHBhdGgsZCk6CiAgICAiIiIgUmVtb3ZlIHRoZSBjb21tb24gcHJlZml4IGZy
b20gdGhlIHBhdGguIEluIHRoaXMgY2FzZSBpdCBpcyB0aGUgVE1QRElSIiIiCiAgICByZXR1cm4g
cGF0aC5yZXBsYWNlKGQuZ2V0VmFyKCdUTVBESVInLFRydWUpLCIiKQp9CgoKcHl0aG9uIGdlbl9w
YWNrYWdldmFyICgpIHsKZGVmIGdlbl9wYWNrYWdldmFyKGQpOgogICAgcmV0ID0gW10KICAgIHBr
Z3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VTIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIHZhcnMg
PSAoZC5nZXRWYXIoIlBBQ0tBR0VWQVJTIiwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIGZvciBw
IGluIHBrZ3M6CiAgICAgICAgZm9yIHYgaW4gdmFyczoKICAgICAgICAgICAgcmV0LmFwcGVuZCh2
ICsgIl8iICsgcCkKICAgIHJldHVybiAiICIuam9pbihyZXQpCn0KCgpweXRob24gZG9fY2xlYW5z
c3RhdGUgKCkgewogICAgICAgIHNzdGF0ZV9jbGVhbl9jYWNoZWZpbGVzKGQpCn0KCgpweXRob24g
cGFja2FnZV9ycG1fZm4gKCkgewogICAgZC5zZXRWYXIoJ1BLR0ZOJywgZC5nZXRWYXIoJ1BLRycp
KQp9CgoKcHl0aG9uIGdldF9saWJjX2xvY2FsZXNfZGVwZW5kZW5jaWVzICgpIHsKZGVmIGdldF9s
aWJjX2xvY2FsZXNfZGVwZW5kZW5jaWVzKGQpOgogICAgaWYgJ2xpYmMtbG9jYWxlcycgaW4gKGQu
Z2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnLCBUcnVlKSBvciAnJykuc3BsaXQoKSA6CiAgICAgICAg
cmV0dXJuIGQuZ2V0VmFyKCdMSUJDX0xPQ0FMRV9ERVBFTkRFTkNJRVMnLCBUcnVlKSBvciAnJwog
ICAgZWxzZToKICAgICAgICByZXR1cm4gJyd9CgoKcHl0aG9uIHJ1bl9idWlsZHN0YXRzICgpIHsK
ICAgIGltcG9ydCBiYi5idWlsZAogICAgaW1wb3J0IGJiLmV2ZW50CiAgICBpbXBvcnQgYmIuZGF0
YQogICAgaW1wb3J0IHRpbWUsIHN1YnByb2Nlc3MsIHBsYXRmb3JtCgogICAgaWYgaXNpbnN0YW5j
ZShlLCBiYi5ldmVudC5CdWlsZFN0YXJ0ZWQpOgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAg
ICAgICMgYXQgZmlyc3QgcGFzcyBtYWtlIHRoZSBidWlsZHN0YXRzIGhlcmlhcmNoeSBhbmQgdGhl
bgogICAgICAgICMgc2V0IHRoZSBidWlsZG5hbWUKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAg
ICAgICB0cnk6CiAgICAgICAgICAgIGJiLm1rZGlyaGllcihlLmRhdGEuZ2V0VmFyKCdCVUlMRFNU
QVRTX0JBU0UnLCBUcnVlKSkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHBhc3MKICAgICAg
ICBzZXRfYm4oZSkKICAgICAgICBibiA9IGdldF9ibihlKQogICAgICAgIHNldF9kZXZpY2UoZSkK
ICAgICAgICBkZXZpY2UgPSBnZXRfZGV2aWNlKGUpCgogICAgICAgIGJzZGlyID0gb3MucGF0aC5q
b2luKGUuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIFRydWUpLCBibikKICAgICAgICB0
cnk6CiAgICAgICAgICAgIGJiLm1rZGlyaGllcihic2RpcikKICAgICAgICBleGNlcHQ6CiAgICAg
ICAgICAgIHBhc3MKICAgICAgICBpZiBkZXZpY2UgIT0gIk5vTG9naWNhbERldmljZSI6CiAgICAg
ICAgICAgIHNldF9kaXNrZGF0YSgiX19kaXNrZGF0YV9idWlsZCIsIGRldmljZSwgZS5kYXRhKQog
ICAgICAgIHNldF90aW1lZGF0YSgiX190aW1lZGF0YV9idWlsZCIsIGUuZGF0YSkKICAgICAgICBi
dWlsZF90aW1lID0gb3MucGF0aC5qb2luKGJzZGlyLCAiYnVpbGRfc3RhdHMiKQogICAgICAgICMg
d3JpdGUgc3RhcnQgb2YgYnVpbGQgaW50byBidWlsZF90aW1lCiAgICAgICAgZmlsZSA9IG9wZW4o
YnVpbGRfdGltZSwiYSIpCiAgICAgICAgaG9zdF9pbmZvID0gcGxhdGZvcm0udW5hbWUoKQogICAg
ICAgIGZpbGUud3JpdGUoIkhvc3QgSW5mbzogIikKICAgICAgICBmb3IgeCBpbiBob3N0X2luZm86
CiAgICAgICAgICAgIGlmIHg6CiAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHggKyAiICIpCiAg
ICAgICAgZmlsZS53cml0ZSgiXG4iKQogICAgICAgIGZpbGUud3JpdGUoIkJ1aWxkIFN0YXJ0ZWQ6
ICUwLjJmIFxuIiAlIHRpbWUudGltZSgpKQogICAgICAgIGZpbGUuY2xvc2UoKQoKICAgIGVsaWYg
aXNpbnN0YW5jZShlLCBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCk6CiAgICAgICAgYm4gPSBnZXRf
Ym4oZSkKICAgICAgICBkZXZpY2UgPSBnZXRfZGV2aWNlKGUpCiAgICAgICAgYnNkaXIgPSBvcy5w
YXRoLmpvaW4oZS5kYXRhLmdldFZhcignQlVJTERTVEFUU19CQVNFJywgVHJ1ZSksIGJuKQogICAg
ICAgIHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNkaXIsIGUuZGF0YS5leHBhbmQoImJibGF5ZXJz
LTEuMC1yMCIpKQogICAgICAgIGJ1aWxkX3RpbWUgPSBvcy5wYXRoLmpvaW4oYnNkaXIsICJidWls
ZF9zdGF0cyIpCiAgICAgICAgZmlsZSA9IG9wZW4oYnVpbGRfdGltZSwgImEiKQogICAgICAgICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogICAgICAgICMgV3JpdGUgYnVpbGQgc3RhdGlzdGljcyBmb3IgdGhlIGJ1
aWxkCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgdGltZWRhdGEgPSBnZXRfdGltZWRh
dGEoIl9fdGltZWRhdGFfYnVpbGQiLCBlLmRhdGEpCiAgICAgICAgaWYgdGltZWRhdGE6CiAgICAg
ICAgICAgIHRpbWUsIGNwdSA9IHRpbWVkYXRhCiAgICAgICAgICAgICMgd3JpdGUgZW5kIG9mIGJ1
aWxkIGFuZCBjcHUgdXNlZCBpbnRvIGJ1aWxkX3RpbWUKICAgICAgICAgICAgZmlsZSA9IG9wZW4o
YnVpbGRfdGltZSwgImEiKQogICAgICAgICAgICBmaWxlLndyaXRlKCJFbGFwc2VkIHRpbWU6ICUw
LjJmIHNlY29uZHMgXG4iICUgKHRpbWUpKQogICAgICAgICAgICBpZiBjcHU6CiAgICAgICAgICAg
ICAgICBmaWxlLndyaXRlKCJDUFUgdXNhZ2U6ICUwLjFmJSUgXG4iICUgY3B1KQogICAgICAgIGlm
IGRldmljZSAhPSAiTm9Mb2dpY2FsRGV2aWNlIjoKICAgICAgICAgICAgZGlza2lvID0gZ2V0X2Rp
c2tkYXRhKCJfX2Rpc2tkYXRhX2J1aWxkIiwgZGV2aWNlLCBlLmRhdGEpCiAgICAgICAgICAgIGlm
IGRpc2tpbzoKICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGRpc2tpby5pdGVya2V5
cygpKToKICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGtleSArICI6ICIgKyBkaXNraW9b
a2V5XSArICJcbiIpCiAgICAgICAgZmlsZS5jbG9zZSgpCgogICAgaWYgaXNpbnN0YW5jZShlLCBi
Yi5idWlsZC5UYXNrU3RhcnRlZCk6CiAgICAgICAgYm4gPSBnZXRfYm4oZSkKICAgICAgICBkZXZp
Y2UgPSBnZXRfZGV2aWNlKGUpCiAgICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oZS5kYXRhLmdl
dFZhcignQlVJTERTVEFUU19CQVNFJywgVHJ1ZSksIGJuKQogICAgICAgIHRhc2tkaXIgPSBvcy5w
YXRoLmpvaW4oYnNkaXIsIGUuZGF0YS5leHBhbmQoImJibGF5ZXJzLTEuMC1yMCIpKQogICAgICAg
IGlmIGRldmljZSAhPSAiTm9Mb2dpY2FsRGV2aWNlIjoKICAgICAgICAgICAgc2V0X2Rpc2tkYXRh
KCJfX2Rpc2tkYXRhX3Rhc2siLCBkZXZpY2UsIGUuZGF0YSkKICAgICAgICBzZXRfdGltZWRhdGEo
Il9fdGltZWRhdGFfdGFzayIsIGUuZGF0YSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIGJiLm1r
ZGlyaGllcih0YXNrZGlyKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcGFzcwogICAgICAg
ICMgd3JpdGUgaW50byB0aGUgdGFzayBldmVudCBmaWxlIHRoZSBuYW1lIGFuZCBzdGFydCB0aW1l
CiAgICAgICAgZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKHRhc2tkaXIsIGUudGFzayksICJhIikK
ICAgICAgICBmaWxlLndyaXRlKCJFdmVudDogJXMgXG4iICUgYmIuZXZlbnQuZ2V0TmFtZShlKSkK
ICAgICAgICBmaWxlLndyaXRlKCJTdGFydGVkOiAlMC4yZiBcbiIgJSB0aW1lLnRpbWUoKSkKICAg
ICAgICBmaWxlLmNsb3NlKCkKCiAgICBlbGlmIGlzaW5zdGFuY2UoZSwgYmIuYnVpbGQuVGFza1N1
Y2NlZWRlZCk6CiAgICAgICAgYm4gPSBnZXRfYm4oZSkKICAgICAgICBkZXZpY2UgPSBnZXRfZGV2
aWNlKGUpCiAgICAgICAgYnNkaXIgPSBvcy5wYXRoLmpvaW4oZS5kYXRhLmdldFZhcignQlVJTERT
VEFUU19CQVNFJywgVHJ1ZSksIGJuKQogICAgICAgIHRhc2tkaXIgPSBvcy5wYXRoLmpvaW4oYnNk
aXIsIGUuZGF0YS5leHBhbmQoImJibGF5ZXJzLTEuMC1yMCIpKQogICAgICAgIHdyaXRlX3Rhc2tf
ZGF0YSgicGFzc2VkIiwgb3MucGF0aC5qb2luKHRhc2tkaXIsIGUudGFzayksIGRldmljZSwgZSkK
ICAgICAgICBpZiBlLnRhc2sgPT0gImRvX3Jvb3RmcyI6CiAgICAgICAgICAgIGJzZGlyID0gb3Mu
cGF0aC5qb2luKGUuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIFRydWUpLCBibikKICAg
ICAgICAgICAgYnM9b3MucGF0aC5qb2luKGJzZGlyLCAiYnVpbGRfc3RhdHMiKQogICAgICAgICAg
ICBmaWxlID0gb3BlbihicywiYSIpCiAgICAgICAgICAgIHJvb3RmcyA9IGUuZGF0YS5nZXRWYXIo
J0lNQUdFX1JPT1RGUycsIFRydWUpCiAgICAgICAgICAgIHJvb3Rmc19zaXplID0gc3VicHJvY2Vz
cy5Qb3BlbihbImR1IiwgIi1zaCIsIHJvb3Rmc10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0
ZG91dC5yZWFkKCkKICAgICAgICAgICAgZmlsZS53cml0ZSgiVW5jb21wcmVzc2VkIFJvb3RmcyBz
aXplOiAlcyIgJSByb290ZnNfc2l6ZSkKICAgICAgICAgICAgZmlsZS5jbG9zZSgpCgogICAgZWxp
ZiBpc2luc3RhbmNlKGUsIGJiLmJ1aWxkLlRhc2tGYWlsZWQpOgogICAgICAgIGJuID0gZ2V0X2Ju
KGUpCiAgICAgICAgZGV2aWNlID0gZ2V0X2RldmljZShlKQogICAgICAgIGJzZGlyID0gb3MucGF0
aC5qb2luKGUuZGF0YS5nZXRWYXIoJ0JVSUxEU1RBVFNfQkFTRScsIFRydWUpLCBibikKICAgICAg
ICB0YXNrZGlyID0gb3MucGF0aC5qb2luKGJzZGlyLCBlLmRhdGEuZXhwYW5kKCJiYmxheWVycy0x
LjAtcjAiKSkKICAgICAgICB3cml0ZV90YXNrX2RhdGEoImZhaWxlZCIsIG9zLnBhdGguam9pbih0
YXNrZGlyLCBlLnRhc2spLCBkZXZpY2UsIGUpCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAg
ICAgIyBMZXRzIG1ha2UgdGhpbmdzIGVhc2llciBhbmQgdGVsbCBwZW9wbGUgd2hlcmUgdGhlIGJ1
aWxkIGZhaWxlZCBpbgogICAgICAgICMgYnVpbGRfc3RhdHVzLiBXZSBkbyB0aGlzIGhlcmUgYmVj
YXVzZSBCdWlsZENvbXBsZXRlZCB0cmlnZ2VycyBubwogICAgICAgICMgbWF0dGVyIHdoYXQgdGhl
IHN0YXR1cyBvZiB0aGUgYnVpbGQgYWN0dWFsbHkgaXMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICAgICAgICBidWlsZF9zdGF0dXMgPSBvcy5wYXRoLmpvaW4oYnNkaXIsICJidWlsZF9zdGF0cyIp
CiAgICAgICAgZmlsZSA9IG9wZW4oYnVpbGRfc3RhdHVzLCJhIikKICAgICAgICBmaWxlLndyaXRl
KGUuZGF0YS5leHBhbmQoIkZhaWxlZCBhdDogYmJsYXllcnMtMS4wLXIwIGF0IHRhc2s6ICVzIFxu
IiAlIGUudGFzaykpCiAgICAgICAgZmlsZS5jbG9zZSgpCgp9CgoKcHl0aG9uIHNzdGF0ZV9pbnN0
YWxsICgpIHsKZGVmIHNzdGF0ZV9pbnN0YWxsKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgog
ICAgc2hhcmVkZmlsZXMgPSBbXQogICAgc2hhcmVkZGlycyA9IFtdCiAgICBiYi5ta2RpcmhpZXIo
ZC5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3NzdGF0ZS1jb250
cm9sIikpCiAgICBtYW5pZmVzdCA9IGQuZXhwYW5kKCIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC9zc3RhdGUtY29udHJvbC9tYW5pZmVzdC1hcm12NXRlLWJibGF5ZXJzLiVzIiAl
IHNzWyduYW1lJ10pCgogICAgaWYgb3MuYWNjZXNzKG1hbmlmZXN0LCBvcy5SX09LKToKICAgICAg
ICBiYi5mYXRhbCgiUGFja2FnZSBhbHJlYWR5IHN0YWdlZCAoJXMpPyEiICUgbWFuaWZlc3QpCgog
ICAgbG9ja3MgPSBbXQogICAgZm9yIGxvY2sgaW4gc3NbJ2xvY2tmaWxlcy1zaGFyZWQnXToKICAg
ICAgICBsb2Nrcy5hcHBlbmQoYmIudXRpbHMubG9ja2ZpbGUobG9jaywgVHJ1ZSkpCiAgICBmb3Ig
bG9jayBpbiBzc1snbG9ja2ZpbGVzJ106CiAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxv
Y2tmaWxlKGxvY2spKQoKICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgogICAgICAgIG9lLnBh
dGguY29weXRyZWUoc3RhdGVbMV0sIHN0YXRlWzJdKQogICAgICAgIGZvciB3YWxrcm9vdCwgZGly
cywgZmlsZXMgaW4gb3Mud2FsayhzdGF0ZVsxXSk6CiAgICAgICAgICAgIGJiLmRlYnVnKDIsICJT
dGFnaW5nIGZpbGVzIGZyb20gJXMgdG8gJXMiICUgKHN0YXRlWzFdLCBzdGF0ZVsyXSkpCiAgICAg
ICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBh
dGguam9pbih3YWxrcm9vdCwgZmlsZSkKICAgICAgICAgICAgICAgIGRzdHBhdGggPSBzcmNwYXRo
LnJlcGxhY2Uoc3RhdGVbMV0sIHN0YXRlWzJdKQogICAgICAgICAgICAgICAgI2JiLmRlYnVnKDIs
ICJTdGFnaW5nICVzIHRvICVzIiAlIChzcmNwYXRoLCBkc3RwYXRoKSkKICAgICAgICAgICAgICAg
IHNoYXJlZGZpbGVzLmFwcGVuZChkc3RwYXRoKQogICAgICAgICAgICBmb3IgZGlyIGluIGRpcnM6
CiAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4od2Fsa3Jvb3QsIGRpcikKICAg
ICAgICAgICAgICAgIGRzdGRpciA9IHNyY2Rpci5yZXBsYWNlKHN0YXRlWzFdLCBzdGF0ZVsyXSkK
ICAgICAgICAgICAgICAgICNiYi5kZWJ1ZygyLCAiU3RhZ2luZyAlcyB0byAlcyIgJSAoc3JjZGly
LCBkc3RkaXIpKQogICAgICAgICAgICAgICAgaWYgbm90IGRzdGRpci5lbmRzd2l0aCgiLyIpOgog
ICAgICAgICAgICAgICAgICAgIGRzdGRpciA9IGRzdGRpciArICIvIgogICAgICAgICAgICAgICAg
c2hhcmVkZGlycy5hcHBlbmQoZHN0ZGlyKQogICAgZiA9IG9wZW4obWFuaWZlc3QsICJ3IikKICAg
IGZvciBmaWxlIGluIHNoYXJlZGZpbGVzOgogICAgICAgIGYud3JpdGUoZmlsZSArICJcbiIpCiAg
ICAjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgZGlyZWN0b3JpZXMgYXBwZWFyIGF0IHRoZSBlbmQg
b2YgdGhlIG1hbmlmZXN0CiAgICAjIHNvIHRoYXQgd2hlbiB3ZSB0ZXN0IHRvIHNlZSBpZiB0aGV5
IHNob3VsZCBiZSBkZWxldGVkIGFueSBjb250ZW50cwogICAgIyBhZGRlZCBieSB0aGUgdGFzayB3
aWxsIGhhdmUgYmVlbiByZW1vdmVkIGZpcnN0LgogICAgZGlycyA9IHNvcnRlZChzaGFyZWRkaXJz
LCBrZXk9bGVuKQogICAgIyBNdXN0IHJlbW92ZSBjaGlsZHJlbiBmaXJzdCwgd2hpY2ggd2lsbCBo
YXZlIGEgbG9uZ2VyIHBhdGggdGhhbiB0aGUgcGFyZW50CiAgICBmb3IgZGkgaW4gcmV2ZXJzZWQo
ZGlycyk6CiAgICAgICAgZi53cml0ZShkaSArICJcbiIpCiAgICBmLmNsb3NlKCkKCiAgICBmb3Ig
cG9zdGluc3QgaW4gKGQuZ2V0VmFyKCdTU1RBVEVQT1NUSU5TVEZVTkNTJywgVHJ1ZSkgb3IgJycp
LnNwbGl0KCk6CiAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKHBvc3RpbnN0LCBkKQoKICAgIGZv
ciBsb2NrIGluIGxvY2tzOgogICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKfQoKCnB5
dGhvbiBzcGxpdGZpbGUyICgpIHsKZGVmIHNwbGl0ZmlsZTIoZGVidWdzcmNkaXIsIGQpOgogICAg
IyBGdW5jdGlvbiB0byBzcGxpdCBhIHNpbmdsZSBmaWxlLCBjYWxsZWQgZnJvbSBzcGxpdF9hbmRf
c3RyaXBfZmlsZXMgYmVsb3cKICAgICMKICAgICMgVGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiBw
cm9jZXNzZWQgaW4gdGhlIHNwbGl0ZmlsZTIgaXMgZnVydGhlciBwcm9jZWNlc3NlZAogICAgIyBh
bmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgoKICAgIGltcG9ydCBjb21tYW5kcywg
c3RhdCwgc3VicHJvY2VzcwoKICAgIHNvdXJjZWZpbGUgPSBkLmV4cGFuZCgiL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9i
YmxheWVycy0xLjAtcjAvZGVidWdzb3VyY2VzLmxpc3QiKQogICAgaWYgZGVidWdzcmNkaXIgYW5k
IG9zLnBhdGguaXNmaWxlKHNvdXJjZWZpbGUpOgogICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dE
JywgVHJ1ZSkKICAgICAgIHBhdGhwcmVmaXggPSAiZXhwb3J0IFBBVEg9JXM7ICIgJSBkLmdldFZh
cignUEFUSCcsIFRydWUpCiAgICAgICBzdHJpcCA9IGQuZ2V0VmFyKCJTVFJJUCIsIFRydWUpCiAg
ICAgICBvYmpjb3B5ID0gZC5nZXRWYXIoIk9CSkNPUFkiLCBUcnVlKQogICAgICAgZGVidWdlZGl0
ID0gZC5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3Rz
L3g4Nl82NC1saW51eC91c3IvbGliL3JwbS9iaW4vZGVidWdlZGl0IikKICAgICAgIHdvcmtkaXIg
PSBkLmdldFZhcigiV09SS0RJUiIsIFRydWUpCiAgICAgICB3b3JrcGFyZW50ZGlyID0gb3MucGF0
aC5kaXJuYW1lKHdvcmtkaXIpCiAgICAgICB3b3JrYmFzZWRpciA9IG9zLnBhdGguYmFzZW5hbWUo
d29ya2RpcikKCiAgICAgICBub3N1Y2hkaXIgPSBbXQogICAgICAgYmFzZXBhdGggPSBkdmFyCiAg
ICAgICBmb3IgcCBpbiBkZWJ1Z3NyY2Rpci5zcGxpdCgiLyIpOgogICAgICAgICAgIGJhc2VwYXRo
ID0gYmFzZXBhdGggKyAiLyIgKyBwCiAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJh
c2VwYXRoKToKICAgICAgICAgICAgICAgbm9zdWNoZGlyLmFwcGVuZChiYXNlcGF0aCkKICAgICAg
IGJiLm1rZGlyaGllcihiYXNlcGF0aCkKCiAgICAgICBwcm9jZXNzZGVidWdzcmMgPSAgIkxDX0FM
TD1DIDsgc29ydCAteiAtdSAnJXMnIHwgZWdyZXAgLXYgLXogJyg8aW50ZXJuYWw+fDxidWlsdC1p
bj4pJCcgfCAiCiAgICAgICAjIFdlIG5lZWQgdG8gaWdub3JlIGZpbGVzIHRoYXQgYXJlIG5vdCBh
Y3R1YWxseSBvdXJzCiAgICAgICAjIHdlIGRvIHRoaXMgYnkgb25seSBwYXlpbmcgYXR0ZW50aW9u
IHRvIGl0ZW1zIGZyb20gdGhpcyBwYWNrYWdlCiAgICAgICBwcm9jZXNzZGVidWdzcmMgKz0gImZn
cmVwIC16ICclcycgfCAiCiAgICAgICBwcm9jZXNzZGVidWdzcmMgKz0gIihjZCAnJXMnIDsgY3Bp
byAtcGQwbUwgLS1uby1wcmVzZXJ2ZS1vd25lciAnJXMlcycgMj4vZGV2L251bGwpIgoKICAgICAg
IHN1YnByb2Nlc3MuY2FsbChwcm9jZXNzZGVidWdzcmMgJSAoc291cmNlZmlsZSwgd29ya2Jhc2Vk
aXIsIHdvcmtwYXJlbnRkaXIsIGR2YXIsIGRlYnVnc3JjZGlyKSwgc2hlbGw9VHJ1ZSkKCiAgICAg
ICAjIFRoZSBjb3B5IGJ5IGNwaW8gbWF5IGhhdmUgcmVzdWx0ZWQgaW4gc29tZSBlbXB0eSBkaXJl
Y3RvcmllcyEgIFJlbW92ZSB0aGVzZQogICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9z
LndhbGsoIiVzJXMiICUgKGR2YXIsIGRlYnVnc3JjZGlyKSk6CiAgICAgICAgICBmb3IgZCBpbiBk
aXJzOgogICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihyb290LCBkKQogICAgICAgICAg
ICAgICNiYi5ub3RlKCJybWRpciAtcCAlcyIgJSBkaXIpCiAgICAgICAgICAgICAgc3VicHJvY2Vz
cy5jYWxsKCJybWRpciAtcCAlcyAyPi9kZXYvbnVsbCIgJSBkaXIsIHNoZWxsPVRydWUpCgogICAg
ICAgIyBBbHNvIHJlbW92ZSBkZWJ1Z3NyY2RpciBpZiBpdHMgZW1wdHkKICAgICAgIGZvciBwIGlu
IG5vc3VjaGRpcls6Oi0xXToKICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKSBhbmQgbm90
IG9zLmxpc3RkaXIocCk6CiAgICAgICAgICAgICAgIG9zLnJtZGlyKHApCn0KCgpweXRob24gaW5j
b21wYXRpYmxlX2xpY2Vuc2UgKCkgewpkZWYgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgZG9udF93
YW50X2xpY2Vuc2UsIHBhY2thZ2U9IiIpOgogICAgIiIiCiAgICBUaGlzIGZ1bmN0aW9uIGNoZWNr
cyBpZiBhIHJlY2lwZSBoYXMgb25seSBpbmNvbXBhdGlibGUgbGljZW5zZXMuIEl0IGFsc28gdGFr
ZSBpbnRvIGNvbnNpZGVyYXRpb24gJ29yJwogICAgb3BlcmFuZC4KICAgICIiIgogICAgaW1wb3J0
IHJlCiAgICBpbXBvcnQgb2UubGljZW5zZQogICAgZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNo
Y2FzZSBhcyBmbm1hdGNoCiAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAgICBkb250X3dh
bnRfbGljZW5zZXMgPSBbXQogICAgZG9udF93YW50X2xpY2Vuc2VzLmFwcGVuZChkLmdldFZhcign
SU5DT01QQVRJQkxFX0xJQ0VOU0UnLCBUcnVlKSkKICAgIHJlY2lwZV9saWNlbnNlID0gZC5nZXRW
YXIoJ0xJQ0VOU0UnLCBUcnVlKQogICAgaWYgcGFja2FnZSAhPSAiIjoKICAgICAgICBpZiBkLmdl
dFZhcignTElDRU5TRV8nICsgcG4gKyAnLScgKyBwYWNrYWdlLCBUcnVlKToKICAgICAgICAgICAg
bGljZW5zZSA9IGQuZ2V0VmFyKCdMSUNFTlNFXycgKyBwbiArICctJyArIHBhY2thZ2UsIFRydWUp
CiAgICAgICAgZWxzZToKICAgICAgICAgICAgbGljZW5zZSA9IHJlY2lwZV9saWNlbnNlCiAgICBl
bHNlOgogICAgICAgIGxpY2Vuc2UgPSByZWNpcGVfbGljZW5zZQogICAgc3BkeF9saWNlbnNlID0g
cmV0dXJuX3NwZHgoZCwgZG9udF93YW50X2xpY2Vuc2UpCiAgICBkb250X3dhbnRfbGljZW5zZXMu
YXBwZW5kKHNwZHhfbGljZW5zZSkKCiAgICBkZWYgaW5jbHVkZV9saWNlbnNlKGxpY2Vuc2UpOgog
ICAgICAgIGlmIGFueShmbm1hdGNoKGxpY2Vuc2UsIHBhdHRlcm4pIGZvciBwYXR0ZXJuIGluIGRv
bnRfd2FudF9saWNlbnNlcyk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6
CiAgICAgICAgICAgIHJldHVybiBUcnVlCgogICAgZGVmIGNob29zZV9saWNlbnNlcyhhLCBiKToK
ICAgICAgICBpZiBhbGwoaW5jbHVkZV9saWNlbnNlKGxpYykgZm9yIGxpYyBpbiBhKToKICAgICAg
ICAgICAgcmV0dXJuIGEKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gYgoKICAgICIi
IgogICAgSWYgeW91IHdhbnQgdG8gZXhsdWRlIGxpY2Vuc2UgbmFtZWQgZ2VuZXJpY2FsbHkgJ1gn
LCB3ZSBzdXJlbHkgd2FudCB0byBleGx1ZGUgJ1grJyBhcyB3ZWxsLgogICAgSW4gY29uc2VxdWVu
Y2UsIHdlIHdpbGwgZXhjbHVkZSB0aGUgJysnIGNoYXJhY3RlciBmcm9tIExJQ0VOU0UgaW4gY2Fz
ZSBJTkNPTVBBVElCTEVfTElDRU5TRQogICAgaXMgbm90IGEgJ1grJyBsaWNlbnNlLgogICAgIiIi
CiAgICBpZiBub3QgcmUuc2VhcmNoKHInWytdJyxkb250X3dhbnRfbGljZW5zZSk6CiAgICAgICAg
bGljZW5zZXM9b2UubGljZW5zZS5mbGF0dGVuZWRfbGljZW5zZXMocmUuc3ViKHInWytdJywgJycs
IGxpY2Vuc2UpLCBjaG9vc2VfbGljZW5zZXMpCiAgICBlbHNlOgogICAgICAgIGxpY2Vuc2VzPW9l
LmxpY2Vuc2UuZmxhdHRlbmVkX2xpY2Vuc2VzKGxpY2Vuc2UsIGNob29zZV9saWNlbnNlcykKCiAg
ICBmb3Igb25lbGljZW5zZSBpbiBsaWNlbnNlczoKICAgICAgICBpZiBub3QgaW5jbHVkZV9saWNl
bnNlKG9uZWxpY2Vuc2UpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNl
Cn0KCgpweXRob24gYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwgKCkgewpkZWYgYmFzZV92ZXJz
aW9uX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2
YWx1ZSwgZCk6CiAgICByZXR1cm4gb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKHZhcmlh
YmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCn0KCgpweXRob24gZG9f
cGFja2FnZV9zZXRzY2VuZSAoKSB7CiAgICBzc3RhdGVfc2V0c2NlbmUoZCkKfQoKCnB5dGhvbiBi
YXNlX2RlcF9wcmVwZW5kICgpIHsKTm9uZX0KCgpweXRob24gY2hlY2tfcGF0aF9sZW5ndGggKCkg
ewpkZWYgY2hlY2tfcGF0aF9sZW5ndGgoZmlsZXBhdGgsIHBhdGhuYW1lLCBsaW1pdCk6CiAgICBp
ZiBsZW4oZmlsZXBhdGgpID4gbGltaXQ6CglyZXR1cm4gIlRoZSBsZW5ndGggb2YgJXMgaXMgbG9u
Z2VyIHRoYW4gNDEwLCB0aGlzIHdvdWxkIGNhdXNlIHVuZXhwZWN0ZWQgZXJyb3JzLCBwbGVhc2Ug
dXNlIGEgc2hvcnRlciBwYXRoLlxuIiAlIHBhdGhuYW1lCiAgICByZXR1cm4gIiIKfQoKCnB5dGhv
biBnZXRfY3B1dGltZSAoKSB7CmRlZiBnZXRfY3B1dGltZSgpOgogICAgZmllbGRzID0gb3Blbigi
L3Byb2Mvc3RhdCIsICJyIikucmVhZGxpbmUoKS5yc3RyaXAoKS5zcGxpdCgpWzE6XQogICAgcmV0
dXJuIHN1bShpbnQoZmllbGQpIGZvciBmaWVsZCBpbiBmaWVsZHMpCn0KCgpweXRob24gZml4dXBf
cGVybXMgKCkgewogICAgaW1wb3J0IHB3ZCwgZ3JwCgogICAgIyBpbml0IHVzaW5nIGEgc3RyaW5n
IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIGEgbGluZSBhcyBkb2N1bWVudGVkIGluCiAgICAjIHRo
ZSBmcy1wZXJtcy50eHQgZmlsZQogICAgIyA8cGF0aD4gPG1vZGU+IDx1aWQ+IDxnaWQ+IDx3YWxr
PiA8Zm1vZGU+IDxmdWlkPiA8ZmdpZD4KICAgICMgPHBhdGg+IGxpbmsgPGxpbmsgdGFyZ2V0Pgog
ICAgIwogICAgIyBfX3N0cl9fIGNhbiBiZSB1c2VkIHRvIHByaW50IG91dCBhbiBlbnRyeSBpbiB0
aGUgaW5wdXQgZm9ybWF0CiAgICAjCiAgICAjIGlmIGZzX3Blcm1zX2VudHJ5LnBhdGggaXMgTm9u
ZToKICAgICMgICAgYW4gZXJyb3Igb2NjdXJlZAogICAgIyBpZiBmc19wZXJtc19lbnRyeS5saW5r
LCB5b3UgY2FuIHJldHJpZXZlOgogICAgIyAgICBmc19wZXJtc19lbnRyeS5wYXRoID0gcGF0aAog
ICAgIyAgICBmc19wZXJtc19lbnRyeS5saW5rID0gdGFyZ2V0IG9mIGxpbmsKICAgICMgaWYgbm90
IGZzX3Blcm1zX2VudHJ5LmxpbmssIHlvdSBjYW4gcmV0cmlldmU6CiAgICAjICAgIGZzX3Blcm1z
X2VudHJ5LnBhdGggPSBwYXRoCiAgICAjICAgIGZzX3Blcm1zX2VudHJ5Lm1vZGUgPSBleHBlY3Rl
ZCBkaXIgbW9kZSBvciBOb25lCiAgICAjICAgIGZzX3Blcm1zX2VudHJ5LnVpZCA9IGV4cGVjdGVk
IHVpZCBvciAtMQogICAgIyAgICBmc19wZXJtc19lbnRyeS5naWQgPSBleHBlY3RlZCBnaWQgb3Ig
LTEKICAgICMgICAgZnNfcGVybXNfZW50cnkud2FsayA9ICd0cnVlJyBvciBzb21ldGhpbmcgZWxz
ZQogICAgIyAgICBmc19wZXJtc19lbnRyeS5mbW9kZSA9IGV4cGVjdGVkIGZpbGUgbW9kZSBvciBO
b25lCiAgICAjICAgIGZzX3Blcm1zX2VudHJ5LmZ1aWQgPSBleHBlY3RlZCBmaWxlIHVpZCBvciAt
MQogICAgIyAgICBmc19wZXJtc19lbnRyeV9mZ2lkID0gZXhwZWN0ZWQgZmlsZSBnaWQgb3IgLTEK
ICAgIGNsYXNzIGZzX3Blcm1zX2VudHJ5KCk6CiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxp
bmUpOgogICAgICAgICAgICBsc3BsaXQgPSBsaW5lLnNwbGl0KCkKICAgICAgICAgICAgaWYgbGVu
KGxzcGxpdCkgPT0gMyBhbmQgbHNwbGl0WzFdLmxvd2VyKCkgPT0gImxpbmsiOgogICAgICAgICAg
ICAgICAgc2VsZi5fc2V0bGluayhsc3BsaXRbMF0sIGxzcGxpdFsyXSkKICAgICAgICAgICAgZWxp
ZiBsZW4obHNwbGl0KSA9PSA4OgogICAgICAgICAgICAgICAgc2VsZi5fc2V0ZGlyKGxzcGxpdFsw
XSwgbHNwbGl0WzFdLCBsc3BsaXRbMl0sIGxzcGxpdFszXSwgbHNwbGl0WzRdLCBsc3BsaXRbNV0s
IGxzcGxpdFs2XSwgbHNwbGl0WzddKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
YmIuZXJyb3IoIkZpeHVwIFBlcm1zOiBpbnZhbGlkIGNvbmZpZyBsaW5lICVzIiAlIGxpbmUpCiAg
ICAgICAgICAgICAgICBzZWxmLnBhdGggPSBOb25lCiAgICAgICAgICAgICAgICBzZWxmLmxpbmsg
PSBOb25lCgogICAgICAgIGRlZiBfc2V0ZGlyKHNlbGYsIHBhdGgsIG1vZGUsIHVpZCwgZ2lkLCB3
YWxrLCBmbW9kZSwgZnVpZCwgZmdpZCk6CiAgICAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgu
bm9ybXBhdGgocGF0aCkKICAgICAgICAgICAgc2VsZi5saW5rID0gTm9uZQogICAgICAgICAgICBz
ZWxmLm1vZGUgPSBzZWxmLl9wcm9jbW9kZShtb2RlKQogICAgICAgICAgICBzZWxmLnVpZCAgPSBz
ZWxmLl9wcm9jdWlkKHVpZCkKICAgICAgICAgICAgc2VsZi5naWQgID0gc2VsZi5fcHJvY2dpZChn
aWQpCiAgICAgICAgICAgIHNlbGYud2FsayA9IHdhbGsubG93ZXIoKQogICAgICAgICAgICBzZWxm
LmZtb2RlID0gc2VsZi5fcHJvY21vZGUoZm1vZGUpCiAgICAgICAgICAgIHNlbGYuZnVpZCA9IHNl
bGYuX3Byb2N1aWQoZnVpZCkKICAgICAgICAgICAgc2VsZi5mZ2lkID0gc2VsZi5fcHJvY2dpZChm
Z2lkKQoKICAgICAgICBkZWYgX3NldGxpbmsoc2VsZiwgcGF0aCwgbGluayk6CiAgICAgICAgICAg
IHNlbGYucGF0aCA9IG9zLnBhdGgubm9ybXBhdGgocGF0aCkKICAgICAgICAgICAgc2VsZi5saW5r
ID0gbGluawoKICAgICAgICBkZWYgX3Byb2Ntb2RlKHNlbGYsIG1vZGUpOgogICAgICAgICAgICBp
ZiBub3QgbW9kZSBvciAobW9kZSBhbmQgbW9kZSA9PSAiLSIpOgogICAgICAgICAgICAgICAgcmV0
dXJuIE5vbmUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBpbnQobW9k
ZSw4KQoKICAgICAgICAjIE5vdGUgdWlkL2dpZCAtMSBoYXMgc3BlY2lhbCBzaWduaWZpY2FuY2Ug
aW4gb3MubGNob3duCiAgICAgICAgZGVmIF9wcm9jdWlkKHNlbGYsIHVpZCk6CiAgICAgICAgICAg
IGlmIHVpZCBpcyBOb25lIG9yIHVpZCA9PSAiLSI6CiAgICAgICAgICAgICAgICByZXR1cm4gLTEK
ICAgICAgICAgICAgZWxpZiB1aWQuaXNkaWdpdCgpOgogICAgICAgICAgICAgICAgcmV0dXJuIGlu
dCh1aWQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3
bmFtKHVpZCkucHdfdWlkCgogICAgICAgIGRlZiBfcHJvY2dpZChzZWxmLCBnaWQpOgogICAgICAg
ICAgICBpZiBnaWQgaXMgTm9uZSBvciBnaWQgPT0gIi0iOgogICAgICAgICAgICAgICAgcmV0dXJu
IC0xCiAgICAgICAgICAgIGVsaWYgZ2lkLmlzZGlnaXQoKToKICAgICAgICAgICAgICAgIHJldHVy
biBpbnQoZ2lkKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuIGdycC5n
ZXRncm5hbShnaWQpLmdyX2dpZAoKICAgICAgICAjIFVzZSBmb3IgZGVidWdnaW5nIHRoZSBlbnRy
aWVzCiAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICAgIGlmIHNlbGYubGluazoK
ICAgICAgICAgICAgICAgIHJldHVybiAiJXMgbGluayAlcyIgJSAoc2VsZi5wYXRoLCBzZWxmLmxp
bmspCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBtb2RlID0gIi0iCiAgICAgICAg
ICAgICAgICBpZiBzZWxmLm1vZGU6CiAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICIwJW8iICUg
c2VsZi5tb2RlCiAgICAgICAgICAgICAgICBmbW9kZSA9ICItIgogICAgICAgICAgICAgICAgaWYg
c2VsZi5mbW9kZToKICAgICAgICAgICAgICAgICAgICBmbW9kZSA9ICIwJW8iICUgc2VsZi5mbW9k
ZQogICAgICAgICAgICAgICAgdWlkID0gc2VsZi5fbWFwdWdpZChzZWxmLnVpZCkKICAgICAgICAg
ICAgICAgIGdpZCA9IHNlbGYuX21hcHVnaWQoc2VsZi5naWQpCiAgICAgICAgICAgICAgICBmdWlk
ID0gc2VsZi5fbWFwdWdpZChzZWxmLmZ1aWQpCiAgICAgICAgICAgICAgICBmZ2lkID0gc2VsZi5f
bWFwdWdpZChzZWxmLmZnaWQpCiAgICAgICAgICAgICAgICByZXR1cm4gIiVzICVzICVzICVzICVz
ICVzICVzICVzIiAlIChzZWxmLnBhdGgsIG1vZGUsIHVpZCwgZ2lkLCBzZWxmLndhbGssIGZtb2Rl
LCBmdWlkLCBmZ2lkKQoKICAgICAgICBkZWYgX21hcHVnaWQoc2VsZiwgaWQpOgogICAgICAgICAg
ICBpZiBpZCBpcyBOb25lIG9yIGlkID09IC0xOgogICAgICAgICAgICAgICAgcmV0dXJuICItIgog
ICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcmV0dXJuICIlZCIgJSBpZAoKICAgICMg
Rml4IHRoZSBwZXJtaXNzaW9uLCBvd25lciBhbmQgZ3JvdXAgb2YgcGF0aAogICAgZGVmIGZpeF9w
ZXJtcyhwYXRoLCBtb2RlLCB1aWQsIGdpZCwgZGlyKToKICAgICAgICBpZiBtb2RlIGFuZCBub3Qg
b3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAgICAgICAgICNiYi5ub3RlKCJGaXh1cCBQZXJtczog
Y2htb2QgMCVvICVzIiAlIChtb2RlLCBkaXIpKQogICAgICAgICAgICBvcy5jaG1vZChwYXRoLCBt
b2RlKQogICAgICAgICMgLTEgaXMgYSBzcGVjaWFsIHZhbHVlIHRoYXQgbWVhbnMgZG9uJ3QgY2hh
bmdlIHRoZSB1aWQvZ2lkCiAgICAgICAgIyBpZiB0aGV5IGFyZSBCT1RIIC0xLCBkb24ndCBib3Ro
ZXIgdG8gbGNob3duCiAgICAgICAgaWYgbm90ICh1aWQgPT0gLTEgYW5kIGdpZCA9PSAtMSk6CiAg
ICAgICAgICAgICNiYi5ub3RlKCJGaXh1cCBQZXJtczogbGNob3duICVkOiVkICVzIiAlICh1aWQs
IGdpZCwgZGlyKSkKICAgICAgICAgICAgb3MubGNob3duKHBhdGgsIHVpZCwgZ2lkKQoKICAgICMg
UmV0dXJuIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzIGJhc2VkIG9uIGVpdGhlciB0aGUg
ZGVmYXVsdAogICAgIyBmaWxlcy9mcy1wZXJtcy50eHQgb3IgdGhlIGNvbnRlbnRzIG9mIEZJTEVT
WVNURU1fUEVSTVNfVEFCTEVTCiAgICAjIHBhdGhzIGFyZSByZXNvbHZlZCB2aWEgQkJQQVRICiAg
ICBkZWYgZ2V0X2ZzX3Blcm1zX2xpc3QoZCk6CiAgICAgICAgc3RyID0gIiIKICAgICAgICBmc19w
ZXJtc190YWJsZXMgPSBkLmdldFZhcignRklMRVNZU1RFTV9QRVJNU19UQUJMRVMnLCBUcnVlKQog
ICAgICAgIGlmIG5vdCBmc19wZXJtc190YWJsZXM6CiAgICAgICAgICAgIGZzX3Blcm1zX3RhYmxl
cyA9ICdmaWxlcy9mcy1wZXJtcy50eHQnCiAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiBmc19wZXJt
c190YWJsZXMuc3BsaXQoKToKICAgICAgICAgICAgc3RyICs9ICIgJXMiICUgYmIud2hpY2goZC5n
ZXRWYXIoJ0JCUEFUSCcsIFRydWUpLCBjb25mX2ZpbGUpCiAgICAgICAgcmV0dXJuIHN0cgoKCgog
ICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKCiAgICBmc19wZXJtc190YWJsZSA9IHt9
CgogICAgIyBCeSBkZWZhdWx0IGFsbCBvZiB0aGUgc3RhbmRhcmQgZGlyZWN0b3JpZXMgc3BlY2lm
aWVkIGluCiAgICAjIGJpdGJha2UuY29uZiB3aWxsIGdldCAwNzU1IHJvb3Q6cm9vdC4KICAgIHRh
cmdldF9wYXRoX3ZhcnMgPSBbICAgICdiYXNlX3ByZWZpeCcsCiAgICAgICAgICAgICAgICAncHJl
Zml4JywKICAgICAgICAgICAgICAgICdleGVjX3ByZWZpeCcsCiAgICAgICAgICAgICAgICAnYmFz
ZV9iaW5kaXInLAogICAgICAgICAgICAgICAgJ2Jhc2Vfc2JpbmRpcicsCiAgICAgICAgICAgICAg
ICAnYmFzZV9saWJkaXInLAogICAgICAgICAgICAgICAgJ2RhdGFkaXInLAogICAgICAgICAgICAg
ICAgJ3N5c2NvbmZkaXInLAogICAgICAgICAgICAgICAgJ3NlcnZpY2VkaXInLAogICAgICAgICAg
ICAgICAgJ3NoYXJlZHN0YXRlZGlyJywKICAgICAgICAgICAgICAgICdsb2NhbHN0YXRlZGlyJywK
ICAgICAgICAgICAgICAgICdpbmZvZGlyJywKICAgICAgICAgICAgICAgICdtYW5kaXInLAogICAg
ICAgICAgICAgICAgJ2RvY2RpcicsCiAgICAgICAgICAgICAgICAnYmluZGlyJywKICAgICAgICAg
ICAgICAgICdzYmluZGlyJywKICAgICAgICAgICAgICAgICdsaWJleGVjZGlyJywKICAgICAgICAg
ICAgICAgICdsaWJkaXInLAogICAgICAgICAgICAgICAgJ2luY2x1ZGVkaXInLAogICAgICAgICAg
ICAgICAgJ29sZGluY2x1ZGVkaXInIF0KCiAgICBmb3IgcGF0aCBpbiB0YXJnZXRfcGF0aF92YXJz
OgogICAgICAgIGRpciA9IGQuZ2V0VmFyKHBhdGgsIFRydWUpIG9yICIiCiAgICAgICAgaWYgZGly
ID09ICIiOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGZzX3Blcm1zX3RhYmxlW2Rpcl0g
PSBmc19wZXJtc19lbnRyeShiYi5kYXRhLmV4cGFuZCgiJXMgMDc1NSByb290IHJvb3QgZmFsc2Ug
LSAtIC0iICUgKGRpciksIGQpKQoKICAgICMgTm93IHdlIGFjdHVhbGx5IGxvYWQgZnJvbSB0aGUg
Y29uZmlndXJhdGlvbiBmaWxlcwogICAgZm9yIGNvbmYgaW4gZ2V0X2ZzX3Blcm1zX2xpc3QoZCku
c3BsaXQoKToKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25mKToKICAgICAgICAgICAgZiA9
IG9wZW4oY29uZikKICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgIGlm
IGxpbmUuc3RhcnRzd2l0aCgnIycpOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg
ICAgICAgICAgICBsc3BsaXQgPSBsaW5lLnNwbGl0KCkKICAgICAgICAgICAgICAgIGlmIGxlbihs
c3BsaXQpID09IDA6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAg
IGlmIGxlbihsc3BsaXQpICE9IDggYW5kIG5vdCAobGVuKGxzcGxpdCkgPT0gMyBhbmQgbHNwbGl0
WzFdLmxvd2VyKCkgPT0gImxpbmsiKToKICAgICAgICAgICAgICAgICAgICBiYi5lcnJvcigiRml4
dXAgcGVybXM6ICVzIGludmFsaWQgbGluZTogJXMiICUgKGNvbmYsIGxpbmUpKQogICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBlbnRyeSA9IGZzX3Blcm1zX2VudHJ5
KGQuZXhwYW5kKGxpbmUpKQogICAgICAgICAgICAgICAgaWYgZW50cnkgYW5kIGVudHJ5LnBhdGg6
CiAgICAgICAgICAgICAgICAgICAgZnNfcGVybXNfdGFibGVbZW50cnkucGF0aF0gPSBlbnRyeQog
ICAgICAgICAgICBmLmNsb3NlKCkKCiAgICAjIERlYnVnIC0tIGxpc3Qgb3V0IGluLW1lbW9yeSB0
YWJsZQogICAgI2ZvciBkaXIgaW4gZnNfcGVybXNfdGFibGU6CiAgICAjICAgIGJiLm5vdGUoIkZp
eHVwIFBlcm1zOiAlczogJXMiICUgKGRpciwgc3RyKGZzX3Blcm1zX3RhYmxlW2Rpcl0pKSkKCiAg
ICAjIFdlIHByb2Nlc3MgbGlua3MgZmlyc3QsIHNvIHdlIGNhbiBnbyBiYWNrIGFuZCBmaXh1cCBk
aXJlY3Rvcnkgb3duZXJzaGlwCiAgICAjIGZvciBhbnkgbmV3bHkgY3JlYXRlZCBkaXJlY3Rvcmll
cwogICAgZm9yIGRpciBpbiBmc19wZXJtc190YWJsZToKICAgICAgICBpZiBub3QgZnNfcGVybXNf
dGFibGVbZGlyXS5saW5rOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBvcmlnaW4gPSBk
dmFyICsgZGlyCiAgICAgICAgaWYgbm90IChvcy5wYXRoLmV4aXN0cyhvcmlnaW4pIGFuZCBvcy5w
YXRoLmlzZGlyKG9yaWdpbikgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhvcmlnaW4pKToKICAgICAg
ICAgICAgY29udGludWUKCiAgICAgICAgbGluayA9IGZzX3Blcm1zX3RhYmxlW2Rpcl0ubGluawog
ICAgICAgIGlmIGxpbmtbMF0gPT0gIi8iOgogICAgICAgICAgICB0YXJnZXQgPSBkdmFyICsgbGlu
awogICAgICAgICAgICBwdGFyZ2V0ID0gbGluawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRh
cmdldCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3JpZ2luKSwgbGluaykKICAgICAg
ICAgICAgcHRhcmdldCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZGlyKSwgbGluaykK
ICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0YXJnZXQpOgogICAgICAgICAgICBiYi5lcnJvcigi
Rml4dXAgUGVybXM6IFVuYWJsZSB0byBjb3JyZWN0IGRpcmVjdG9yeSBsaW5rLCB0YXJnZXQgYWxy
ZWFkeSBleGlzdHM6ICVzIC0+ICVzIiAlIChkaXIsIHB0YXJnZXQpKQogICAgICAgICAgICBjb250
aW51ZQoKICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIG1vdmUgZGlyZWN0b3J5IHRvLCBtb3ZlIGl0
LCBhbmQgdGhlbiBzZXR1cCB0aGUgc3ltbGluawogICAgICAgIGJiLm1rZGlyaGllcihvcy5wYXRo
LmRpcm5hbWUodGFyZ2V0KSkKICAgICAgICAjYmIubm90ZSgiRml4dXAgUGVybXM6IFJlbmFtZSAl
cyAtPiAlcyIgJSAoZGlyLCBwdGFyZ2V0KSkKICAgICAgICBvcy5yZW5hbWUob3JpZ2luLCB0YXJn
ZXQpCiAgICAgICAgI2JiLm5vdGUoIkZpeHVwIFBlcm1zOiBMaW5rICVzIC0+ICVzIiAlIChkaXIs
IGxpbmspKQogICAgICAgIG9zLnN5bWxpbmsobGluaywgb3JpZ2luKQoKICAgIGZvciBkaXIgaW4g
ZnNfcGVybXNfdGFibGU6CiAgICAgICAgaWYgZnNfcGVybXNfdGFibGVbZGlyXS5saW5rOgogICAg
ICAgICAgICBjb250aW51ZQoKICAgICAgICBvcmlnaW4gPSBkdmFyICsgZGlyCiAgICAgICAgaWYg
bm90IChvcy5wYXRoLmV4aXN0cyhvcmlnaW4pIGFuZCBvcy5wYXRoLmlzZGlyKG9yaWdpbikpOgog
ICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBmaXhfcGVybXMob3JpZ2luLCBmc19wZXJtc190
YWJsZVtkaXJdLm1vZGUsIGZzX3Blcm1zX3RhYmxlW2Rpcl0udWlkLCBmc19wZXJtc190YWJsZVtk
aXJdLmdpZCwgZGlyKQoKICAgICAgICBpZiBmc19wZXJtc190YWJsZVtkaXJdLndhbGsgPT0gJ3Ry
dWUnOgogICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhvcmlnaW4p
OgogICAgICAgICAgICAgICAgZm9yIGRyIGluIGRpcnM6CiAgICAgICAgICAgICAgICAgICAgZWFj
aF9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZHIpCiAgICAgICAgICAgICAgICAgICAgZml4X3Bl
cm1zKGVhY2hfZGlyLCBmc19wZXJtc190YWJsZVtkaXJdLm1vZGUsIGZzX3Blcm1zX3RhYmxlW2Rp
cl0udWlkLCBmc19wZXJtc190YWJsZVtkaXJdLmdpZCwgZGlyKQogICAgICAgICAgICAgICAgZm9y
IGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgZWFjaF9maWxlID0gb3MucGF0aC5qb2lu
KHJvb3QsIGYpCiAgICAgICAgICAgICAgICAgICAgZml4X3Blcm1zKGVhY2hfZmlsZSwgZnNfcGVy
bXNfdGFibGVbZGlyXS5mbW9kZSwgZnNfcGVybXNfdGFibGVbZGlyXS5mdWlkLCBmc19wZXJtc190
YWJsZVtkaXJdLmZnaWQsIGRpcikKfQoKCnB5dGhvbiBiYXNlX2RvX3BhdGNoICgpIHsKICAgIGJi
LmJ1aWxkLmV4ZWNfZnVuYygncGF0Y2hfZG9fcGF0Y2gnLCBkKQp9CgoKcHl0aG9uIGxlZ2l0aW1p
emVfcGFja2FnZV9uYW1lICgpIHsKZGVmIGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKHMpOgogICAg
IiIiCiAgICBNYWtlIHN1cmUgcGFja2FnZSBuYW1lcyBhcmUgbGVnaXRpbWF0ZSBzdHJpbmdzCiAg
ICAiIiIKICAgIGltcG9ydCByZQoKICAgIGRlZiBmaXh1dGYobSk6CiAgICAgICAgY3AgPSBtLmdy
b3VwKDEpCiAgICAgICAgaWYgY3A6CiAgICAgICAgICAgIHJldHVybiAoJ1x1JXMnICUgY3ApLmRl
Y29kZSgndW5pY29kZV9lc2NhcGUnKS5lbmNvZGUoJ3V0Zi04JykKCiAgICAjIEhhbmRsZSB1bmlj
b2RlIGNvZGVwb2ludHMgZW5jb2RlZCBhcyA8VTAxMjM+LCBhcyBpbiBnbGliYyBsb2NhbGUgZmls
ZXMuCiAgICBzID0gcmUuc3ViKCc8VShbMC05QS1GYS1mXXsxLDR9KT4nLCBmaXh1dGYsIHMpCgog
ICAgIyBSZW1haW5pbmcgcGFja2FnZSBuYW1lIHZhbGlkaXR5IGZpeGVzCiAgICByZXR1cm4gcy5s
b3dlcigpLnJlcGxhY2UoJ18nLCAnLScpLnJlcGxhY2UoJ0AnLCAnKycpLnJlcGxhY2UoJywnLCAn
KycpLnJlcGxhY2UoJy8nLCAnLScpCn0KCgpweXRob24gYmFzZV9nZXRfbWV0YWRhdGFfbW9ub3Rv
bmVfYnJhbmNoICgpIHsKZGVmIGJhc2VfZ2V0X21ldGFkYXRhX21vbm90b25lX2JyYW5jaChwYXRo
LCBkKToKICAgIG1vbm90b25lX2JyYW5jaCA9ICI8dW5rbm93bj4iCiAgICB0cnk6CiAgICAgICAg
bW9ub3RvbmVfYnJhbmNoID0gZmlsZSggIiVzL19NVE4vb3B0aW9ucyIgJSBwYXRoICkucmVhZCgp
LnN0cmlwKCkKICAgICAgICBpZiBtb25vdG9uZV9icmFuY2guc3RhcnRzd2l0aCggImRhdGFiYXNl
IiApOgogICAgICAgICAgICBtb25vdG9uZV9icmFuY2hfd29yZHMgPSBtb25vdG9uZV9icmFuY2gu
c3BsaXQoKQogICAgICAgICAgICBtb25vdG9uZV9icmFuY2ggPSBtb25vdG9uZV9icmFuY2hfd29y
ZHNbIG1vbm90b25lX2JyYW5jaF93b3Jkcy5pbmRleCggImJyYW5jaCIgKSsxXVsxOi0xXQogICAg
ZXhjZXB0OgogICAgICAgIHBhc3MKICAgIHJldHVybiBtb25vdG9uZV9icmFuY2gKfQoKCnB5dGhv
biBzc3RhdGVfaGFyZGNvZGVfcGF0aCAoKSB7CmRlZiBzc3RhdGVfaGFyZGNvZGVfcGF0aChkKToK
ICAgIGltcG9ydCBzdWJwcm9jZXNzCgogICAgIyBOZWVkIHRvIHJlbW92ZSBoYXJkY29kZWQgcGF0
aHMgYW5kIGZpeCB0aGVzZSB3aGVuIHdlIGluc3RhbGwgdGhlCiAgICAjIHN0YWdpbmcgcGFja2Fn
ZXMuCiAgICAjCiAgICAjIE5vdGU6IHRoZSBsb2dpYyBpbiB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRv
IG1hdGNoIHRoZSByZXZlcnNlIGxvZ2ljCiAgICAjIGluIHNzdGF0ZV9pbnN0YWxscGtnKHNzLCBk
KQoKICAgIHN0YWdpbmcgPSBkLmdldFZhcignU1RBR0lOR19ESVInLCBUcnVlKQogICAgc3RhZ2lu
Z190YXJnZXQgPSBkLmdldFZhcignU1RBR0lOR19ESVJfVEFSR0VUJywgVHJ1ZSkKICAgIHN0YWdp
bmdfaG9zdCA9IGQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9IT1NUJywgVHJ1ZSkKICAgIHNzdGF0ZV9i
dWlsZGRpciA9IGQuZ2V0VmFyKCdTU1RBVEVfQlVJTERESVInLCBUcnVlKQoKICAgIGlmIGJiLmRh
dGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3Mo
J25hdGl2ZXNkaycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nzc2RrJywgZCkg
b3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKICAgICAgICBz
c3RhdGVfZ3JlcF9jbWQgPSAiZ3JlcCAtbCAtZSAnJXMnIiAlIChzdGFnaW5nKQogICAgICAgIHNz
dGF0ZV9zZWRfY21kID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVI6ZyciICUgKHN0
YWdpbmcpCiAgICBlbGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywgZCk6CiAgICAg
ICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyglc3wlcyknIiAlIChzdGFnaW5nX3Rh
cmdldCwgc3RhZ2luZykKICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6
RklYTUVTVEFHSU5HRElSVEFSR0VUOmc7IHM6JXM6RklYTUVTVEFHSU5HRElSOmcnIiAlIChzdGFn
aW5nX3RhcmdldCwgc3RhZ2luZykKICAgIGVsc2U6CiAgICAgICAgc3N0YXRlX2dyZXBfY21kID0g
ImdyZXAgLWwgLWUgJyVzJyIgJSAoc3RhZ2luZ19ob3N0KQogICAgICAgIHNzdGF0ZV9zZWRfY21k
ID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVJIT1NUOmcnIiAlIChzdGFnaW5nX2hv
c3QpCgogICAgZml4bWVmbiA9ICBzc3RhdGVfYnVpbGRkaXIgKyAiZml4bWVwYXRoIgoKICAgIHNz
dGF0ZV9zY2FuX2NtZCA9IGQuZ2V0VmFyKCdTU1RBVEVfU0NBTl9DTUQnLCBUcnVlKQogICAgc3N0
YXRlX2ZpbGVsaXN0X2NtZCA9ICJ0ZWUgJXMiICUgKGZpeG1lZm4pCgogICAgIyBmaXhtZXBhdGgg
ZmlsZSBuZWVkcyByZWxhdGl2ZSBwYXRocywgZHJvcCBzc3RhdGVfYnVpbGRkaXIgcHJlZml4CiAg
ICBzc3RhdGVfZmlsZWxpc3RfcmVsYXRpdmVfY21kID0gInNlZCAtaSAtZSAnczpeJXM6OmcnICVz
IiAlIChzc3RhdGVfYnVpbGRkaXIsIGZpeG1lZm4pCgogICAgIyBMaW1pdCB0aGUgZml4cGF0aHMg
YW5kIHNlZCBvcGVyYXRpb25zIGJhc2VkIG9uIHRoZSBpbml0aWFsIGdyZXAgc2VhcmNoCiAgICAj
IFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBtYWtpbmcgc3VyZSB0aGUgdmZzIGNhY2hlIGlz
IGhvdAogICAgc3N0YXRlX2hhcmRjb2RlX2NtZCA9ICIlcyB8IHhhcmdzICVzIHwgJXMgfCB4YXJn
cyAtLW5vLXJ1bi1pZi1lbXB0eSAlcyIgJSAoc3N0YXRlX3NjYW5fY21kLCBzc3RhdGVfZ3JlcF9j
bWQsIHNzdGF0ZV9maWxlbGlzdF9jbWQsIHNzdGF0ZV9zZWRfY21kKQoKICAgIHByaW50ICJSZW1v
dmluZyBoYXJkY29kZWQgcGF0aHMgZnJvbSBzc3RhdGUgcGFja2FnZTogJyVzJyIgJSAoc3N0YXRl
X2hhcmRjb2RlX2NtZCkKICAgIHN1YnByb2Nlc3MuY2FsbChzc3RhdGVfaGFyZGNvZGVfY21kLCBz
aGVsbD1UcnVlKQoKICAgICAgICAjIElmIHRoZSBmaXhtZWZuIGlzIGVtcHR5LCByZW1vdmUgaXQu
LgogICAgaWYgb3Muc3RhdChmaXhtZWZuKS5zdF9zaXplID09IDA6CiAgICAgICAgb3MucmVtb3Zl
KGZpeG1lZm4pCiAgICBlbHNlOgogICAgICAgIHByaW50ICJSZXBsYWNpbmcgYWJzb2x1dGUgcGF0
aHMgaW4gZml4bWVwYXRoIGZpbGU6ICclcyciICUgKHNzdGF0ZV9maWxlbGlzdF9yZWxhdGl2ZV9j
bWQpCiAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNzdGF0ZV9maWxlbGlzdF9yZWxhdGl2ZV9jbWQs
IHNoZWxsPVRydWUpCn0KCgpweXRob24gY2hlY2tfY3JlYXRlX2xvbmdfZmlsZW5hbWUgKCkgewpk
ZWYgY2hlY2tfY3JlYXRlX2xvbmdfZmlsZW5hbWUoZmlsZXBhdGgsIHBhdGhuYW1lKToKICAgIHRl
c3RmaWxlID0gb3MucGF0aC5qb2luKGZpbGVwYXRoLCAnJy5qb2luKFtgbnVtYFstMV0gZm9yIG51
bSBpbiB4cmFuZ2UoMSwyMDApXSkpCiAgICB0cnk6CiAgICAgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKGZpbGVwYXRoKToKICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGZpbGVwYXRoKQog
ICAgICAgIGYgPSBmaWxlKHRlc3RmaWxlLCAidyIpCiAgICAgICAgZi5jbG9zZSgpCiAgICAgICAg
b3MucmVtb3ZlKHRlc3RmaWxlKQogICAgZXhjZXB0IElPRXJyb3IgYXMgKGVycm5vLCBzdHJlcnJv
cik6CiAgICAgICAgaWYgZXJybm8gPT0gMzY6ICMgRU5BTUVUT09MT05HCiAgICAgICAgICAgIHJl
dHVybiAiRmFpbGVkIHRvIGNyZWF0ZSBhIGZpbGUgd2l0aCBhIGxvbmcgbmFtZSBpbiAlcy4gUGxl
YXNlIHVzZSBhIGZpbGVzeXN0ZW0gdGhhdCBkb2VzIG5vdCB1bnJlYXNvbmFibHkgbGltaXQgZmls
ZW5hbWUgbGVuZ3RoLlxuIiAlIHBhdGhuYW1lCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0
dXJuICJGYWlsZWQgdG8gY3JlYXRlIGEgZmlsZSBpbiAlczogJXMuXG4iICUgKHBhdGhuYW1lLCBz
dHJlcnJvcikKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIChlcnJubywgc3RyZXJyb3IpOgogICAgICAg
IHJldHVybiAiRmFpbGVkIHRvIGNyZWF0ZSAlcyBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gcnVuIGxv
bmcgbmFtZSBzYW5pdHkgY2hlY2s6ICVzLlxuIiAlIChwYXRobmFtZSwgc3RyZXJyb3IpCiAgICBy
ZXR1cm4gIiIKfQoKCnB5dGhvbiBkb19wb3B1bGF0ZV9saWNfc2V0c2NlbmUgKCkgewogICAgc3N0
YXRlX3NldHNjZW5lKGQpCn0KCgpweXRob24gcnVudGltZV9tYXBwaW5nX3JlbmFtZSAoKSB7CmRl
ZiBydW50aW1lX21hcHBpbmdfcmVuYW1lICh2YXJuYW1lLCBkKToKICAgICNiYi5ub3RlKCIlcyBi
ZWZvcmU6ICVzIiAlICh2YXJuYW1lLCBkLmdldFZhcih2YXJuYW1lLCBUcnVlKSkpCgogICAgbmV3
X2RlcGVuZHMgPSBbXQogICAgZGVwcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zKGQu
Z2V0VmFyKHZhcm5hbWUsIFRydWUpIG9yICIiKQogICAgZm9yIGRlcGVuZCBpbiBkZXBzOgogICAg
ICAgICMgSGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggYW55IHZlcnNpb24gY29tcG9uZW50IG9mIHRo
ZSBkZXBlbmQKICAgICAgICBuZXdfZGVwZW5kID0gZ2V0X3BhY2thZ2VfbWFwcGluZyhkZXBlbmQs
IGQpCiAgICAgICAgaWYgZGVwc1tkZXBlbmRdOgogICAgICAgICAgICBuZXdfZGVwZW5kcy5hcHBl
bmQoIiVzICglcykiICUgKG5ld19kZXBlbmQsIGRlcHNbZGVwZW5kXSkpCiAgICAgICAgZWxzZToK
ICAgICAgICAgICAgbmV3X2RlcGVuZHMuYXBwZW5kKG5ld19kZXBlbmQpCgogICAgZC5zZXRWYXIo
dmFybmFtZSwgIiAiLmpvaW4obmV3X2RlcGVuZHMpIG9yIE5vbmUpCgogICAgI2JiLm5vdGUoIiVz
IGFmdGVyOiAlcyIgJSAodmFybmFtZSwgZC5nZXRWYXIodmFybmFtZSwgVHJ1ZSkpKQp9CgoKcHl0
aG9uIHNwbGl0X2FuZF9zdHJpcF9maWxlcyAoKSB7CiAgICBpbXBvcnQgY29tbWFuZHMsIHN0YXQs
IGVycm5vLCBzdWJwcm9jZXNzCgogICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKICAg
IHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKCiAgICAjIFdlIGRlZmF1bHQgdG8gJy5kZWJ1Zycg
c3R5bGUKICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJywgVHJ1ZSkg
PT0gJ2RlYnVnLWZpbGUtZGlyZWN0b3J5JzoKICAgICAgICAjIFNpbmdsZSBkZWJ1Zy1maWxlLWRp
cmVjdG9yeSBzdHlsZSBkZWJ1ZyBpbmZvCiAgICAgICAgZGVidWdhcHBlbmQgPSAiLmRlYnVnIgog
ICAgICAgIGRlYnVnZGlyID0gIiIKICAgICAgICBkZWJ1Z2xpYmRpciA9ICIvdXNyL2xpYi9kZWJ1
ZyIKICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgIGVsc2U6CiAgICAg
ICAgIyBPcmlnaW5hbCBPRS1jb3JlLCBhLmsuYS4gIi5kZWJ1ZyIsIHN0eWxlIGRlYnVnIGluZm8K
ICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCiAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKICAg
ICAgICBkZWJ1Z2xpYmRpciA9ICIiCiAgICAgICAgZGVidWdzcmNkaXIgPSAiL3Vzci9zcmMvZGVi
dWciCgogICAgb3MuY2hkaXIoZHZhcikKCiAgICAjIFJldHVybiB0eXBlIChiaXRzKToKICAgICMg
MCAtIG5vdCBlbGYKICAgICMgMSAtIEVMRgogICAgIyAyIC0gc3RyaXBwZWQKICAgICMgNCAtIGV4
ZWN1dGFibGUKICAgICMgOCAtIHNoYXJlZCBsaWJyYXJ5CiAgICBkZWYgaXNFTEYocGF0aCk6CiAg
ICAgICAgdHlwZSA9IDAKICAgICAgICBwYXRocHJlZml4ID0gImV4cG9ydCBQQVRIPSVzOyAiICUg
ZC5nZXRWYXIoJ1BBVEgnLCBUcnVlKQogICAgICAgIHJldCwgcmVzdWx0ID0gY29tbWFuZHMuZ2V0
c3RhdHVzb3V0cHV0KCIlc2ZpbGUgJyVzJyIgJSAocGF0aHByZWZpeCwgcGF0aCkpCgogICAgICAg
IGlmIHJldDoKICAgICAgICAgICAgYmIuZXJyb3IoInNwbGl0X2FuZF9zdHJpcF9maWxlczogJ2Zp
bGUgJXMnIGZhaWxlZCIgJSBwYXRoKQogICAgICAgICAgICByZXR1cm4gdHlwZQoKICAgICAgICAj
IE5vdCBzdHJpcHBlZAogICAgICAgIGlmICJFTEYiIGluIHJlc3VsdDoKICAgICAgICAgICAgdHlw
ZSB8PSAxCiAgICAgICAgICAgIGlmICJub3Qgc3RyaXBwZWQiIG5vdCBpbiByZXN1bHQ6CiAgICAg
ICAgICAgICAgICB0eXBlIHw9IDIKICAgICAgICAgICAgaWYgImV4ZWN1dGFibGUiIGluIHJlc3Vs
dDoKICAgICAgICAgICAgICAgIHR5cGUgfD0gNAogICAgICAgICAgICBpZiAic2hhcmVkIiBpbiBy
ZXN1bHQ6CiAgICAgICAgICAgICAgICB0eXBlIHw9IDgKICAgICAgICByZXR1cm4gdHlwZQoKCiAg
ICAjCiAgICAjIEZpcnN0IGxldHMgZmlndXJlIG91dCBhbGwgb2YgdGhlIGZpbGVzIHdlIG1heSBo
YXZlIHRvIHByb2Nlc3MgLi4uIGRvIHRoaXMgb25seSBvbmNlIQogICAgIwogICAgZmlsZV9saXN0
ID0ge30KICAgIGZpbGVfbGlua3MgPSB7fQogICAgaWYgKGQuZ2V0VmFyKCdJTkhJQklUX1BBQ0tB
R0VfREVCVUdfU1BMSVQnLCBUcnVlKSAhPSAnMScpIGFuZCBcCiAgICAgICAoZC5nZXRWYXIoJ0lO
SElCSVRfUEFDS0FHRV9TVFJJUCcsIFRydWUpICE9ICcxJyk6CiAgICAgICAgZm9yIHJvb3QsIGRp
cnMsIGZpbGVzIGluIG9zLndhbGsoZHZhcik6CiAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgog
ICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQogICAgICAgICAgICAg
ICAgIyBPbmx5IHByb2Nlc3MgZmlsZXMgKGFuZCBzeW1saW5rcykuLi4gU2tpcCBmaWxlcyB0aGF0
IGFyZSBvYnZpb3VzbHkgZGVidWcgZmlsZXMKICAgICAgICAgICAgICAgIGlmIG5vdCAoZGVidWdh
cHBlbmQgIT0gIiIgYW5kIGZpbGUuZW5kc3dpdGgoZGVidWdhcHBlbmQpKSBhbmQgXAogICAgICAg
ICAgICAgICAgICAgbm90IChkZWJ1Z2RpciAhPSAiIiBhbmQgZGVidWdkaXIgaW4gb3MucGF0aC5k
aXJuYW1lKGZpbGVbbGVuKGR2YXIpOl0pKSBhbmQgXAogICAgICAgICAgICAgICAgICAgb3MucGF0
aC5pc2ZpbGUoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
ICAgICAgICBzID0gb3Muc3RhdChmaWxlKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vy
cm9yLCAoZXJyLCBzdHJlcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyciAhPSBl
cnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAg
ICAgICAgICAgICAgICAjIFNraXAgYnJva2VuIHN5bWxpbmtzCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIyBJcyB0aGUgaXRlbSBleGN1dGFibGU/
ICBUaGVuIHdlIG5lZWQgdG8gcHJvY2VzcyBpdC4KICAgICAgICAgICAgICAgICAgICBpZiAoc1tz
dGF0LlNUX01PREVdICYgc3RhdC5TX0lYVVNSKSBvciBcCiAgICAgICAgICAgICAgICAgICAgICAg
KHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWEdSUCkgb3IgXAogICAgICAgICAgICAgICAgICAg
ICAgIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhPVEgpOgogICAgICAgICAgICAgICAgICAg
ICAgICAjIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgcG9pbnRzIHRvIGFuIEVMRiBmaWxlLCB3ZSBj
YXB0dXJlIHRoZSByZWFkbGluayB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3Mu
cGF0aC5pc2xpbmsoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBv
cy5yZWFkbGluayhmaWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBh
dGguaXNhYnModGFyZ2V0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShmaWxlKSwgdGFyZ2V0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
dGFyZ2V0ID0gdGFyZ2V0CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNFTEYobHRh
cmdldCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JiLm5vdGUoIlN5bTogJXMg
KCVkKSIgJSAobHRhcmdldCwgaXNFTEYobHRhcmdldCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfbGlzdFtmaWxlXSA9ICJzeW06ICIgKyB0YXJnZXQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICMgSXQncyBh
IGZpbGUgKG9yIGhhcmRsaW5rKSwgbm90IGEgbGluawogICAgICAgICAgICAgICAgICAgICAgICAj
IC4uLmJ1dCBpcyBpdCBFTEYsIGFuZCBpcyBpdCBhbHJlYWR5IHN0cmlwcGVkPwogICAgICAgICAg
ICAgICAgICAgICAgICBlbGZfZmlsZSA9IGlzRUxGKGZpbGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIGVsZl9maWxlICYgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sg
aWYgaXQncyBhIGhhcmQgbGluayB0byBzb21ldGhpbmcgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgcy5zdF9ubGluayA+IDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsZV9yZWZlcmVuY2UgPSAiJWRfJWQiICUgKHMuc3RfZGV2LCBzLnN0X2lubykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEhhcmQgbGluayB0byBzb21ldGhpbmcgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdFtmaWxlXSA9ICJoYXJkOiAi
ICsgZmlsZV9yZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfbGlzdFtmaWxlXSA9ICJFTEY6ICVk
IiAlIGVsZl9maWxlCgoKICAgICMKICAgICMgRmlyc3QgbGV0cyBwcm9jZXNzIGRlYnVnIHNwbGl0
dGluZwogICAgIwogICAgaWYgKGQuZ2V0VmFyKCdJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQn
LCBUcnVlKSAhPSAnMScpOgogICAgICAgIGZvciBmaWxlIGluIGZpbGVfbGlzdDoKICAgICAgICAg
ICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQogICAgICAgICAgICBkZXN0ID0gZGVidWdsaWJkaXIg
KyBvcy5wYXRoLmRpcm5hbWUoc3JjKSArIGRlYnVnZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFt
ZShzcmMpICsgZGVidWdhcHBlbmQKICAgICAgICAgICAgZnBhdGggPSBkdmFyICsgZGVzdAogICAg
ICAgICAgICAjIFByZXNlcnZlIHN5bWxpbmtzIGluIGRlYnVnIGFyZWEuLi4KICAgICAgICAgICAg
aWYgZmlsZV9saXN0W2ZpbGVdLnN0YXJ0c3dpdGgoInN5bTogIik6CiAgICAgICAgICAgICAgICBs
dGFyZ2V0ID0gZmlsZV9saXN0W2ZpbGVdWzU6XQogICAgICAgICAgICAgICAgbHBhdGggPSBvcy5w
YXRoLmRpcm5hbWUobHRhcmdldCkKICAgICAgICAgICAgICAgIGxiYXNlID0gb3MucGF0aC5iYXNl
bmFtZShsdGFyZ2V0KQogICAgICAgICAgICAgICAgZnRhcmdldCA9ICIiCiAgICAgICAgICAgICAg
ICBpZiBscGF0aCBhbmQgbHBhdGggIT0gIi4iOgogICAgICAgICAgICAgICAgICAgIGZ0YXJnZXQg
Kz0gbHBhdGggKyBkZWJ1Z2RpciArICIvIgogICAgICAgICAgICAgICAgZnRhcmdldCArPSBsYmFz
ZSArIGRlYnVnYXBwZW5kCiAgICAgICAgICAgICAgICBpZiBscGF0aC5zdGFydHN3aXRoKCIuLiIp
OgogICAgICAgICAgICAgICAgICAgIGZ0YXJnZXQgPSBvcy5wYXRoLmpvaW4oIi4uIiwgZnRhcmdl
dCkKICAgICAgICAgICAgICAgIGJiLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZnBhdGgpKQog
ICAgICAgICAgICAgICAgI2JiLm5vdGUoIlN5bWxpbmsgJXMgLT4gJXMiICUgKGZwYXRoLCBmdGFy
Z2V0KSkKICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoZnRhcmdldCwgZnBhdGgpCiAgICAgICAg
ICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgIyBQcmVzZXJ2ZSBoYXJkIGxpbmtzIGluIGRl
YnVnIGFyZWEuLi4KICAgICAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSAiIgogICAgICAgICAgICBp
ZiBmaWxlX2xpc3RbZmlsZV0uc3RhcnRzd2l0aCgiaGFyZDogIik6CiAgICAgICAgICAgICAgICBm
aWxlX3JlZmVyZW5jZSA9IGZpbGVfbGlzdFtmaWxlXVs2Ol0KICAgICAgICAgICAgICAgIGlmIGZp
bGVfcmVmZXJlbmNlIG5vdCBpbiBmaWxlX2xpbmtzOgogICAgICAgICAgICAgICAgICAgICMgSWYg
dGhpcyBpcyBhIG5ldyBmaWxlLCBhZGQgaXQgYXMgYSByZWZlcmVuY2UsIGFuZAogICAgICAgICAg
ICAgICAgICAgICMgdXBkYXRlIGl0J3MgdHlwZSwgc28gd2UgY2FuIGZhbGwgdGhyb3VnaCBhbmQg
c3BsaXQKICAgICAgICAgICAgICAgICAgICBmaWxlX2xpc3RbZmlsZV0gPSAiRUxGOiAlZCIgJSAo
aXNFTEYoZmlsZSkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHRh
cmdldCA9IGZpbGVfbGlua3NbZmlsZV9yZWZlcmVuY2VdW2xlbihkdmFyKTpdCiAgICAgICAgICAg
ICAgICAgICAgZnRhcmdldCA9IGR2YXIgKyBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZSh0
YXJnZXQpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHRhcmdldCkgKyBkZWJ1
Z2FwcGVuZAogICAgICAgICAgICAgICAgICAgIGJiLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUo
ZnBhdGgpKQogICAgICAgICAgICAgICAgICAgICNiYi5ub3RlKCJMaW5rICVzIC0+ICVzIiAlIChm
cGF0aCwgZnRhcmdldCkpCiAgICAgICAgICAgICAgICAgICAgb3MubGluayhmdGFyZ2V0LCBmcGF0
aCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgIyBJdCdzIEVMRi4u
LgogICAgICAgICAgICBpZiBmaWxlX2xpc3RbZmlsZV0uc3RhcnRzd2l0aCgiRUxGOiAiKToKICAg
ICAgICAgICAgICAgIGVsZl9maWxlID0gaW50KGZpbGVfbGlzdFtmaWxlXVs1Ol0pCiAgICAgICAg
ICAgICAgICBpZiBlbGZfZmlsZSAmIDI6CiAgICAgICAgICAgICAgICAgICAgYmIud2FybigiRmls
ZSAnJXMnIGZyb20gJXMgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1
dHVyZSBkZWJ1Z2dpbmchIiAlIChzcmMsIHBuKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQoKICAgICAgICAgICAgICAgICMgU3BsaXQgdGhlIGZpbGUuLi4KICAgICAgICAgICAgICAgIGJi
Lm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZnBhdGgpKQogICAgICAgICAgICAgICAgI2JiLm5v
dGUoIlNwbGl0ICVzIC0+ICVzIiAlIChmaWxlLCBmcGF0aCkpCiAgICAgICAgICAgICAgICAjIE9u
bHkgc3RvcmUgb2ZmIHRoZSBoYXJkIGxpbmsgcmVmZXJlbmNlIGlmIHdlIHN1Y2Nlc3NmdWxseSBz
cGxpdCEKICAgICAgICAgICAgICAgIGlmIHNwbGl0ZmlsZShmaWxlLCBmcGF0aCwgZGVidWdzcmNk
aXIsIGQpID09IDAgYW5kIGZpbGVfcmVmZXJlbmNlICE9ICIiOgogICAgICAgICAgICAgICAgICAg
IGZpbGVfbGlua3NbZmlsZV9yZWZlcmVuY2VdID0gZmlsZQoKICAgICAgICAjIFRoZSBhYm92ZSBt
YXkgaGF2ZSBnZW5lcmF0ZWQgZGFuZ2xpbmcgc3ltbGlua3MsIHJlbW92ZSB0aGVtIQogICAgICAg
ICMgRGFuZ2xpbmcgc3ltbGlua3MgYXJlIGEgcmVzdWx0IG9mIHNvbWV0aGluZyBOT1QgYmVpbmcg
c3BsaXQsIHN1Y2ggYXMgYSBzdHJpcHBlZCBiaW5hcnkuCiAgICAgICAgIyBUaGlzIHNob3VsZCBi
ZSBhIHJhcmUgb2NjdXJhbmNlLCBidXQgd2Ugd2FudCB0byBjbGVhbiB1cCBhbnl3YXkuCiAgICAg
ICAgZm9yIGZpbGUgaW4gZmlsZV9saXN0OgogICAgICAgICAgICBpZiBmaWxlX2xpc3RbZmlsZV0u
c3RhcnRzd2l0aCgic3ltOiAiKToKICAgICAgICAgICAgICAgIHNyYyA9IGZpbGVbbGVuKGR2YXIp
Ol0KICAgICAgICAgICAgICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShz
cmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z2FwcGVu
ZAogICAgICAgICAgICAgICAgZnBhdGggPSBkdmFyICsgZGVzdAogICAgICAgICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZwYXRoKQogICAgICAgICAgICAgICAg
ZXhjZXB0IE9TRXJyb3IsIChlcnIsIHN0cmVycm9yKToKICAgICAgICAgICAgICAgICAgICBpZiBl
cnIgIT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAg
ICAgICAgICAgICAgICNiYi5ub3RlKCJSZW1vdmUgZGFuZ2xpbmcgbGluayAlcyAtPiAlcyIgJSAo
ZnBhdGgsIG9zLnJlYWRsaW5rKGZwYXRoKSkpCiAgICAgICAgICAgICAgICAgICAgb3MudW5saW5r
KGZwYXRoKQogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb3VsZCBsZWF2ZSBhbiBlbXB0eSBk
ZWJ1ZyBkaXJlY3RvcnkgbGF5aW5nIGFyb3VuZAogICAgICAgICAgICAgICAgICAgICMgdGFrZSBj
YXJlIG9mIHRoZSBvYnZpb3VzIGNhc2UuLi4KICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNz
LmNhbGwoInJtZGlyICVzIDI+L2Rldi9udWxsIiAlIG9zLnBhdGguZGlybmFtZShmcGF0aCksIHNo
ZWxsPVRydWUpCgogICAgICAgICMgUHJvY2VzcyB0aGUgZGVidWdzcmNkaXIgaWYgcmVxdWVzdGVk
Li4uCiAgICAgICAgIyBUaGlzIGNvcGllcyBhbmQgcGxhY2VzIHRoZSByZWZlcmVuY2VkIHNvdXJj
ZXMgZm9yIGxhdGVyIGRlYnVnZ2luZy4uLgogICAgICAgIHNwbGl0ZmlsZTIoZGVidWdzcmNkaXIs
IGQpCiAgICAjCiAgICAjIEVuZCBvZiBkZWJ1ZyBzcGxpdHRpbmcKICAgICMKCiAgICAjCiAgICAj
IE5vdyBsZXRzIGdvIGJhY2sgb3ZlciB0aGluZ3MgYW5kIHN0cmlwIHRoZW0KICAgICMKICAgIGlm
IChkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX1NUUklQJywgVHJ1ZSkgIT0gJzEnKToKICAgICAg
ICBmb3IgZmlsZSBpbiBmaWxlX2xpc3Q6CiAgICAgICAgICAgIGlmIGZpbGVfbGlzdFtmaWxlXS5z
dGFydHN3aXRoKCJFTEY6ICIpOgogICAgICAgICAgICAgICAgZWxmX2ZpbGUgPSBpbnQoZmlsZV9s
aXN0W2ZpbGVdWzU6XSkKICAgICAgICAgICAgICAgICNiYi5ub3RlKCJTdHJpcCAlcyIgJSBmaWxl
KQogICAgICAgICAgICAgICAgcnVuc3RyaXAoZmlsZSwgZWxmX2ZpbGUsIGQpCgoKICAgIGlmIChk
LmdldFZhcignSU5ISUJJVF9QQUNLQUdFX1NUUklQJywgVHJ1ZSkgIT0gJzEnKToKICAgICAgICBm
b3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkdmFyKToKICAgICAgICAgICAgZm9yIGYg
aW4gZmlsZXM6CiAgICAgICAgICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmtvIik6CiAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIHJ1bnN0cmlwKG9zLnBhdGgu
am9pbihyb290LCBmKSwgTm9uZSwgZCkKICAgICMKICAgICMgRW5kIG9mIHN0cmlwCiAgICAjCn0K
CgpweXRob24gcGF0Y2hfZG9fcGF0Y2ggKCkgewogICAgaW1wb3J0IG9lLnBhdGNoCgogICAgcGF0
Y2hzZXRtYXAgPSB7CiAgICAgICAgInBhdGNoIjogb2UucGF0Y2guUGF0Y2hUcmVlLAogICAgICAg
ICJxdWlsdCI6IG9lLnBhdGNoLlF1aWx0VHJlZSwKICAgICAgICAiZ2l0Ijogb2UucGF0Y2guR2l0
QXBwbHlUcmVlLAogICAgfQoKICAgIGNscyA9IHBhdGNoc2V0bWFwW2QuZ2V0VmFyKCdQQVRDSFRP
T0wnLCBUcnVlKSBvciAncXVpbHQnXQoKICAgIHJlc29sdmVybWFwID0gewogICAgICAgICJub29w
Ijogb2UucGF0Y2guTk9PUFJlc29sdmVyLAogICAgICAgICJ1c2VyIjogb2UucGF0Y2guVXNlclJl
c29sdmVyLAogICAgfQoKICAgIHJjbHMgPSByZXNvbHZlcm1hcFtkLmdldFZhcignUEFUQ0hSRVNP
TFZFJywgVHJ1ZSkgb3IgJ3VzZXInXQoKICAgIGNsYXNzZXMgPSB7fQoKICAgIHMgPSBkLmdldFZh
cignUycsIFRydWUpCgogICAgcGF0aCA9IG9zLmdldGVudignUEFUSCcpCiAgICBvcy5wdXRlbnYo
J1BBVEgnLCBkLmdldFZhcignUEFUSCcsIFRydWUpKQoKICAgIGZvciBwYXRjaCBpbiBzcmNfcGF0
Y2hlcyhkKToKICAgICAgICBfLCBfLCBsb2NhbCwgXywgXywgcGFybSA9IGJiLmRlY29kZXVybChw
YXRjaCkKCiAgICAgICAgaWYgInBhdGNoZGlyIiBpbiBwYXJtOgogICAgICAgICAgICBwYXRjaGRp
ciA9IHBhcm1bInBhdGNoZGlyIl0KICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMocGF0
Y2hkaXIpOgogICAgICAgICAgICAgICAgcGF0Y2hkaXIgPSBvcy5wYXRoLmpvaW4ocywgcGF0Y2hk
aXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGF0Y2hkaXIgPSBzCgogICAgICAgIGlmIG5v
dCBwYXRjaGRpciBpbiBjbGFzc2VzOgogICAgICAgICAgICBwYXRjaHNldCA9IGNscyhwYXRjaGRp
ciwgZCkKICAgICAgICAgICAgcmVzb2x2ZXIgPSByY2xzKHBhdGNoc2V0LCBvZV90ZXJtaW5hbCkK
ICAgICAgICAgICAgY2xhc3Nlc1twYXRjaGRpcl0gPSAocGF0Y2hzZXQsIHJlc29sdmVyKQogICAg
ICAgICAgICBwYXRjaHNldC5DbGVhbigpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcGF0Y2hz
ZXQsIHJlc29sdmVyID0gY2xhc3Nlc1twYXRjaGRpcl0KCiAgICAgICAgYmIubm90ZSgiQXBwbHlp
bmcgcGF0Y2ggJyVzJyAoJXMpIiAlIChwYXJtWydwYXRjaG5hbWUnXSwgb2UucGF0aC5mb3JtYXRf
ZGlzcGxheShsb2NhbCwgZCkpKQogICAgICAgIHRyeToKICAgICAgICAgICAgcGF0Y2hzZXQuSW1w
b3J0KHsiZmlsZSI6bG9jYWwsICJzdHJpcHBhdGgiOiBwYXJtWydzdHJpcGxldmVsJ119LCBUcnVl
KQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICBiYi5mYXRhbChz
dHIoZXhjKSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIHJlc29sdmVyLlJlc29sdmUoKQogICAg
ICAgIGV4Y2VwdCBiYi5CQkhhbmRsZWRFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgYmIuZmF0
YWwoc3RyKGUpKQp9CgoKcHl0aG9uIGNoZWNrX3Rvb2xjaGFpbiAoKSB7CmRlZiBjaGVja190b29s
Y2hhaW4oZGF0YSk6CiAgICB0dW5lX2Vycm9yX3NldCA9IFtdCiAgICBkZWZ0dW5lID0gZGF0YS5n
ZXRWYXIoIkRFRkFVTFRUVU5FIiwgVHJ1ZSkKICAgIHR1bmVfZXJyb3JzID0gY2hlY2tfdG9vbGNo
YWluX3R1bmUoZGF0YSwgZGVmdHVuZSwgJ2RlZmF1bHQnKQogICAgaWYgdHVuZV9lcnJvcnM6CiAg
ICAgICAgdHVuZV9lcnJvcl9zZXQuYXBwZW5kKHR1bmVfZXJyb3JzKQoKICAgIG11bHRpbGlicyA9
IChkYXRhLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiLCBUcnVlKSBvciAiIikuc3BsaXQoKQog
ICAgaWYgbXVsdGlsaWJzOgogICAgICAgIHNlZW5fbGlicyA9IFtdCiAgICAgICAgc2Vlbl90dW5l
cyA9IFtdCiAgICAgICAgZm9yIGxpYiBpbiBtdWx0aWxpYnM6CiAgICAgICAgICAgIGlmIGxpYiBp
biBzZWVuX2xpYnM6CiAgICAgICAgICAgICAgICB0dW5lX2Vycm9yX3NldC5hcHBlbmQoIlRoZSBt
dWx0aWxpYiAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UuIiAlIGxpYikKICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgIHNlZW5fbGlicy5hcHBlbmQobGliKQogICAgICAgICAgICB0
dW5lID0gZGF0YS5nZXRWYXIoIkRFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi0lcyIgJSBs
aWIsIFRydWUpCiAgICAgICAgICAgIGlmIHR1bmUgaW4gc2Vlbl90dW5lczoKICAgICAgICAgICAg
ICAgIHR1bmVfZXJyb3Jfc2V0LmFwcGVuZCgiVGhlIHR1bmluZyAnJXMnIGFwcGVhcnMgaW4gbW9y
ZSB0aGFuIG9uZSBtdWx0aWxpYi4iICUgdHVuZSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgIHNlZW5fbGlicy5hcHBlbmQodHVuZSkKICAgICAgICAgICAgaWYgdHVuZSA9PSBkZWZ0
dW5lOgogICAgICAgICAgICAgICAgdHVuZV9lcnJvcl9zZXQuYXBwZW5kKCJNdWx0aWxpYiAnJXMn
ICglcykgaXMgYWxzbyB0aGUgZGVmYXVsdCB0dW5pbmcuIiAlIChsaWIsIGRlZnR1bmUpKQogICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdHVuZV9lcnJvcnMgPSBjaGVja190b29sY2hh
aW5fdHVuZShkYXRhLCB0dW5lLCBsaWIpCiAgICAgICAgICAgIGlmIHR1bmVfZXJyb3JzOgogICAg
ICAgICAgICAgICAgdHVuZV9lcnJvcl9zZXQuYXBwZW5kKHR1bmVfZXJyb3JzKQogICAgaWYgdHVu
ZV9lcnJvcl9zZXQ6CiAgICAgICAgcmV0dXJuICJUb29sY2hhaW4gdHVuaW5ncyBpbnZhbGlkOlxu
IiArICdcbicuam9pbih0dW5lX2Vycm9yX3NldCkKCiAgICByZXR1cm4gIiIKfQoKCnB5dGhvbiBw
c3RhZ2luZ19mZXRjaCAoKSB7CmRlZiBwc3RhZ2luZ19mZXRjaChzc3RhdGVmZXRjaCwgc3N0YXRl
cGtnLCBkKToKICAgIGltcG9ydCBiYi5mZXRjaDIKCiAgICAjIE9ubHkgdHJ5IGFuZCBmZXRjaCBp
ZiB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBhIG1pcnJvcgogICAgbWlycm9ycyA9IGQuZ2V0VmFy
KCdTU1RBVEVfTUlSUk9SUycsIFRydWUpCiAgICBpZiBub3QgbWlycm9yczoKICAgICAgICByZXR1
cm4KCiAgICAjIENvcHkgdGhlIGRhdGEgb2JqZWN0IGFuZCBvdmVycmlkZSBETF9ESVIgYW5kIFNS
Q19VUkkKICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgYmIuZGF0YS51
cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgZGxkaXIgPSBsb2NhbGRhdGEuZXhwYW5kKCIvaG9t
ZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3NzdGF0ZS1jYWNoZSIpCiAgICBzcmN1cmkgPSAi
ZmlsZTovLyIgKyBzc3RhdGVmZXRjaAoKICAgIGJiLm1rZGlyaGllcihkbGRpcikKCiAgICBsb2Nh
bGRhdGEuc2V0VmFyKCdETF9ESVInLCBkbGRpcikKICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BSRU1J
UlJPUlMnLCBtaXJyb3JzKQogICAgbG9jYWxkYXRhLnNldFZhcignU1JDX1VSSScsIHNyY3VyaSkK
CiAgICAjIFRyeSBhIGZldGNoIGZyb20gdGhlIHNzdGF0ZSBtaXJyb3IsIGlmIGl0IGZhaWxzIGp1
c3QgcmV0dXJuIGFuZAogICAgIyB3ZSB3aWxsIGJ1aWxkIHRoZSBwYWNrYWdlCiAgICB0cnk6CiAg
ICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbc3JjdXJpXSwgbG9jYWxkYXRhLCBjYWNo
ZT1GYWxzZSkKICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKCiAgICAgICAgIyBOZWVkIHRvIG9w
dGltaXNlIHRoaXMsIGlmIHVzaW5nIGZpbGU6Ly8gdXJscywgdGhlIGZldGNoZXIganVzdCBjaGFu
Z2VzIHRoZSBsb2NhbCBwYXRoCiAgICAgICAgIyBGb3Igbm93IHdvcmsgYXJvdW5kIGJ5IHN5bWxp
bmtpbmcKICAgICAgICBsb2NhbHBhdGggPSBiYi5kYXRhLmV4cGFuZChmZXRjaGVyLmxvY2FscGF0
aChzcmN1cmkpLCBsb2NhbGRhdGEpCiAgICAgICAgaWYgbG9jYWxwYXRoICE9IHNzdGF0ZXBrZyBh
bmQgb3MucGF0aC5leGlzdHMobG9jYWxwYXRoKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHNzdGF0
ZXBrZyk6CiAgICAgICAgICAgIG9zLnN5bWxpbmsobG9jYWxwYXRoLCBzc3RhdGVwa2cpCgogICAg
ZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhjZXB0aW9uOgogICAgICAgIHBhc3MKfQoKCnB5dGhv
biBwa2dhcmNoX21hcHBpbmcgKCkgewpkZWYgcGtnYXJjaF9tYXBwaW5nKGQpOgogICAgIyBDb21w
YXRpYmlsaXR5IG1hcHBpbmdzIG9mIFRVTkVfUEtHQVJDSCAob3B0IGluKQogICAgaWYgZC5nZXRW
YXIoIlBLR0FSQ0hDT01QQVRfQVJNVjdBIiwgVHJ1ZSk6CiAgICAgICAgaWYgZC5nZXRWYXIoIlRV
TkVfUEtHQVJDSCIsIFRydWUpID09ICJhcm12N2EtdmZwLW5lb24iOgogICAgICAgICAgICBkLnNl
dFZhcigiVFVORV9QS0dBUkNIIiwgImFybXY3YSIpCn0KCgpweXRob24gcHJlZmVycmVkX21sX3Vw
ZGF0ZXMgKCkgewpkZWYgcHJlZmVycmVkX21sX3VwZGF0ZXMoZCk6CiAgICAjIElmIGFueSBQUkVG
RVJSRURfUFJPVklERVIgb3IgUFJFRkVSUkVEX1ZFUlNJT05TIGFyZSBzZXQsCiAgICAjIHdlIG5l
ZWQgdG8gbWlycm9yIHRoZXNlIHZhcmlhYmxlcyBpbiB0aGUgbXVsdGlsaWIgY2FzZQogICAgbXVs
dGlsaWJzID0gZC5nZXRWYXIoJ01VTFRJTElCUycsIFRydWUpIG9yICIiCiAgICBpZiBub3QgbXVs
dGlsaWJzOgogICAgICAgIHJldHVybgoKICAgIHByZWZpeGVzID0gW10KICAgIGZvciBleHQgaW4g
bXVsdGlsaWJzLnNwbGl0KCk6CiAgICAgICAgZWV4dCA9IGV4dC5zcGxpdCgnOicpCiAgICAgICAg
aWYgbGVuKGVleHQpID4gMSBhbmQgZWV4dFswXSA9PSAnbXVsdGlsaWInOgogICAgICAgICAgICBw
cmVmaXhlcy5hcHBlbmQoZWV4dFsxXSkKCiAgICB2ZXJzaW9ucyA9IFtdCiAgICBwcm92aWRlcnMg
PSBbXQogICAgZm9yIHYgaW4gZC5rZXlzKCk6CiAgICAgICAgaWYgdi5zdGFydHN3aXRoKCJQUkVG
RVJSRURfVkVSU0lPTl8iKToKICAgICAgICAgICAgdmVyc2lvbnMuYXBwZW5kKHYpCiAgICAgICAg
aWYgdi5zdGFydHN3aXRoKCJQUkVGRVJSRURfUFJPVklERVJfIik6CiAgICAgICAgICAgIHByb3Zp
ZGVycy5hcHBlbmQodikKCiAgICBmb3IgdiBpbiB2ZXJzaW9uczoKICAgICAgICB2YWwgPSBkLmdl
dFZhcih2LCBGYWxzZSkKICAgICAgICBwa2cgPSB2LnJlcGxhY2UoIlBSRUZFUlJFRF9WRVJTSU9O
XyIsICIiKQogICAgICAgIGlmIHBrZy5lbmRzd2l0aCgiLW5hdGl2ZSIpIG9yIHBrZy5lbmRzd2l0
aCgiLW5hdGl2ZXNkayIpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGZvciBwIGluIHBy
ZWZpeGVzOgogICAgICAgICAgICBuZXduYW1lID0gIlBSRUZFUlJFRF9WRVJTSU9OXyIgKyBwICsg
Ii0iICsgcGtnCiAgICAgICAgICAgIGlmIG5vdCBkLmdldFZhcihuZXduYW1lLCBGYWxzZSk6CiAg
ICAgICAgICAgICAgICBkLnNldFZhcihuZXduYW1lLCB2YWwpCgogICAgZm9yIHByb3YgaW4gcHJv
dmlkZXJzOgogICAgICAgIHZhbCA9IGQuZ2V0VmFyKHByb3YsIEZhbHNlKQogICAgICAgIHBrZyA9
IHByb3YucmVwbGFjZSgiUFJFRkVSUkVEX1BST1ZJREVSXyIsICIiKQogICAgICAgIGlmIHBrZy5l
bmRzd2l0aCgiLW5hdGl2ZSIpIG9yIHBrZy5lbmRzd2l0aCgiLW5hdGl2ZXNkayIpOgogICAgICAg
ICAgICBjb250aW51ZQogICAgICAgIHZpcnQgPSAiIgogICAgICAgIGlmIHBrZy5zdGFydHN3aXRo
KCJ2aXJ0dWFsLyIpOgogICAgICAgICAgICAgcGtnID0gcGtnLnJlcGxhY2UoInZpcnR1YWwvIiwg
IiIpCiAgICAgICAgICAgICB2aXJ0ID0gInZpcnR1YWwvIgogICAgICAgIGZvciBwIGluIHByZWZp
eGVzOgogICAgICAgICAgICBuZXduYW1lID0gIlBSRUZFUlJFRF9QUk9WSURFUl8iICsgdmlydCAr
IHAgKyAiLSIgKyBwa2cKICAgICAgICAgICAgaWYgcGtnICE9ICJrZXJuZWwiOgogICAgICAgICAg
ICAgICAgdmFsID0gcCArICItIiArIHZhbAogICAgICAgICAgICBpZiBub3QgZC5nZXRWYXIobmV3
bmFtZSwgRmFsc2UpOgogICAgICAgICAgICAgICAgZC5zZXRWYXIobmV3bmFtZSwgdmFsKQoKCiAg
ICBtcCA9IChkLmdldFZhcigiTVVMVElfUFJPVklERVJfV0hJVEVMSVNUIiwgVHJ1ZSkgb3IgIiIp
LnNwbGl0KCkKICAgIGV4dHJhbXAgPSBbXQogICAgZm9yIHAgaW4gbXA6CiAgICAgICAgaWYgcC5l
bmRzd2l0aCgiLW5hdGl2ZSIpIG9yIHAuZW5kc3dpdGgoIi1uYXRpdmVzZGsiKToKICAgICAgICAg
ICAgY29udGludWUKICAgICAgICB2aXJ0ID0gIiIKICAgICAgICBpZiBwLnN0YXJ0c3dpdGgoInZp
cnR1YWwvIik6CiAgICAgICAgICAgIHAgPSBwLnJlcGxhY2UoInZpcnR1YWwvIiwgIiIpCiAgICAg
ICAgICAgIHZpcnQgPSAidmlydHVhbC8iCiAgICAgICAgZm9yIHByZWYgaW4gcHJlZml4ZXM6CiAg
ICAgICAgICAgIGV4dHJhbXAuYXBwZW5kKHZpcnQgKyBwcmVmICsgIi0iICsgcCkKICAgIGQuc2V0
VmFyKCJNVUxUSV9QUk9WSURFUl9XSElURUxJU1QiLCAiICIuam9pbihtcCArIGV4dHJhbXApKQoK
fQoKCnB5dGhvbiBleHBsb2RlX2RlcHMgKCkgewpkZWYgZXhwbG9kZV9kZXBzKHMpOgogICAgcmV0
dXJuIGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhzKQp9CgoKcHl0aG9uIHBhY2thZ2VfcWFfY2hlY2tf
ZGV2ICgpIHsKZGVmIHBhY2thZ2VfcWFfY2hlY2tfZGV2KHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVz
c2FnZXMpOgogICAgIiIiCiAgICBDaGVjayBmb3IgIi5zbyIgbGlicmFyeSBzeW1saW5rcyBpbiBu
b24tZGV2IHBhY2thZ2VzCiAgICAiIiIKCiAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgiLWRldiIp
IGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLWRiZyIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLW5h
dGl2ZXNkayIpIGFuZCBwYXRoLmVuZHN3aXRoKCIuc28iKSBhbmQgb3MucGF0aC5pc2xpbmsocGF0
aCk6CiAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJub24gLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFj
a2FnZSBjb250YWlucyBzeW1saW5rIC5zbzogJXMgcGF0aCAnJXMnIiAlIFwKICAgICAgICAgICAg
ICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQp9CgoKcHl0aG9uIHBh
Y2thZ2VfcWFfY2hlY2tfcnBhdGggKCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19ycGF0aChmaWxl
LG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIiCiAgICBDaGVjayBmb3IgZGFuZ2Vyb3Vz
IFJQQVRIcwogICAgIiIiCiAgICBpZiBub3QgZWxmOgogICAgICAgIHJldHVybgoKICAgIHNjYW5l
bGYgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScsVHJ1ZSks
J3NjYW5lbGYnKQogICAgYmFkX2RpcnMgPSBbZC5nZXRWYXIoJ1RNUERJUicsIFRydWUpICsgIi93
b3JrIiwgZC5nZXRWYXIoJ1NUQUdJTkdfRElSX1RBUkdFVCcsIFRydWUpXQogICAgYmFkX2Rpcl90
ZXN0ID0gZC5nZXRWYXIoJ1RNUERJUicsIFRydWUpCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
c2NhbmVsZik6CiAgICAgICAgYmIuZmF0YWwoIkNhbiBub3QgY2hlY2sgUlBBVEgsIHNjYW5lbGYg
KHBhcnQgb2YgcGF4LXV0aWxzLW5hdGl2ZSkgbm90IGZvdW5kIikKCiAgICBpZiBub3QgYmFkX2Rp
cnNbMF0gaW4gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKToKICAgICAgICBiYi5mYXRhbCgiVGhp
cyBjbGFzcyBhc3N1bWVkIHRoYXQgV09SS0RJUiBpcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVy
L2J1aWxkL3RtcC93b3JrLi4uIE5vdCBkb2luZyBhbnkgY2hlY2siKQoKICAgIG91dHB1dCA9IG9z
LnBvcGVuKCIlcyAtQiAtRiUlciNGICclcyciICUgKHNjYW5lbGYsZmlsZSkpCiAgICB0eHQgICAg
PSBvdXRwdXQucmVhZGxpbmUoKS5zcGxpdCgpCiAgICBmb3IgbGluZSBpbiB0eHQ6CiAgICAgICAg
Zm9yIGRpciBpbiBiYWRfZGlyczoKICAgICAgICAgICAgaWYgZGlyIGluIGxpbmU6CiAgICAgICAg
ICAgICAgICBtZXNzYWdlcy5hcHBlbmQoInBhY2thZ2UgJXMgY29udGFpbnMgYmFkIFJQQVRIICVz
IGluIGZpbGUgJXMiICUgKG5hbWUsIGxpbmUsIGZpbGUpKQp9CgoKcHl0aG9uIGJhc2VfZ2V0X21l
dGFkYXRhX2dpdF9icmFuY2ggKCkgewpkZWYgYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X2JyYW5jaChw
YXRoLCBkKToKICAgIGJyYW5jaCA9IG9zLnBvcGVuKCdjZCAlczsgZ2l0IGJyYW5jaCAyPiYxIHwg
Z3JlcCAiXiogIiB8IHRyIC1kICIqICInICUgcGF0aCkucmVhZCgpCgogICAgaWYgbGVuKGJyYW5j
aCkgIT0gMDoKICAgICAgICByZXR1cm4gYnJhbmNoCiAgICByZXR1cm4gIjx1bmtub3duPiIKfQoK
CnB5dGhvbiBjaGVja19zYW5pdHlfZXZlbnRoYW5kbGVyICgpIHsKICAgIGlmIGJiLmV2ZW50Lmdl
dE5hbWUoZSkgPT0gIkJ1aWxkU3RhcnRlZCIgYW5kIGUuZGF0YS5nZXRWYXIoIkJCX1dPUktFUkNP
TlRFWFQiLCBUcnVlKSAhPSAiMSIgYW5kIGUuZGF0YS5nZXRWYXIoIkRJU0FCTEVfU0FOSVRZX0NI
RUNLUyIsIFRydWUpICE9ICIxIjoKICAgICAgICBzYW5pdHlfZGF0YSA9IGNvcHlfZGF0YShlKQog
ICAgICAgIGNoZWNrX3Nhbml0eShzYW5pdHlfZGF0YSkKICAgIGVsaWYgYmIuZXZlbnQuZ2V0TmFt
ZShlKSA9PSAiU2FuaXR5Q2hlY2siOgogICAgICAgIHNhbml0eV9kYXRhID0gY29weV9kYXRhKGUp
CiAgICAgICAgc2FuaXR5X2RhdGEuc2V0VmFyKCJTQU5JVFlfVVNFX0VWRU5UUyIsICIxIikKICAg
ICAgICBjaGVja19zYW5pdHkoc2FuaXR5X2RhdGEpCiAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5l
dmVudC5TYW5pdHlDaGVja1Bhc3NlZCgpLCBlLmRhdGEpCgogICAgcmV0dXJuCn0KCgpweXRob24g
cGVyZm9ybV9wYWNrYWdlY29weSAoKSB7CiAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgZGVzdCA9
IGQuZ2V0VmFyKCdEJywgVHJ1ZSkKICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCgog
ICAgYmIubWtkaXJoaWVyKGR2YXIpCgogICAgIyBTdGFydCBieSBwYWNrYWdlIHBvcHVsYXRpb24g
YnkgdGFraW5nIGEgY29weSBvZiB0aGUgaW5zdGFsbGVkCiAgICAjIGZpbGVzIHRvIG9wZXJhdGUg
b24KICAgIHN1YnByb2Nlc3MuY2FsbCgncm0gLXJmICVzLyonICUgKGR2YXIpLCBzaGVsbD1UcnVl
KQogICAgIyBQcmVzZXJ2ZSBzcGFyc2UgZmlsZXMgYW5kIGhhcmQgbGlua3MKICAgIHN1YnByb2Nl
c3MuY2FsbCgndGFyIC1jZiAtIC1DICVzIC1wcyAuIHwgdGFyIC14ZiAtIC1DICVzJyAlIChkZXN0
LCBkdmFyKSwgc2hlbGw9VHJ1ZSkKCiAgICAjIHJlcGxhY2UgUlBBVEhzIGZvciB0aGUgbmF0aXZl
c2RrIGJpbmFyaWVzLCB0byBtYWtlIHRoZW0gcmVsb2NhdGFibGUKICAgIGlmIGJiLmRhdGEuaW5o
ZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgogICAgICAgIHJwYXRoX3JlcGxhY2UgKGR2YXIs
IGQpCn0KCgpweXRob24gc3N0YXRlX3Rhc2tfcG9zdGZ1bmMgKCkgewogICAgc2hhcmVkX3N0YXRl
ID0gc3N0YXRlX3N0YXRlX2Zyb212YXJzKGQpCiAgICBzc3RhdGVfaW5zdGFsbChzaGFyZWRfc3Rh
dGUsIGQpCiAgICBmb3IgaW50ZXJjZXB0IGluIHNoYXJlZF9zdGF0ZVsnaW50ZXJjZXB0ZnVuY3Mn
XToKICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoaW50ZXJjZXB0LCBkKQogICAgc3N0YXRlX3Bh
Y2thZ2Uoc2hhcmVkX3N0YXRlLCBkKQp9CgoKcHl0aG9uIGJhc2VfZGV0ZWN0X2JyYW5jaCAoKSB7
CmRlZiBiYXNlX2RldGVjdF9icmFuY2goZCk6CiAgICBwYXRoID0gYmFzZV9nZXRfc2NtYmFzZXBh
dGgoZCkKCiAgICBzY21zID0gW2Jhc2VfZ2V0X21ldGFkYXRhX2dpdF9icmFuY2hdCgogICAgZm9y
IHNjbSBpbiBzY21zOgogICAgICAgIHJldiA9IHNjbShwYXRoLCBkKQogICAgICAgIGlmIHJldiA8
PiAiPHVua25vd24+IjoKICAgICAgICAgICAgcmV0dXJuIHJldi5zdHJpcCgpCgogICAgcmV0dXJu
ICI8dW5rbm93bj4iCn0KCgpweXRob24gZG9fY2hlY2t1cmkgKCkgewogICAgc3JjX3VyaSA9IChk
LmdldFZhcignU1JDX1VSSScsIFRydWUpIG9yICIiKS5zcGxpdCgpCiAgICBpZiBsZW4oc3JjX3Vy
aSkgPT0gMDoKICAgICAgICByZXR1cm4KCiAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNv
cHkoZCkKICAgIGJiLmRhdGEudXBkYXRlX2RhdGEobG9jYWxkYXRhKQoKICAgIHRyeToKICAgICAg
ICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGxvY2FsZGF0YSkKICAgICAgICBm
ZXRjaGVyLmNoZWNrc3RhdHVzKCkKICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlv
biwgZToKICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKGUpCn0KCgpweXRob24gaXNf
bWFjaGluZV9zcGVjaWZpYyAoKSB7CmRlZiBpc19tYWNoaW5lX3NwZWNpZmljKGQpOgogICAgIiIi
RGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGN1cnJlbnQgcmVjaXBlIGlzIG1hY2hpbmUgc3BlY2lmaWMi
IiIKICAgIG1hY2hpbmVwYXRocyA9IHNldChtYWNoaW5lX3BhdGhzKGQpKQogICAgc3JjdXJpID0g
ZC5nZXRWYXIoIlNSQ19VUkkiLCBUcnVlKS5zcGxpdCgpCiAgICBmb3IgdXJsIGluIHNyY3VyaToK
ICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKFtzcmN1cmldLCBkKQogICAgICAgIGlm
IHVybC5zdGFydHN3aXRoKCJmaWxlOi8vIik6CiAgICAgICAgICAgIGlmIGFueShmZXRjaGVyLmxv
Y2FscGF0aCh1cmwpLnN0YXJ0c3dpdGgobXAgKyAiLyIpIGZvciBtcCBpbiBtYWNoaW5lcGF0aHMp
OgogICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKfQoKCnB5dGhvbiBzeXNyb290X2NoZWNraGFz
aGVzICgpIHsKZGVmIHN5c3Jvb3RfY2hlY2toYXNoZXMoY292ZXJlZCwgdGFza25hbWVzLCBmbmlk
cywgZm5zLCBkLCBpbnZhbGlkdGFza3MgPSBOb25lKToKICAgIHByb2JsZW1zID0gc2V0KCkKICAg
IGNvbmZpZ3VyZWZuaWRzID0gc2V0KCkKICAgIGlmIG5vdCBpbnZhbGlkdGFza3M6CiAgICAgICAg
aW52YWxpZHRhc2tzID0geHJhbmdlKGxlbih0YXNrbmFtZXMpKQogICAgZm9yIHRhc2sgaW4gaW52
YWxpZHRhc2tzOgogICAgICAgIGlmIHRhc2tuYW1lc1t0YXNrXSA9PSAiZG9fY29uZmlndXJlIiBh
bmQgdGFzayBub3QgaW4gY292ZXJlZDoKICAgICAgICAgICAgY29uZmlndXJlZm5pZHMuYWRkKGZu
aWRzW3Rhc2tdKQogICAgZm9yIHRhc2sgaW4gY292ZXJlZDoKICAgICAgICBpZiB0YXNrbmFtZXNb
dGFza10gPT0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiIGFuZCBmbmlkc1t0YXNrXSBpbiBjb25maWd1
cmVmbmlkczoKICAgICAgICAgICAgcHJvYmxlbXMuYWRkKHRhc2spCiAgICByZXR1cm4gcHJvYmxl
bXMKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yICgpIHsKZGVmIHBhY2thZ2VfcWFf
d3JpdGVfZXJyb3IoZXJyb3IsIGQpOgogICAgbG9nZmlsZSA9IGQuZ2V0VmFyKCdRQV9MT0dGSUxF
JywgVHJ1ZSkKICAgIGlmIGxvZ2ZpbGU6CiAgICAgICAgcCA9IGQuZ2V0VmFyKCdQJywgVHJ1ZSkK
ICAgICAgICBmID0gZmlsZSggbG9nZmlsZSwgImErIikKICAgICAgICBwcmludCA+PiBmLCAiJXM6
ICVzIiAlIChwLCBlcnJvcikKICAgICAgICBmLmNsb3NlKCkKfQoKCnB5dGhvbiB3cml0ZV9zcGVj
ZmlsZSAoKSB7CiAgICBpbXBvcnQgdGV4dHdyYXAKICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQoK
ICAgICMgYXBwZW5kIGluZm9ybWF0aW9uIGZvciBsb2dzIGFuZCBwYXRjaGVzIHRvICVwcmVwCiAg
ICBkZWYgYWRkX3ByZXAoZCxzcGVjX2ZpbGVzX2JvdHRvbSk6CiAgICAgICAgaWYgZC5nZXRWYXIo
J1NPVVJDRV9BUkNISVZFX1BBQ0tBR0VfVFlQRScsIFRydWUpIGFuZCBkLmdldFZhcignU09VUkNF
X0FSQ0hJVkVfUEFDS0FHRV9UWVBFJywgVHJ1ZSkudXBwZXIoKSA9PSAnU1JQTSc6CiAgICAgICAg
ICAgIHNwZWNfZmlsZXNfYm90dG9tLmFwcGVuZCgnJSVwcmVwIC1uICVzJyAlIGQuZ2V0VmFyKCdQ
TicsIFRydWUpICkKICAgICAgICAgICAgc3BlY19maWxlc19ib3R0b20uYXBwZW5kKCclcycgJSAi
ZWNobyBcImluY2x1ZGUgbG9ncyBhbmQgcGF0Y2hlcywgUGxlYXNlIGNoZWNrIHRoZW0gaW4gU09V
UkNFU1wiIikKICAgICAgICAgICAgc3BlY19maWxlc19ib3R0b20uYXBwZW5kKCcnKQoKICAgICMg
Z2V0IHRoZSBuYW1lIG9mIHRhcmJhbGwgZm9yIHNvdXJjZXMsIHBhdGNoZXMgYW5kIGxvZ3MKICAg
IGRlZiBnZXRfdGFyYmFsbHMoZCk6CiAgICAgICAgaWYgZC5nZXRWYXIoJ1NPVVJDRV9BUkNISVZF
X1BBQ0tBR0VfVFlQRScsIFRydWUpIGFuZCBkLmdldFZhcignU09VUkNFX0FSQ0hJVkVfUEFDS0FH
RV9UWVBFJywgVHJ1ZSkudXBwZXIoKSA9PSAnU1JQTSc6CiAgICAgICAgICAgIHJldHVybiBnZXRf
cGFja2FnZShkKQoKICAgICMgYXBwZW5kIHRoZSBuYW1lIG9mIHRhcmJhbGwgdG8ga2V5IHdvcmQg
J1NPVVJDRScgaW4geHh4LnNwZWMuCiAgICBkZWYgdGFpbF9zb3VyY2UoZCxzb3VyY2VfbGlzdD1b
XSxwYXRjaF9saXN0PU5vbmUpOgogICAgICAgIGlmIGQuZ2V0VmFyKCdTT1VSQ0VfQVJDSElWRV9Q
QUNLQUdFX1RZUEUnLCBUcnVlKSBhbmQgZC5nZXRWYXIoJ1NPVVJDRV9BUkNISVZFX1BBQ0tBR0Vf
VFlQRScsIFRydWUpLnVwcGVyKCkgPT0gJ1NSUE0nOgogICAgICAgICAgICBzb3VyY2VfbnVtYmVy
ID0gMAogICAgICAgICAgICBwYXRjaF9udW1iZXIgPSAwCiAgICAgICAgICAgIGZvciBzb3VyY2Ug
aW4gc291cmNlX2xpc3Q6CiAgICAgICAgICAgICAgICBzcGVjX3ByZWFtYmxlX3RvcC5hcHBlbmQo
J1NvdXJjZScgKyBzdHIoc291cmNlX251bWJlcikgKyAnOiAlcycgJSBzb3VyY2UpCiAgICAgICAg
ICAgICAgICBzb3VyY2VfbnVtYmVyICs9IDEKICAgICAgICAgICAgaWYgcGF0Y2hfbGlzdDoKICAg
ICAgICAgICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaF9saXN0OgogICAgICAgICAgICAgICAgICAg
IHByaW50X2RlcHMocGF0Y2gsICJQYXRjaCIgKyBzdHIocGF0Y2hfbnVtYmVyKSwgc3BlY19wcmVh
bWJsZV90b3AsIGQpCiAgICAgICAgICAgICAgICAgICAgcGF0Y2hfbnVtYmVyICs9IDEKICAgICMg
V2UgbmVlZCBhIHNpbXBsZSB3YXkgdG8gcmVtb3ZlIHRoZSBNTFBSRUZJWCBmcm9tIHRoZSBwYWNr
YWdlIG5hbWUsCiAgICAjIGFuZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uLi4uCiAgICBkZWYgc3Ry
aXBfbXVsdGlsaWIobmFtZSwgZCk6CiAgICAgICAgbXVsdGlsaWJzID0gZC5nZXRWYXIoJ01VTFRJ
TElCUycsIFRydWUpIG9yICIiCiAgICAgICAgZm9yIGV4dCBpbiBtdWx0aWxpYnMuc3BsaXQoKToK
ICAgICAgICAgICAgZWV4dCA9IGV4dC5zcGxpdCgnOicpCiAgICAgICAgICAgIGlmIGxlbihlZXh0
KSA+IDEgYW5kIGVleHRbMF0gPT0gJ211bHRpbGliJyBhbmQgbmFtZSBhbmQgbmFtZS5maW5kKGVl
eHRbMV0gKyAnLScpID49IDA6CiAgICAgICAgICAgICAgICBuYW1lID0gIiIuam9pbihuYW1lLnNw
bGl0KGVleHRbMV0gKyAnLScpKQogICAgICAgIHJldHVybiBuYW1lCgojICAgICAgICBtbCA9IGQu
Z2V0VmFyKCJNTFBSRUZJWCIsIFRydWUpCiMgICAgICAgIGlmIG1sIGFuZCBuYW1lIGFuZCBsZW4o
bWwpICE9IDAgYW5kIG5hbWUuZmluZChtbCkgPT0gMDoKIyAgICAgICAgICAgIHJldHVybiBtbC5q
b2luKG5hbWUuc3BsaXQobWwsIDEpWzE6XSkKIyAgICAgICAgcmV0dXJuIG5hbWUKCiAgICAjIElu
IFJQTSwgZGVwZW5kZW5jaWVzIGFyZSBvZiB0aGUgZm9ybWF0OiBwa2cgPD49IEVwb2NoOlZlcnNp
b24tUmVsZWFzZQogICAgIyBUaGlzIGZvcm1hdCBpcyBzaW1pbGFyIHRvIE9FLCBob3dldmVyIHRo
ZXJlIGFyZSByZXN0cmljdGlvbnMgb24gdGhlCiAgICAjIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUg
aW4gYSBmaWVsZC4gIEluIHRoZSBWZXJzaW9uIGZpZWxkLCAiLSIKICAgICMgY2hhcmFjdGVycyBh
cmUgbm90IGFsbG93ZWQuICAiLSIgaXMgYWxsb3dlZCBpbiB0aGUgUmVsZWFzZSBmaWVsZC4KICAg
ICMKICAgICMgV2UgdHJhbnNsYXRlIHRoZSAiLSIgaW4gdGhlIHZlcnNpb24gdG8gYSAiKyIsIGJ5
IGxvYWRpbmcgdGhlIFBLR1YKICAgICMgZnJvbSB0aGUgZGVwZW5kZW50IHJlY2lwZSwgcmVwbGFj
aW5nIHRoZSAtIHdpdGggYSArLCBhbmQgdGhlbiB1c2luZwogICAgIyB0aGF0IHZhbHVlIHRvIGRv
IGEgcmVwbGFjZSBpbnNpZGUgb2YgdGhpcyByZWNpcGUncyBkZXBlbmRlbmNpZXMuCiAgICAjIFRo
aXMgcHJlc2VydmVzIHRoZSAiLSIgc2VwYXJhdG9yIGJldHdlZW4gdGhlIHZlcnNpb24gYW5kIHJl
bGVhc2UsIGFzCiAgICAjIHdlbGwgYXMgYW55ICItIiBjaGFyYWN0ZXJzIGluc2lkZSBvZiB0aGUg
cmVsZWFzZSBmaWVsZC4KICAgICMKICAgICMgQWxsIG9mIHRoaXMgaGFzIHRvIGhhcHBlbiBCRUZP
UkUgdGhlIG1hcHBpbmdfcmVuYW1lX2hvb2sgYXMKICAgICMgYWZ0ZXIgcmVuYW1pbmcgd2UgY2Fu
bm90IGxvb2sgdXAgdGhlIGRlcGVuZGVuY2llcyBpbiB0aGUgcGFja2FnZWRhdGEKICAgICMgc3Rv
cmUuCiAgICBkZWYgdHJhbnNsYXRlX3ZlcnModmFybmFtZSwgZCk6CiAgICAgICAgZGVwZW5kcyA9
IGQuZ2V0VmFyKHZhcm5hbWUsIFRydWUpCiAgICAgICAgaWYgZGVwZW5kczoKICAgICAgICAgICAg
ZGVwZW5kc19kaWN0ID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMoZGVwZW5kcykKICAg
ICAgICAgICAgbmV3ZGVwc19kaWN0ID0ge30KICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRz
X2RpY3Q6CiAgICAgICAgICAgICAgICB2ZXIgPSBkZXBlbmRzX2RpY3RbZGVwXQogICAgICAgICAg
ICAgICAgaWYgZGVwIGFuZCB2ZXI6CiAgICAgICAgICAgICAgICAgICAgaWYgJy0nIGluIHZlcjoK
ICAgICAgICAgICAgICAgICAgICAgICAgc3ViZCA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfc3VicGtn
ZGF0YV9kaWN0KGRlcCwgZCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ1BLR1YnIGluIHN1
YmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdiA9IHN1YmRbJ1BLR1YnXQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwcHYgPSBwdi5yZXBsYWNlKCctJywgJysnKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyID0gdmVyLnJlcGxhY2UocHYsIHJlcHB2KQogICAgICAg
ICAgICAgICAgbmV3ZGVwc19kaWN0W2RlcF0gPSB2ZXIKICAgICAgICAgICAgZGVwZW5kcyA9IGJi
LnV0aWxzLmpvaW5fZGVwcyhuZXdkZXBzX2RpY3QpCiAgICAgICAgICAgIGQuc2V0VmFyKHZhcm5h
bWUsIGRlcGVuZHMuc3RyaXAoKSkKCiAgICAjIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBzdHlsZSB0
aGUgZGVwZW5kZW5jeSBmcm9tIEJCIHRvIFJQTQogICAgIyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBB
RlRFUiB0aGUgbWFwcGluZ19yZW5hbWVfaG9vawogICAgZGVmIHByaW50X2RlcHModmFyaWFibGUs
IHRhZywgYXJyYXksIGQpOgogICAgICAgIGRlcGVuZHMgPSB2YXJpYWJsZQogICAgICAgIGlmIGRl
cGVuZHM6CiAgICAgICAgICAgIGRlcGVuZHNfZGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3Zl
cnNpb25zKGRlcGVuZHMpCiAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwZW5kc19kaWN0OgogICAg
ICAgICAgICAgICAgdmVyID0gZGVwZW5kc19kaWN0W2RlcF0KICAgICAgICAgICAgICAgIGlmIGRl
cCBhbmQgdmVyOgogICAgICAgICAgICAgICAgICAgIHZlciA9IHZlci5yZXBsYWNlKCcoJywgJycp
CiAgICAgICAgICAgICAgICAgICAgdmVyID0gdmVyLnJlcGxhY2UoJyknLCAnJykKICAgICAgICAg
ICAgICAgICAgICBhcnJheS5hcHBlbmQoIiVzOiAlcyAlcyIgJSAodGFnLCBkZXAsIHZlcikpCiAg
ICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGFycmF5LmFwcGVuZCgiJXM6
ICVzIiAlICh0YWcsIGRlcCkpCgogICAgZGVmIHdhbGtfZmlsZXMod2Fsa3BhdGgsIHRhcmdldCwg
Y29uZmZpbGVzKToKICAgICAgICBmb3Igcm9vdHBhdGgsIGRpcnMsIGZpbGVzIGluIG9zLndhbGso
d2Fsa3BhdGgpOgogICAgICAgICAgICBwYXRoID0gcm9vdHBhdGgucmVwbGFjZSh3YWxrcGF0aCwg
IiIpCiAgICAgICAgICAgIGZvciBkaXIgaW4gZGlyczoKICAgICAgICAgICAgICAgICMgQWxsIHBh
Y2thZ2VzIG93biB0aGUgZGlyZWN0b3JpZXMgdGhlaXIgZmlsZXMgYXJlIGluLi4uCiAgICAgICAg
ICAgICAgICB0YXJnZXQuYXBwZW5kKCclZGlyICInICsgcGF0aCArICcvJyArIGRpciArICciJykK
ICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICBpZiBjb25mZmls
ZXMuY291bnQocGF0aCArICcvJyArIGZpbGUpOgogICAgICAgICAgICAgICAgICAgIHRhcmdldC5h
cHBlbmQoJyVjb25maWcgIicgKyBwYXRoICsgJy8nICsgZmlsZSArICciJykKICAgICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZCgnIicgKyBwYXRoICsg
Jy8nICsgZmlsZSArICciJykKCiAgICAjIFByZXZlbnQgdGhlIHByZXJtL3Bvc3RybSBzY3JpcHRz
IGZyb20gYmVpbmcgcnVuIGR1cmluZyBhbiB1cGdyYWRlCiAgICBkZWYgd3JhcF91bmluc3RhbGwo
c2NyaXB0dmFyKToKICAgICAgICBzY3IgPSBzY3JpcHR2YXIuc3RyaXAoKQogICAgICAgIGlmIHNj
ci5zdGFydHN3aXRoKCIjISIpOgogICAgICAgICAgICBwb3MgPSBzY3IuZmluZCgiXG4iKSArIDEK
ICAgICAgICBlbHNlOgogICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgc2NyID0gc2NyWzpwb3Nd
ICsgJ2lmIFsgIiQxIiA9ICIwIiBdIDsgdGhlblxuJyArIHNjcltwb3M6XSArICdcbmZpJwogICAg
ICAgIHJldHVybiBzY3IKCiAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUp
CiAgICBpZiBub3QgcGFja2FnZXMgb3IgcGFja2FnZXMgPT0gJyc6CiAgICAgICAgYmIuZGVidWco
MSwgIk5vIHBhY2thZ2VzOyBub3RoaW5nIHRvIGRvIikKICAgICAgICByZXR1cm4KCiAgICBwa2dk
ZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnLCBUcnVlKQogICAgaWYgbm90IHBrZ2Rlc3Q6CiAgICAg
ICAgYmIuZmF0YWwoIk5vIFBLR0RFU1QiKQogICAgICAgIHJldHVybgoKICAgIG91dHNwZWNmaWxl
ID0gZC5nZXRWYXIoJ09VVFNQRUNGSUxFJywgVHJ1ZSkKICAgIGlmIG5vdCBvdXRzcGVjZmlsZToK
ICAgICAgICBiYi5mYXRhbCgiTm8gT1VUU1BFQ0ZJTEUiKQogICAgICAgIHJldHVybgoKICAgICMg
Q29uc3RydWN0IHRoZSBTUEVDIGZpbGUuLi4KICAgIHNyY25hbWUgICAgPSBzdHJpcF9tdWx0aWxp
YihkLmdldFZhcignUE4nLCBUcnVlKSwgZCkKICAgIHNyY3N1bW1hcnkgPSAoZC5nZXRWYXIoJ1NV
TU1BUlknLCBUcnVlKSBvciBkLmdldFZhcignREVTQ1JJUFRJT04nLCBUcnVlKSBvciAiLiIpCiAg
ICBzcmN2ZXJzaW9uID0gZC5nZXRWYXIoJ1BLR1YnLCBUcnVlKS5yZXBsYWNlKCctJywgJysnKQog
ICAgc3JjcmVsZWFzZSA9IGQuZ2V0VmFyKCdQS0dSJywgVHJ1ZSkKICAgIHNyY2Vwb2NoICAgPSAo
ZC5nZXRWYXIoJ1BLR0UnLCBUcnVlKSBvciAiIikKICAgIHNyY2xpY2Vuc2UgPSBkLmdldFZhcign
TElDRU5TRScsIFRydWUpCiAgICBzcmNzZWN0aW9uID0gZC5nZXRWYXIoJ1NFQ1RJT04nLCBUcnVl
KQogICAgc3JjbWFpbnRhaW5lciAgPSBkLmdldFZhcignTUFJTlRBSU5FUicsIFRydWUpCiAgICBz
cmNob21lcGFnZSAgICA9IGQuZ2V0VmFyKCdIT01FUEFHRScsIFRydWUpCiAgICBzcmNkZXNjcmlw
dGlvbiA9IGQuZ2V0VmFyKCdERVNDUklQVElPTicsIFRydWUpIG9yICIuIgoKICAgIHNyY2RlcGVu
ZHMgICAgID0gc3RyaXBfbXVsdGlsaWIoZC5nZXRWYXIoJ0RFUEVORFMnLCBUcnVlKSwgZCkKICAg
IHNyY3JkZXBlbmRzICAgID0gW10KICAgIHNyY3JyZWNvbW1lbmRzID0gW10KICAgIHNyY3JzdWdn
ZXN0cyAgID0gW10KICAgIHNyY3Jwcm92aWRlcyAgID0gW10KICAgIHNyY3JyZXBsYWNlcyAgID0g
W10KICAgIHNyY3Jjb25mbGljdHMgID0gW10KICAgIHNyY3JvYnNvbGV0ZXMgID0gW10KCiAgICBz
cmNwcmVpbnN0ICA9IFtdCiAgICBzcmNwb3N0aW5zdCA9IFtdCiAgICBzcmNwcmVybSAgICA9IFtd
CiAgICBzcmNwb3N0cm0gICA9IFtdCgogICAgc3BlY19wcmVhbWJsZV90b3AgPSBbXQogICAgc3Bl
Y19wcmVhbWJsZV9ib3R0b20gPSBbXQoKICAgIHNwZWNfc2NyaXB0bGV0c190b3AgPSBbXQogICAg
c3BlY19zY3JpcHRsZXRzX2JvdHRvbSA9IFtdCgogICAgc3BlY19maWxlc190b3AgPSBbXQogICAg
c3BlY19maWxlc19ib3R0b20gPSBbXQoKICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToK
ICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKCiAgICAgICAgcm9vdCA9
ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQoKICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxl
KHJvb3QgKyAiLmxvY2siKQoKICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdST09UJywgJycpCiAg
ICAgICAgbG9jYWxkYXRhLnNldFZhcignUk9PVF8lcycgJSBwa2csIHJvb3QpCiAgICAgICAgcGtn
bmFtZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ1BLR18lcycgJSBwa2csIFRydWUpCiAgICAgICAgaWYg
bm90IHBrZ25hbWU6CiAgICAgICAgICAgIHBrZ25hbWUgPSBwa2cKICAgICAgICBsb2NhbGRhdGEu
c2V0VmFyKCdQS0cnLCBwa2duYW1lKQoKICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklE
RVMnLCBwa2cpCgogICAgICAgIGJiLmRhdGEudXBkYXRlX2RhdGEobG9jYWxkYXRhKQoKICAgICAg
ICBjb25mZmlsZXMgPSAobG9jYWxkYXRhLmdldFZhcignQ09ORkZJTEVTJywgVHJ1ZSkgb3IgIiIp
LnNwbGl0KCkKCiAgICAgICAgc3BsaXRuYW1lICAgID0gc3RyaXBfbXVsdGlsaWIocGtnbmFtZSwg
ZCkKCiAgICAgICAgc3BsaXRzdW1tYXJ5ID0gKGxvY2FsZGF0YS5nZXRWYXIoJ1NVTU1BUlknLCBU
cnVlKSBvciBsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIFRydWUpIG9yICIuIikKICAg
ICAgICBzcGxpdHZlcnNpb24gPSAobG9jYWxkYXRhLmdldFZhcignUEtHVicsIFRydWUpIG9yICIi
KS5yZXBsYWNlKCctJywgJysnKQogICAgICAgIHNwbGl0cmVsZWFzZSA9IChsb2NhbGRhdGEuZ2V0
VmFyKCdQS0dSJywgVHJ1ZSkgb3IgIiIpCiAgICAgICAgc3BsaXRlcG9jaCAgID0gKGxvY2FsZGF0
YS5nZXRWYXIoJ1BLR0UnLCBUcnVlKSBvciAiIikKICAgICAgICBzcGxpdGxpY2Vuc2UgPSAobG9j
YWxkYXRhLmdldFZhcignTElDRU5TRScsIFRydWUpIG9yICIiKQogICAgICAgIHNwbGl0c2VjdGlv
biA9IChsb2NhbGRhdGEuZ2V0VmFyKCdTRUNUSU9OJywgVHJ1ZSkgb3IgIiIpCiAgICAgICAgc3Bs
aXRkZXNjcmlwdGlvbiA9IChsb2NhbGRhdGEuZ2V0VmFyKCdERVNDUklQVElPTicsIFRydWUpIG9y
ICIuIikKCiAgICAgICAgdHJhbnNsYXRlX3ZlcnMoJ1JERVBFTkRTJywgbG9jYWxkYXRhKQogICAg
ICAgIHRyYW5zbGF0ZV92ZXJzKCdSUkVDT01NRU5EUycsIGxvY2FsZGF0YSkKICAgICAgICB0cmFu
c2xhdGVfdmVycygnUlNVR0dFU1RTJywgbG9jYWxkYXRhKQogICAgICAgIHRyYW5zbGF0ZV92ZXJz
KCdSUFJPVklERVMnLCBsb2NhbGRhdGEpCiAgICAgICAgdHJhbnNsYXRlX3ZlcnMoJ1JSRVBMQUNF
UycsIGxvY2FsZGF0YSkKICAgICAgICB0cmFuc2xhdGVfdmVycygnUkNPTkZMSUNUUycsIGxvY2Fs
ZGF0YSkKCiAgICAgICAgIyBNYXAgdGhlIGRlcGVuZGVuY2llcyBpbnRvIHRoZWlyIGZpbmFsIGZv
cm0KICAgICAgICBtYXBwaW5nX3JlbmFtZV9ob29rKGxvY2FsZGF0YSkKCiAgICAgICAgc3BsaXRy
ZGVwZW5kcyAgICA9IHN0cmlwX211bHRpbGliKGxvY2FsZGF0YS5nZXRWYXIoJ1JERVBFTkRTJywg
VHJ1ZSksIGQpIG9yICIiCiAgICAgICAgc3BsaXRycmVjb21tZW5kcyA9IHN0cmlwX211bHRpbGli
KGxvY2FsZGF0YS5nZXRWYXIoJ1JSRUNPTU1FTkRTJywgVHJ1ZSksIGQpIG9yICIiCiAgICAgICAg
c3BsaXRyc3VnZ2VzdHMgICA9IHN0cmlwX211bHRpbGliKGxvY2FsZGF0YS5nZXRWYXIoJ1JTVUdH
RVNUUycsIFRydWUpLCBkKSBvciAiIgogICAgICAgIHNwbGl0cnByb3ZpZGVzICAgPSBzdHJpcF9t
dWx0aWxpYihsb2NhbGRhdGEuZ2V0VmFyKCdSUFJPVklERVMnLCBUcnVlKSwgZCkgb3IgIiIKICAg
ICAgICBzcGxpdHJyZXBsYWNlcyAgID0gc3RyaXBfbXVsdGlsaWIobG9jYWxkYXRhLmdldFZhcign
UlJFUExBQ0VTJywgVHJ1ZSksIGQpIG9yICIiCiAgICAgICAgc3BsaXRyY29uZmxpY3RzICA9IHN0
cmlwX211bHRpbGliKGxvY2FsZGF0YS5nZXRWYXIoJ1JDT05GTElDVFMnLCBUcnVlKSwgZCkgb3Ig
IiIKICAgICAgICBzcGxpdHJvYnNvbGV0ZXMgID0gW10KCiAgICAgICAgIyBHYXRoZXIgc3BlY2lh
bCBzcmMvZmlyc3QgcGFja2FnZSBkYXRhCiAgICAgICAgaWYgc3JjbmFtZSA9PSBzcGxpdG5hbWU6
CiAgICAgICAgICAgIHNyY3JkZXBlbmRzICAgID0gc3BsaXRyZGVwZW5kcwogICAgICAgICAgICBz
cmNycmVjb21tZW5kcyA9IHNwbGl0cnJlY29tbWVuZHMKICAgICAgICAgICAgc3JjcnN1Z2dlc3Rz
ICAgPSBzcGxpdHJzdWdnZXN0cwogICAgICAgICAgICBzcmNycHJvdmlkZXMgICA9IHNwbGl0cnBy
b3ZpZGVzCiAgICAgICAgICAgIHNyY3JyZXBsYWNlcyAgID0gc3BsaXRycmVwbGFjZXMKICAgICAg
ICAgICAgc3JjcmNvbmZsaWN0cyAgPSBzcGxpdHJjb25mbGljdHMKCiAgICAgICAgICAgIHNyY3By
ZWluc3QgID0gbG9jYWxkYXRhLmdldFZhcigncGtnX3ByZWluc3QnLCBUcnVlKQogICAgICAgICAg
ICBzcmNwb3N0aW5zdCA9IGxvY2FsZGF0YS5nZXRWYXIoJ3BrZ19wb3N0aW5zdCcsIFRydWUpCiAg
ICAgICAgICAgIHNyY3ByZXJtICAgID0gbG9jYWxkYXRhLmdldFZhcigncGtnX3ByZXJtJywgVHJ1
ZSkKICAgICAgICAgICAgc3JjcG9zdHJtICAgPSBsb2NhbGRhdGEuZ2V0VmFyKCdwa2dfcG9zdHJt
JywgVHJ1ZSkKCiAgICAgICAgICAgIGZpbGVfbGlzdCA9IFtdCiAgICAgICAgICAgIHdhbGtfZmls
ZXMocm9vdCwgZmlsZV9saXN0LCBjb25mZmlsZXMpCiAgICAgICAgICAgIGlmIG5vdCBmaWxlX2xp
c3QgYW5kIGxvY2FsZGF0YS5nZXRWYXIoJ0FMTE9XX0VNUFRZJykgIT0gIjEiOgogICAgICAgICAg
ICAgICAgYmIubm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IFJQTSBwYWNrYWdlIGZvciAlcyIgJSBz
cGxpdG5hbWUpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBiYi5ub3RlKCJDcmVh
dGluZyBSUE0gcGFja2FnZSBmb3IgJXMiICUgc3BsaXRuYW1lKQogICAgICAgICAgICAgICAgc3Bl
Y19maWxlc190b3AuYXBwZW5kKCclZmlsZXMnKQogICAgICAgICAgICAgICAgc3BlY19maWxlc190
b3AuYXBwZW5kKCclZGVmYXR0cigtLC0sLSwtKScpCiAgICAgICAgICAgICAgICBpZiBmaWxlX2xp
c3Q6CiAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiQ3JlYXRpbmcgUlBNIHBhY2thZ2UgZm9y
ICVzIiAlIHNwbGl0bmFtZSkKICAgICAgICAgICAgICAgICAgICBzcGVjX2ZpbGVzX3RvcC5leHRl
bmQoZmlsZV9saXN0KQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBi
Yi5ub3RlKCJDcmVhdGluZyBFTVBUWSBSUE0gUGFja2FnZSBmb3IgJXMiICUgc3BsaXRuYW1lKQog
ICAgICAgICAgICAgICAgc3BlY19maWxlc190b3AuYXBwZW5kKCcnKQoKICAgICAgICAgICAgYmIu
dXRpbHMudW5sb2NrZmlsZShsZikKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgIyBQcm9j
ZXNzIHN1YnBhY2thZ2UgZGF0YQogICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgn
JSVwYWNrYWdlIC1uICVzJyAlIHNwbGl0bmFtZSkKICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRv
bS5hcHBlbmQoJ1N1bW1hcnk6ICVzJyAlIHNwbGl0c3VtbWFyeSkKICAgICAgICBpZiBzcmN2ZXJz
aW9uICE9IHNwbGl0dmVyc2lvbjoKICAgICAgICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBw
ZW5kKCdWZXJzaW9uOiAlcycgJSBzcGxpdHZlcnNpb24pCiAgICAgICAgaWYgc3JjcmVsZWFzZSAh
PSBzcGxpdHJlbGVhc2U6CiAgICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgn
UmVsZWFzZTogJXMnICUgc3BsaXRyZWxlYXNlKQogICAgICAgIGlmIHNyY2Vwb2NoICE9IHNwbGl0
ZXBvY2g6CiAgICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnRXBvY2g6ICVz
JyAlIHNwbGl0ZXBvY2gpCiAgICAgICAgaWYgc3JjbGljZW5zZSAhPSBzcGxpdGxpY2Vuc2U6CiAg
ICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnTGljZW5zZTogJXMnICUgc3Bs
aXRsaWNlbnNlKQogICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnR3JvdXA6ICVz
JyAlIHNwbGl0c2VjdGlvbikKCiAgICAgICAgIyBSZXBsYWNlcyA9PSBPYnNvbGV0ZXMgJiYgUHJv
dmlkZXMKICAgICAgICBpZiBzcGxpdHJyZXBsYWNlcyBhbmQgc3BsaXRycmVwbGFjZXMuc3RyaXAo
KSAhPSAiIjoKICAgICAgICAgICAgZm9yIGRlcCBpbiBzcGxpdHJyZXBsYWNlcy5zcGxpdCgnLCcp
OgogICAgICAgICAgICAgICAgaWYgc3BsaXRycHJvdmlkZXM6CiAgICAgICAgICAgICAgICAgICAg
c3BsaXRycHJvdmlkZXMgPSBzcGxpdHJwcm92aWRlcyArICIsICIgKyBkZXAKICAgICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgc3BsaXRycHJvdmlkZXMgPSBkZXAKICAgICAg
ICAgICAgICAgIGlmIHNwbGl0cm9ic29sZXRlczoKICAgICAgICAgICAgICAgICAgICBzcGxpdHJv
YnNvbGV0ZXMgPSBzcGxpdHJvYnNvbGV0ZXMgKyAiLCAiICsgZGVwCiAgICAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgICAgIHNwbGl0cm9ic29sZXRlcyA9IGRlcAoKICAgICAgICBw
cmludF9kZXBzKHNwbGl0cmRlcGVuZHMsICJSZXF1aXJlcyIsIHNwZWNfcHJlYW1ibGVfYm90dG9t
LCBkKQogICAgICAgICMgU3VnZ2VzdHMgaW4gUlBNIGFyZSBsaWtlIHJlY29tbWVuZHMgaW4gT0Ut
Y29yZSEKICAgICAgICBwcmludF9kZXBzKHNwbGl0cnJlY29tbWVuZHMsICJTdWdnZXN0cyIsIHNw
ZWNfcHJlYW1ibGVfYm90dG9tLCBkKQogICAgICAgICMgV2hpbGUgdGhlcmUgaXMgbm8gYW5hbG9n
IGZvciBzdWdnZXN0cy4uLiAoU28gY2FsbCB0aGVtIHJlY29tbWVuZHMgZm9yIG5vdykKICAgICAg
ICBwcmludF9kZXBzKHNwbGl0cnN1Z2dlc3RzLCAgIlJlY29tbWVuZHMiLCBzcGVjX3ByZWFtYmxl
X2JvdHRvbSwgZCkKICAgICAgICBwcmludF9kZXBzKHNwbGl0cnByb3ZpZGVzLCAgIlByb3ZpZGVz
Iiwgc3BlY19wcmVhbWJsZV9ib3R0b20sIGQpCiAgICAgICAgcHJpbnRfZGVwcyhzcGxpdHJvYnNv
bGV0ZXMsICJPYnNvbGV0ZXMiLCBzcGVjX3ByZWFtYmxlX2JvdHRvbSwgZCkKCiAgICAgICAgIyBj
b25mbGljdHMgY2FuIG5vdCBiZSBpbiBhIHByb3ZpZGUhICBXZSB3aWxsIG5lZWQgdG8gZmlsdGVy
IGl0LgogICAgICAgIGlmIHNwbGl0cmNvbmZsaWN0czoKICAgICAgICAgICAgZGVwZW5kc19kaWN0
ID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMoc3BsaXRyY29uZmxpY3RzKQogICAgICAg
ICAgICBuZXdkZXBzX2RpY3QgPSB7fQogICAgICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHNfZGlj
dDoKICAgICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gc3BsaXRycHJvdmlkZXM6CiAgICAgICAg
ICAgICAgICAgICAgbmV3ZGVwc19kaWN0W2RlcF0gPSBkZXBlbmRzX2RpY3RbZGVwXQogICAgICAg
ICAgICBpZiBuZXdkZXBzX2RpY3Q6CiAgICAgICAgICAgICAgICBzcGxpdHJjb25mbGljdHMgPSBi
Yi51dGlscy5qb2luX2RlcHMobmV3ZGVwc19kaWN0KQogICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgc3BsaXRyY29uZmxpY3RzID0gIiIKCiAgICAgICAgcHJpbnRfZGVwcyhzcGxpdHJj
b25mbGljdHMsICAiQ29uZmxpY3RzIiwgc3BlY19wcmVhbWJsZV9ib3R0b20sIGQpCgogICAgICAg
IHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnJykKCiAgICAgICAgc3BlY19wcmVhbWJsZV9i
b3R0b20uYXBwZW5kKCclJWRlc2NyaXB0aW9uIC1uICVzJyAlIHNwbGl0bmFtZSkKICAgICAgICBk
ZWRlbnRfdGV4dCA9IHRleHR3cmFwLmRlZGVudChzcGxpdGRlc2NyaXB0aW9uKS5zdHJpcCgpCiAg
ICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCclcycgJSB0ZXh0d3JhcC5maWxsKGRl
ZGVudF90ZXh0LCB3aWR0aD03NSkpCgogICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVu
ZCgnJykKCiAgICAgICAgIyBOb3cgcHJvY2VzcyBzY3JpcHRsZXRzCiAgICAgICAgZm9yIHNjcmlw
dCBpbiBbInByZWluc3QiLCAicG9zdGluc3QiLCAicHJlcm0iLCAicG9zdHJtIl06CiAgICAgICAg
ICAgIHNjcmlwdHZhciA9IGxvY2FsZGF0YS5nZXRWYXIoJ3BrZ18lcycgJSBzY3JpcHQsIFRydWUp
CiAgICAgICAgICAgIGlmIG5vdCBzY3JpcHR2YXI6CiAgICAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICAgICBpZiBzY3JpcHQgPT0gJ3ByZWluc3QnOgogICAgICAgICAgICAgICAgc3BlY19z
Y3JpcHRsZXRzX2JvdHRvbS5hcHBlbmQoJyUlcHJlIC1uICVzJyAlIHNwbGl0bmFtZSkKICAgICAg
ICAgICAgZWxpZiBzY3JpcHQgPT0gJ3Bvc3RpbnN0JzoKICAgICAgICAgICAgICAgIHNwZWNfc2Ny
aXB0bGV0c19ib3R0b20uYXBwZW5kKCclJXBvc3QgLW4gJXMnICUgc3BsaXRuYW1lKQogICAgICAg
ICAgICBlbGlmIHNjcmlwdCA9PSAncHJlcm0nOgogICAgICAgICAgICAgICAgc3BlY19zY3JpcHRs
ZXRzX2JvdHRvbS5hcHBlbmQoJyUlcHJldW4gLW4gJXMnICUgc3BsaXRuYW1lKQogICAgICAgICAg
ICAgICAgc2NyaXB0dmFyID0gd3JhcF91bmluc3RhbGwoc2NyaXB0dmFyKQogICAgICAgICAgICBl
bGlmIHNjcmlwdCA9PSAncG9zdHJtJzoKICAgICAgICAgICAgICAgIHNwZWNfc2NyaXB0bGV0c19i
b3R0b20uYXBwZW5kKCclJXBvc3R1biAtbiAlcycgJSBzcGxpdG5hbWUpCiAgICAgICAgICAgICAg
ICBzY3JpcHR2YXIgPSB3cmFwX3VuaW5zdGFsbChzY3JpcHR2YXIpCiAgICAgICAgICAgIHNwZWNf
c2NyaXB0bGV0c19ib3R0b20uYXBwZW5kKCcjICVzIC0gJXMnICUgKHNwbGl0bmFtZSwgc2NyaXB0
KSkKICAgICAgICAgICAgc3BlY19zY3JpcHRsZXRzX2JvdHRvbS5hcHBlbmQoc2NyaXB0dmFyKQog
ICAgICAgICAgICBzcGVjX3NjcmlwdGxldHNfYm90dG9tLmFwcGVuZCgnJykKCiAgICAgICAgIyBO
b3cgcHJvY2VzcyBmaWxlcwogICAgICAgIGZpbGVfbGlzdCA9IFtdCiAgICAgICAgd2Fsa19maWxl
cyhyb290LCBmaWxlX2xpc3QsIGNvbmZmaWxlcykKICAgICAgICBpZiBub3QgZmlsZV9saXN0IGFu
ZCBsb2NhbGRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScpICE9ICIxIjoKICAgICAgICAgICAgYmIu
bm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IFJQTSBwYWNrYWdlIGZvciAlcyIgJSBzcGxpdG5hbWUp
CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3BlY19maWxlc19ib3R0b20uYXBwZW5kKCclJWZp
bGVzIC1uICVzJyAlIHNwbGl0bmFtZSkKICAgICAgICAgICAgc3BlY19maWxlc19ib3R0b20uYXBw
ZW5kKCclZGVmYXR0cigtLC0sLSwtKScpCiAgICAgICAgICAgIGlmIGZpbGVfbGlzdDoKICAgICAg
ICAgICAgICAgIGJiLm5vdGUoIkNyZWF0aW5nIFJQTSBwYWNrYWdlIGZvciAlcyIgJSBzcGxpdG5h
bWUpCiAgICAgICAgICAgICAgICBzcGVjX2ZpbGVzX2JvdHRvbS5leHRlbmQoZmlsZV9saXN0KQog
ICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYmIubm90ZSgiQ3JlYXRpbmcgRU1QVFkg
UlBNIFBhY2thZ2UgZm9yICVzIiAlIHNwbGl0bmFtZSkKICAgICAgICAgICAgc3BlY19maWxlc19i
b3R0b20uYXBwZW5kKCcnKQoKICAgICAgICBkZWwgbG9jYWxkYXRhCiAgICAgICAgYmIudXRpbHMu
dW5sb2NrZmlsZShsZikKCiAgICBhZGRfcHJlcChkLHNwZWNfZmlsZXNfYm90dG9tKQogICAgc3Bl
Y19wcmVhbWJsZV90b3AuYXBwZW5kKCdTdW1tYXJ5OiAlcycgJSBzcmNzdW1tYXJ5KQogICAgc3Bl
Y19wcmVhbWJsZV90b3AuYXBwZW5kKCdOYW1lOiAlcycgJSBzcmNuYW1lKQogICAgc3BlY19wcmVh
bWJsZV90b3AuYXBwZW5kKCdWZXJzaW9uOiAlcycgJSBzcmN2ZXJzaW9uKQogICAgc3BlY19wcmVh
bWJsZV90b3AuYXBwZW5kKCdSZWxlYXNlOiAlcycgJSBzcmNyZWxlYXNlKQogICAgaWYgc3JjZXBv
Y2ggYW5kIHNyY2Vwb2NoLnN0cmlwKCkgIT0gIiI6CiAgICAgICAgc3BlY19wcmVhbWJsZV90b3Au
YXBwZW5kKCdFcG9jaDogJXMnICUgc3JjZXBvY2gpCiAgICBzcGVjX3ByZWFtYmxlX3RvcC5hcHBl
bmQoJ0xpY2Vuc2U6ICVzJyAlIHNyY2xpY2Vuc2UpCiAgICBzcGVjX3ByZWFtYmxlX3RvcC5hcHBl
bmQoJ0dyb3VwOiAlcycgJSBzcmNzZWN0aW9uKQogICAgc3BlY19wcmVhbWJsZV90b3AuYXBwZW5k
KCdQYWNrYWdlcjogJXMnICUgc3JjbWFpbnRhaW5lcikKICAgIHNwZWNfcHJlYW1ibGVfdG9wLmFw
cGVuZCgnVVJMOiAlcycgJSBzcmNob21lcGFnZSkKICAgIHNvdXJjZV9saXN0ID0gZ2V0X3RhcmJh
bGxzKGQpCiAgICB0YWlsX3NvdXJjZShkLHNvdXJjZV9saXN0LE5vbmUpCgogICAgIyBSZXBsYWNl
cyA9PSBPYnNvbGV0ZXMgJiYgUHJvdmlkZXMKICAgIGlmIHNyY3JyZXBsYWNlcyBhbmQgc3JjcnJl
cGxhY2VzLnN0cmlwKCkgIT0gIiI6CiAgICAgICAgZm9yIGRlcCBpbiBzcmNycmVwbGFjZXMuc3Bs
aXQoJywnKToKICAgICAgICAgICAgaWYgc3JjcnByb3ZpZGVzOgogICAgICAgICAgICAgICAgc3Jj
cnByb3ZpZGVzID0gc3JjcnByb3ZpZGVzICsgIiwgIiArIGRlcAogICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgc3JjcnByb3ZpZGVzID0gZGVwCiAgICAgICAgICAgIGlmIHNyY3JvYnNv
bGV0ZXM6CiAgICAgICAgICAgICAgICBzcmNyb2Jzb2xldGVzID0gc3Jjcm9ic29sZXRlcyArICIs
ICIgKyBkZXAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNyY3JvYnNvbGV0ZXMg
PSBkZXAKCiAgICBwcmludF9kZXBzKHNyY2RlcGVuZHMsICJCdWlsZFJlcXVpcmVzIiwgc3BlY19w
cmVhbWJsZV90b3AsIGQpCiAgICBwcmludF9kZXBzKHNyY3JkZXBlbmRzLCAiUmVxdWlyZXMiLCBz
cGVjX3ByZWFtYmxlX3RvcCwgZCkKICAgICMgU3VnZ2VzdHMgaW4gUlBNIGFyZSBsaWtlIHJlY29t
bWVuZHMgaW4gT0UtY29yZSEKICAgIHByaW50X2RlcHMoc3JjcnJlY29tbWVuZHMsICJTdWdnZXN0
cyIsIHNwZWNfcHJlYW1ibGVfdG9wLCBkKQogICAgIyBXaGlsZSB0aGVyZSBpcyBubyBhbmFsb2cg
Zm9yIHN1Z2dlc3RzLi4uIChTbyBjYWxsIHRoZW0gcmVjb21tZW5kcyBmb3Igbm93KQogICAgcHJp
bnRfZGVwcyhzcmNyc3VnZ2VzdHMsICJSZWNvbW1lbmRzIiwgc3BlY19wcmVhbWJsZV90b3AsIGQp
CiAgICBwcmludF9kZXBzKHNyY3Jwcm92aWRlcywgIlByb3ZpZGVzIiwgc3BlY19wcmVhbWJsZV90
b3AsIGQpCiAgICBwcmludF9kZXBzKHNyY3JvYnNvbGV0ZXMsICJPYnNvbGV0ZXMiLCBzcGVjX3By
ZWFtYmxlX3RvcCwgZCkKCiAgICAjIGNvbmZsaWN0cyBjYW4gbm90IGJlIGluIGEgcHJvdmlkZSEg
IFdlIHdpbGwgbmVlZCB0byBmaWx0ZXIgaXQuCiAgICBpZiBzcmNyY29uZmxpY3RzOgogICAgICAg
IGRlcGVuZHNfZGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zKHNyY3Jjb25mbGlj
dHMpCiAgICAgICAgbmV3ZGVwc19kaWN0ID0ge30KICAgICAgICBmb3IgZGVwIGluIGRlcGVuZHNf
ZGljdDoKICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBzcmNycHJvdmlkZXM6CiAgICAgICAgICAg
ICAgICBuZXdkZXBzX2RpY3RbZGVwXSA9IGRlcGVuZHNfZGljdFtkZXBdCiAgICAgICAgaWYgbmV3
ZGVwc19kaWN0OgogICAgICAgICAgICBzcmNyY29uZmxpY3RzID0gYmIudXRpbHMuam9pbl9kZXBz
KG5ld2RlcHNfZGljdCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzcmNyY29uZmxpY3RzID0g
IiIKCiAgICBwcmludF9kZXBzKHNyY3Jjb25mbGljdHMsICJDb25mbGljdHMiLCBzcGVjX3ByZWFt
YmxlX3RvcCwgZCkKCiAgICBzcGVjX3ByZWFtYmxlX3RvcC5hcHBlbmQoJycpCgogICAgc3BlY19w
cmVhbWJsZV90b3AuYXBwZW5kKCclZGVzY3JpcHRpb24nKQogICAgZGVkZW50X3RleHQgPSB0ZXh0
d3JhcC5kZWRlbnQoc3JjZGVzY3JpcHRpb24pLnN0cmlwKCkKICAgIHNwZWNfcHJlYW1ibGVfdG9w
LmFwcGVuZCgnJXMnICUgdGV4dHdyYXAuZmlsbChkZWRlbnRfdGV4dCwgd2lkdGg9NzUpKQoKICAg
IHNwZWNfcHJlYW1ibGVfdG9wLmFwcGVuZCgnJykKCiAgICBpZiBzcmNwcmVpbnN0OgogICAgICAg
IHNwZWNfc2NyaXB0bGV0c190b3AuYXBwZW5kKCclcHJlJykKICAgICAgICBzcGVjX3NjcmlwdGxl
dHNfdG9wLmFwcGVuZCgnIyAlcyAtIHByZWluc3QnICUgc3JjbmFtZSkKICAgICAgICBzcGVjX3Nj
cmlwdGxldHNfdG9wLmFwcGVuZChzcmNwcmVpbnN0KQogICAgICAgIHNwZWNfc2NyaXB0bGV0c190
b3AuYXBwZW5kKCcnKQogICAgaWYgc3JjcG9zdGluc3Q6CiAgICAgICAgc3BlY19zY3JpcHRsZXRz
X3RvcC5hcHBlbmQoJyVwb3N0JykKICAgICAgICBzcGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZCgn
IyAlcyAtIHBvc3RpbnN0JyAlIHNyY25hbWUpCiAgICAgICAgc3BlY19zY3JpcHRsZXRzX3RvcC5h
cHBlbmQoc3JjcG9zdGluc3QpCiAgICAgICAgc3BlY19zY3JpcHRsZXRzX3RvcC5hcHBlbmQoJycp
CiAgICBpZiBzcmNwcmVybToKICAgICAgICBzcGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZCgnJXBy
ZXVuJykKICAgICAgICBzcGVjX3NjcmlwdGxldHNfdG9wLmFwcGVuZCgnIyAlcyAtIHByZXJtJyAl
IHNyY25hbWUpCiAgICAgICAgc2NyaXB0dmFyID0gd3JhcF91bmluc3RhbGwoc3JjcHJlcm0pCiAg
ICAgICAgc3BlY19zY3JpcHRsZXRzX3RvcC5hcHBlbmQoc2NyaXB0dmFyKQogICAgICAgIHNwZWNf
c2NyaXB0bGV0c190b3AuYXBwZW5kKCcnKQogICAgaWYgc3JjcG9zdHJtOgogICAgICAgIHNwZWNf
c2NyaXB0bGV0c190b3AuYXBwZW5kKCclcG9zdHVuJykKICAgICAgICBzcGVjX3NjcmlwdGxldHNf
dG9wLmFwcGVuZCgnIyAlcyAtIHBvc3RybScgJSBzcmNuYW1lKQogICAgICAgIHNjcmlwdHZhciA9
IHdyYXBfdW5pbnN0YWxsKHNyY3Bvc3RybSkKICAgICAgICBzcGVjX3NjcmlwdGxldHNfdG9wLmFw
cGVuZChzY3JpcHR2YXIpCiAgICAgICAgc3BlY19zY3JpcHRsZXRzX3RvcC5hcHBlbmQoJycpCgog
ICAgIyBXcml0ZSB0aGUgU1BFQyBmaWxlCiAgICB0cnk6CiAgICAgICAgZnJvbSBfX2J1aWx0aW5f
XyBpbXBvcnQgZmlsZQogICAgICAgIHNwZWNmaWxlID0gZmlsZShvdXRzcGVjZmlsZSwgJ3cnKQog
ICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgidW5h
YmxlIHRvIG9wZW4gc3BlYyBmaWxlIGZvciB3cml0aW5nLiIpCgogICAgIyBSUE1TUEVDX1BSRUFN
QkxFIGlzIGEgd2F5IHRvIGFkZCBhcmJpdHJhcnkgdGV4dCB0byB0aGUgdG9wCiAgICAjIG9mIHRo
ZSBnZW5lcmF0ZWQgc3BlYyBmaWxlCiAgICBleHRlcm5hbF9wcmVhbWJsZSA9IGQuZ2V0VmFyKCJS
UE1TUEVDX1BSRUFNQkxFIiwgVHJ1ZSkKICAgIGlmIGV4dGVybmFsX3ByZWFtYmxlOgogICAgICAg
IHNwZWNmaWxlLndyaXRlKGV4dGVybmFsX3ByZWFtYmxlICsgIlxuIikKCiAgICBmb3IgbGluZSBp
biBzcGVjX3ByZWFtYmxlX3RvcDoKICAgICAgICBzcGVjZmlsZS53cml0ZShsaW5lICsgIlxuIikK
CiAgICBmb3IgbGluZSBpbiBzcGVjX3ByZWFtYmxlX2JvdHRvbToKICAgICAgICBzcGVjZmlsZS53
cml0ZShsaW5lICsgIlxuIikKCiAgICBmb3IgbGluZSBpbiBzcGVjX3NjcmlwdGxldHNfdG9wOgog
ICAgICAgIHNwZWNmaWxlLndyaXRlKGxpbmUgKyAiXG4iKQoKICAgIGZvciBsaW5lIGluIHNwZWNf
c2NyaXB0bGV0c19ib3R0b206CiAgICAgICAgc3BlY2ZpbGUud3JpdGUobGluZSArICJcbiIpCgog
ICAgZm9yIGxpbmUgaW4gc3BlY19maWxlc190b3A6CiAgICAgICAgc3BlY2ZpbGUud3JpdGUobGlu
ZSArICJcbiIpCgogICAgZm9yIGxpbmUgaW4gc3BlY19maWxlc19ib3R0b206CiAgICAgICAgc3Bl
Y2ZpbGUud3JpdGUobGluZSArICJcbiIpCgogICAgc3BlY2ZpbGUuY2xvc2UoKQp9CgoKcHl0aG9u
IG9lX2ZpbHRlcl9vdXQgKCkgewpkZWYgb2VfZmlsdGVyX291dChmLCBzdHIsIGQpOgogICAgcmV0
dXJuIG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KGYsIHN0ciwgZCkKfQoKCnB5dGhvbiBvZV90ZXJt
aW5hbCAoKSB7CmRlZiBvZV90ZXJtaW5hbChjb21tYW5kLCB0aXRsZSwgZCk6CiAgICBpbXBvcnQg
b2UuZGF0YQogICAgaW1wb3J0IG9lLnRlcm1pbmFsCgogICAgZm9yIGV4cG9ydCBpbiBvZS5kYXRh
LnR5cGVkX3ZhbHVlKCdPRV9URVJNSU5BTF9FWFBPUlRTJywgZCk6CiAgICAgICAgdmFsdWUgPSBk
LmdldFZhcihleHBvcnQsIFRydWUpCiAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CiAgICAg
ICAgICAgIG9zLmVudmlyb25bZXhwb3J0XSA9IHN0cih2YWx1ZSkKCiAgICB0ZXJtaW5hbCA9IG9l
LmRhdGEudHlwZWRfdmFsdWUoJ09FX1RFUk1JTkFMJywgZCkubG93ZXIoKQogICAgaWYgdGVybWlu
YWwgPT0gJ25vbmUnOgogICAgICAgIGJiLmZhdGFsKCdEZXZzaGVsbCB1c2FnZSBkaXNhYmxlZCB3
aXRoIE9FX1RFUk1JTkFMJykKICAgIGVsaWYgdGVybWluYWwgIT0gJ2F1dG8nOgogICAgICAgIHRy
eToKICAgICAgICAgICAgb2UudGVybWluYWwuc3Bhd24odGVybWluYWwsIGNvbW1hbmQsIHRpdGxl
KQogICAgICAgICAgICByZXR1cm4KICAgICAgICBleGNlcHQgb2UudGVybWluYWwuVW5zdXBwb3J0
ZWRUZXJtaW5hbDoKICAgICAgICAgICAgYmIud2FybignVW5zdXBwb3J0ZWQgdGVybWluYWwgIiVz
IiwgZGVmYXVsdGluZyB0byAiYXV0byInICUKICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbCkK
ICAgICAgICBleGNlcHQgb2UudGVybWluYWwuRXhlY3V0aW9uRXJyb3IgYXMgZXhjOgogICAgICAg
ICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIHNwYXduIHRlcm1pbmFsICVzOiAlcycgJSAodGVybWlu
YWwsIGV4YykpCgogICAgdHJ5OgogICAgICAgIG9lLnRlcm1pbmFsLnNwYXduX3ByZWZlcnJlZChj
b21tYW5kLCB0aXRsZSkKICAgIGV4Y2VwdCBvZS50ZXJtaW5hbC5Ob1N1cHBvcnRlZFRlcm1pbmFs
czoKICAgICAgICBiYi5mYXRhbCgnTm8gdmFsaWQgdGVybWluYWwgZm91bmQsIHVuYWJsZSB0byBv
cGVuIGRldnNoZWxsJykKICAgIGV4Y2VwdCBvZS50ZXJtaW5hbC5FeGVjdXRpb25FcnJvciBhcyBl
eGM6CiAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBzcGF3biB0ZXJtaW5hbCAlczogJXMnICUg
KHRlcm1pbmFsLCBleGMpKX0KCgpweXRob24gcGFja2FnZV9xYV9nZXRfbWFjaGluZV9kaWN0ICgp
IHsKZGVmIHBhY2thZ2VfcWFfZ2V0X21hY2hpbmVfZGljdCgpOgogICAgcmV0dXJuIHsKICAgICAg
ICAgICAgImRhcndpbjkiIDogewogICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAg
ICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAg
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsaW51eCIgOiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAg
ICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICg0MCwgICAg
OTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAg
ICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKDIxLCAgICAg
MCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAg
ICAgICAiaTM4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAg
ICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoIDMsICAgICAw
LCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICJpNTg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAg
ICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiaTY4NiI6ICAgICAgICggMywgICAgIDAs
ICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAg
ICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICJpYTY0IjogICAgICAgKDUwLCAgICAgMCwg
ICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAg
ICAiYWxwaGEiOiAgICAgICgzNjkwMiwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAg
IDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgImhwcGEiOiAgICAgICAoMTUsICAgICAzLCAg
ICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICJtNjhrIjogICAgICAgKCA0LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAg
MzIpLAogICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggOCwgICAgIDAsICAg
IDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAg
Im1pcHNlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAz
MiksCiAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCA4LCAgICAgMCwgICAg
MCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAi
bWlwczY0ZWwiOiAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0
KSwKICAgICAgICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAw
LCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICJz
aDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIp
LAogICAgICAgICAgICAgICAgICAgICAgICAic3BhcmMiOiAgICAgICggMiwgICAgIDAsICAgIDAs
ICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICJsaW51eC11Y2xpYmMiIDogewogICAgICAgICAgICAgICAgICAgICAgICAiYXJt
IiA6ICAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIp
LAogICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAg
MCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAi
cG93ZXJwYyI6ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAg
MzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwg
ICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAiaTQ4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAg
ICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAg
MCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAiaTY4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAg
ICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICggIDYyLCAg
ICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAg
ICAgICAgICAibWlwcyI6ICAgICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2Us
ICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggICA4
LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAibWlwczY0IjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFs
c2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICgg
ICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAg
ICAgICAgICAgICAgICAiYXZyMzIiOiAgICAgICg2MzE3LCAgICAgMCwgICAgMCwgICAgICAgICAg
RmFsc2UsICAgICAgICAgMzIpLAoJCQkic2g0IjogICAgICAgICg0MiwJIDAsICAgIDAsICAgICAg
ICAgIFRydWUsICAgICAgICAgIDMyKSwKCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAidWNsaW51eC11Y2xpYmMiIDogewogICAgICAgICAgICAgICAgICAgICAgICAiYmZpbiI6
ICAgICAgICggMTA2LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAzMiksCiAg
ICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAibGludXgtZ251ZWFiaSIgOiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAg
ICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIi
IDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAg
ICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsaW51eC11Y2xpYmNlYWJpIiA6IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAg
ICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICJhcm1l
YiIgOiAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAog
ICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxpbnV4LWdudSIgOiB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAg
ICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgImxpbnV4LWdudXNwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjog
ICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAg
ICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxpbnV4LXVjbGliY3NwZSIgOiB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAg
ICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgImxpbnV4LWdudSIgOiAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2Js
YXplIjogICAoNDc3ODcsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOiAoNDc3ODcsICAwLCAgICAwLCAg
ICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
Ing4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAz
MiksCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgfQoKfQoKCnB5dGhvbiBnZXRfZGlz
a2RhdGEgKCkgewpkZWYgZ2V0X2Rpc2tkYXRhKHZhciwgZGV2LCBkYXRhKToKICAgIG9sZGRpc2tk
YXRhID0gZGF0YS5nZXRWYXIodmFyLCBGYWxzZSkKICAgIGRpc2tkYXRhID0ge30KICAgIGlmIG9s
ZGRpc2tkYXRhIGlzIE5vbmU6CiAgICAgICByZXR1cm4KICAgIG5ld2Rpc2tkYXRhID0gZ2V0X2Rp
c2tzdGF0cyhkZXYpCiAgICBmb3Iga2V5IGluIG9sZGRpc2tkYXRhLml0ZXJrZXlzKCk6CiAgICAg
ICAgZGlza2RhdGFbIlN0YXJ0IitrZXldID0gc3RyKGludChvbGRkaXNrZGF0YVtrZXldKSkKICAg
ICAgICBkaXNrZGF0YVsiRW5kIitrZXldID0gc3RyKGludChuZXdkaXNrZGF0YVtrZXldKSkKICAg
IHJldHVybiBkaXNrZGF0YQp9CgoKcHl0aG9uIGdldF9kZXZpY2UgKCkgewpkZWYgZ2V0X2Rldmlj
ZShlKToKICAgIGZpbGUgPSBvcGVuKGUuZGF0YS5nZXRWYXIoJ0RFVkZJTEUnLCBUcnVlKSkKICAg
IGRldmljZSA9IGZpbGUucmVhZGxpbmUoKQogICAgZmlsZS5jbG9zZSgpCiAgICByZXR1cm4gZGV2
aWNlCn0KCgpweXRob24gc3N0YXRlX2NsZWFuX2NhY2hlZmlsZSAoKSB7CmRlZiBzc3RhdGVfY2xl
YW5fY2FjaGVmaWxlKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgogICAgc3N0YXRlcGtnZmls
ZSA9IGQuZ2V0VmFyKCdTU1RBVEVfUEFUSFNQRUMnLCBUcnVlKSArICIqXyIgKyBzc1snbmFtZSdd
ICsgIi50Z3oqIgogICAgYmIubm90ZSgiUmVtb3ZpbmcgJXMiICUgc3N0YXRlcGtnZmlsZSkKICAg
IG9lLnBhdGgucmVtb3ZlKHNzdGF0ZXBrZ2ZpbGUpCn0KCgpweXRob24gZXh0ZW5kX3ZhcmlhbnRz
ICgpIHsKZGVmIGV4dGVuZF92YXJpYW50cyhkLCB2YXIsIGV4dGVuZCwgZGVsaW09JzonKToKICAg
ICIiIlJldHVybiBhIHN0cmluZyBvZiBhbGwgYmIgY2xhc3MgZXh0ZW5kIHZhcmlhbnRzIGZvciB0
aGUgZ2l2ZW4gZXh0ZW5kIiIiCiAgICB2YXJpYW50cyA9IFtdCiAgICB3aG9sZSA9IGQuZ2V0VmFy
KHZhciwgVHJ1ZSkgb3IgIiIKICAgIGZvciBleHQgaW4gd2hvbGUuc3BsaXQoKToKICAgICAgICBl
ZXh0ID0gZXh0LnNwbGl0KGRlbGltKQogICAgICAgIGlmIGxlbihlZXh0KSA+IDEgYW5kIGVleHRb
MF0gPT0gZXh0ZW5kOgogICAgICAgICAgICB2YXJpYW50cy5hcHBlbmQoZWV4dFsxXSkKICAgIHJl
dHVybiAiICIuam9pbih2YXJpYW50cykKfQoKCnB5dGhvbiBidWlsZGNmZ192YXJzICgpIHsKZGVm
IGJ1aWxkY2ZnX3ZhcnMoZCk6CiAgICBzdGF0dXN2YXJzID0gb2UuZGF0YS50eXBlZF92YWx1ZSgn
QlVJTERDRkdfVkFSUycsIGQpCiAgICBmb3IgdmFyIGluIHN0YXR1c3ZhcnM6CiAgICAgICAgdmFs
dWUgPSBkLmdldFZhcih2YXIsIFRydWUpCiAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CiAg
ICAgICAgICAgIHlpZWxkICclLTE3cyA9ICIlcyInICUgKHZhciwgdmFsdWUpCn0KCgpweXRob24g
cGFja2FnZV9xYV9jaGVja19yZGVwZW5kcyAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNrX3JkZXBl
bmRzKHBrZywgcGtnZGVzdCwgc2tpcCwgZCk6CiAgICAjIERvbid0IGRvIHRoaXMgY2hlY2sgZm9y
IGtlcm5lbC9tb2R1bGUgcmVjaXBlcywgdGhlcmUgYXJlbid0IHRvbyBtYW55IGRlYnVnL2RldmVs
b3BtZW50CiAgICAjIHBhY2thZ2VzIGFuZCB5b3UgY2FuIGdldCBmYWxzZSBwb3NpdGl2ZXMgZS5n
LiBvbiBrZXJuZWwtbW9kdWxlLWxpcmMtZGV2CiAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNz
KCJrZXJuZWwiLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUtYmFzZSIsIGQp
OgogICAgICAgIHJldHVybiBUcnVlCgogICAgc2FuZSA9IFRydWUKICAgIGlmIG5vdCAiLWRiZyIg
aW4gcGtnIGFuZCBub3QgInRhc2stIiBpbiBwa2cgYW5kIG5vdCAiLWltYWdlIiBpbiBwa2c6CiAg
ICAgICAgIyBDb3BpZWQgZnJvbSBwYWNrYWdlX2lway5iYmNsYXNzCiAgICAgICAgIyBib2lsZXIg
cGxhdGUgdG8gdXBkYXRlIHRoZSBkYXRhCiAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVh
dGVDb3B5KGQpCiAgICAgICAgcm9vdCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQoKICAgICAg
ICBsb2NhbGRhdGEuc2V0VmFyKCdST09UJywgJycpCiAgICAgICAgbG9jYWxkYXRhLnNldFZhcign
Uk9PVF8lcycgJSBwa2csIHJvb3QpCiAgICAgICAgcGtnbmFtZSA9IGxvY2FsZGF0YS5nZXRWYXIo
J1BLR18lcycgJSBwa2csIFRydWUpCiAgICAgICAgaWYgbm90IHBrZ25hbWU6CiAgICAgICAgICAg
IHBrZ25hbWUgPSBwa2cKICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQS0cnLCBwa2duYW1lKQoK
ICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBwa2cpCgogICAgICAgIGJiLmRh
dGEudXBkYXRlX2RhdGEobG9jYWxkYXRhKQoKICAgICAgICAjIE5vdyBjaGVjayB0aGUgUkRFUEVO
RFMKICAgICAgICByZGVwZW5kcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhsb2NhbGRhdGEuZ2V0
VmFyKCdSREVQRU5EUycsIFRydWUpIG9yICIiKQoKCiAgICAgICAgIyBOb3cgZG8gdGhlIHNhbml0
eSBjaGVjayEhIQogICAgICAgIGZvciByZGVwZW5kIGluIHJkZXBlbmRzOgogICAgICAgICAgICBp
ZiAiLWRiZyIgaW4gcmRlcGVuZCBhbmQgImRlYnVnLWRlcHMiIG5vdCBpbiBza2lwOgogICAgICAg
ICAgICAgICAgZXJyb3JfbXNnID0gIiVzIHJkZXBlbmRzIG9uICVzIiAlIChwa2duYW1lLHJkZXBl
bmQpCiAgICAgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImRlYnVn
LWRlcHMiLCBlcnJvcl9tc2csIGQpCiAgICAgICAgICAgIGlmIChub3QgIi1kZXYiIGluIHBrZyBh
bmQgbm90ICItc3RhdGljZGV2IiBpbiBwa2cpIGFuZCByZGVwZW5kLmVuZHN3aXRoKCItZGV2Iikg
YW5kICJkZXYtZGVwcyIgbm90IGluIHNraXA6CiAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAi
JXMgcmRlcGVuZHMgb24gJXMiICUgKHBrZ25hbWUsIHJkZXBlbmQpCiAgICAgICAgICAgICAgICBz
YW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImRldi1kZXBzIiwgZXJyb3JfbXNnLCBkKQoK
ICAgIHJldHVybiBzYW5lCn0KCgpweXRob24gcGFja2FnZV9xYV9jaGVja191bnNhZmVfcmVmZXJl
bmNlc19pbl9iaW5hcmllcyAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNrX3Vuc2FmZV9yZWZlcmVu
Y2VzX2luX2JpbmFyaWVzKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgoJIiIiCglFbnN1
cmUgYmluYXJpZXMgaW4gYmFzZV9bYmluZGlyfHNiaW5kaXJ8bGliZGlyXSBkbyBub3QgbGluayB0
byBmaWxlcyB1bmRlciBleGVjX3ByZWZpeAoJIiIiCglpZiB1bnNhZmVfcmVmZXJlbmNlc19za2lw
cGFibGUocGF0aCwgbmFtZSwgZCk6CgkJcmV0dXJuCgoJaWYgZWxmOgoJCWltcG9ydCBzdWJwcm9j
ZXNzIGFzIHN1YgoJCXBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKCgkJZXhlY19wcmVmaXggPSBk
LmdldFZhcignZXhlY19wcmVmaXgnLCBUcnVlKQoJCXN5c3Jvb3RfcGF0aCA9IGQuZ2V0VmFyKCdT
VEFHSU5HX0RJUl9UQVJHRVQnLCBUcnVlKQoJCXN5c3Jvb3RfcGF0aF91c3IgPSBzeXNyb290X3Bh
dGggKyBleGVjX3ByZWZpeAoKCQl0cnk6CgkJCWxkZF9vdXRwdXQgPSBiYi5wcm9jZXNzLlBvcGVu
KFsicHJlbGluay1ydGxkIiwgIi0tcm9vdCIsIHN5c3Jvb3RfcGF0aCwgcGF0aF0sIHN0ZG91dD1z
dWIuUElQRSkuc3Rkb3V0LnJlYWQoKQoJCWV4Y2VwdCBiYi5wcm9jZXNzLkNtZEVycm9yOgoJCQll
cnJvcl9tc2cgPSBwbiArICI6IHByZWxpbmstcnRsZCBhYm9ydGVkIHdoZW4gcHJvY2Vzc2luZyAl
cyIgJSBwYXRoCgkJCXBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJ1bnNhZmUtcmVmZXJlbmNlcy1p
bi1iaW5hcmllcyIsIGVycm9yX21zZywgZCkKCQkJcmV0dXJuIEZhbHNlCgoJCWlmIHN5c3Jvb3Rf
cGF0aF91c3IgaW4gbGRkX291dHB1dDoKCQkJbGRkX291dHB1dCA9IGxkZF9vdXRwdXQucmVwbGFj
ZShzeXNyb290X3BhdGgsICIiKQoKCQkJcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJywgVHJ1
ZSkKCQkJcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKQoKCQkJZm9yIHBhY2th
Z2UgaW4gcGFja2FnZXMuc3BsaXQoKToKCQkJCXNob3J0X3BhdGggPSBwYXRoLnJlcGxhY2UoJyVz
LyVzJyAlIChwa2dkZXN0LCBwYWNrYWdlKSwgIiIsIDEpCgkJCQlpZiAoc2hvcnRfcGF0aCAhPSBw
YXRoKToKCQkJCQlicmVhawoKCQkJYmFzZV9lcnIgPSBwbiArICI6ICVzLCBpbnN0YWxsZWQgaW4g
dGhlIGJhc2VfcHJlZml4LCByZXF1aXJlcyBhIHNoYXJlZCBsaWJyYXJ5IHVuZGVyIGV4ZWNfcHJl
Zml4ICglcykiICUgKHNob3J0X3BhdGgsIGV4ZWNfcHJlZml4KQoJCQlmb3IgbGluZSBpbiBsZGRf
b3V0cHV0LnNwbGl0KCdcbicpOgoJCQkJaWYgZXhlY19wcmVmaXggaW4gbGluZToKCQkJCQllcnJv
cl9tc2cgPSAiJXM6ICVzIiAlIChiYXNlX2VyciwgbGluZS5zdHJpcCgpKQoJCQkJCXBhY2thZ2Vf
cWFfaGFuZGxlX2Vycm9yKCJ1bnNhZmUtcmVmZXJlbmNlcy1pbi1iaW5hcmllcyIsIGVycm9yX21z
ZywgZCkKCgkJCXJldHVybiBGYWxzZQp9CgoKcHl0aG9uIHNldF9ibiAoKSB7CmRlZiBzZXRfYm4o
ZSk6CiAgICBibiA9IGUuZ2V0UGtncygpWzBdICsgIi0iICsgZS5kYXRhLmdldFZhcignTUFDSElO
RScsIFRydWUpCiAgICB0cnk6CiAgICAgICAgb3MucmVtb3ZlKGUuZGF0YS5nZXRWYXIoJ0JORklM
RScsIFRydWUpKQogICAgZXhjZXB0OgogICAgICAgIHBhc3MKICAgIGZpbGUgPSBvcGVuKGUuZGF0
YS5nZXRWYXIoJ0JORklMRScsIFRydWUpLCAidyIpCiAgICBmaWxlLndyaXRlKG9zLnBhdGguam9p
bihibiwgZS5kYXRhLmdldFZhcignQlVJTEROQU1FJywgVHJ1ZSkpKQogICAgZmlsZS5jbG9zZSgp
Cn0KCgpweXRob24gZ2V0X3BhY2thZ2VfbWFwcGluZyAoKSB7CmRlZiBnZXRfcGFja2FnZV9tYXBw
aW5nIChwa2csIGQpOgogICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCgogICAgZGF0YSA9IG9lLnBh
Y2thZ2VkYXRhLnJlYWRfc3VicGtnZGF0YShwa2csIGQpCiAgICBrZXkgPSAiUEtHXyVzIiAlIHBr
ZwoKICAgIGlmIGtleSBpbiBkYXRhOgogICAgICAgIHJldHVybiBkYXRhW2tleV0KCiAgICByZXR1
cm4gcGtnCn0KCgpweXRob24gZG9fY2xlYW4gKCkgewogICAgIiIiY2xlYXIgdGhlIGJ1aWxkIGFu
ZCB0ZW1wIGRpcmVjdG9yaWVzIiIiCiAgICBkaXIgPSBkLmV4cGFuZCgiL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9iYmxh
eWVycy0xLjAtcjAiKQogICAgYmIubm90ZSgiUmVtb3ZpbmcgIiArIGRpcikKICAgIG9lLnBhdGgu
cmVtb3ZlKGRpcikKCiAgICBkaXIgPSAiJXMuKiIgJSBiYi5kYXRhLmV4cGFuZChkLmdldFZhcign
U1RBTVAnKSwgZCkKICAgIGJiLm5vdGUoIlJlbW92aW5nICIgKyBkaXIpCiAgICBvZS5wYXRoLnJl
bW92ZShkaXIpCgogICAgZm9yIGYgaW4gKGQuZ2V0VmFyKCdDTEVBTkZVTkNTJywgVHJ1ZSkgb3Ig
JycpLnNwbGl0KCk6CiAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGYsIGQpCn0KCgpweXRob24g
ZG9fcGFja2FnZV93cml0ZV9ycG1fc2V0c2NlbmUgKCkgewogICAgc3N0YXRlX3NldHNjZW5lKGQp
Cn0KCgpweXRob24gc3N0YXRlX3Rhc2tfcHJlZnVuYyAoKSB7CiAgICBzaGFyZWRfc3RhdGUgPSBz
c3RhdGVfc3RhdGVfZnJvbXZhcnMoZCkKICAgIHNzdGF0ZV9jbGVhbihzaGFyZWRfc3RhdGUsIGQp
Cn0KCgpweXRob24gY2hlY2tfc2FuaXR5X3NzdGF0ZV9kaXJfY2hhbmdlICgpIHsKZGVmIGNoZWNr
X3Nhbml0eV9zc3RhdGVfZGlyX2NoYW5nZShzc3RhdGVfZGlyLCBkYXRhKToKICAgICMgU2FuaXR5
IGNoZWNrcyB0byBiZSBkb25lIHdoZW4gdGhlIHZhbHVlIG9mIFNTVEFURV9ESVIgY2hhbmdlcwoK
ICAgICMgQ2hlY2sgdGhhdCBTU1RBVEVfRElSIGlzbid0IG9uIGEgZmlsZXN5c3RlbSB3aXRoIGxp
bWl0ZWQgZmlsZW5hbWUgbGVuZ3RoIChlZy4gZUNyeXB0RlMpCiAgICB0ZXN0bXNnID0gIiIKICAg
IGlmIHNzdGF0ZV9kaXIgIT0gIiI6CiAgICAgICAgdGVzdG1zZyA9IGNoZWNrX2NyZWF0ZV9sb25n
X2ZpbGVuYW1lKHNzdGF0ZV9kaXIsICJTU1RBVEVfRElSIikKICAgICAgICAjIElmIHdlIGRvbid0
IGhhdmUgcGVybWlzc2lvbnMgdG8gU1NUQVRFX0RJUiwgc3VnZ2VzdCB0aGUgdXNlciBzZXQgaXQg
YXMgYW4gU1NUQVRFX01JUlJPUlMKICAgICAgICB0cnk6CiAgICAgICAgICAgIGVyciA9IHRlc3Rt
c2cuc3BsaXQoJzogJylbMV0uc3RyaXAoKQogICAgICAgICAgICBpZiBlcnIgPT0gIlBlcm1pc3Np
b24gZGVuaWVkLiI6CiAgICAgICAgICAgICAgICB0ZXN0bXNnID0gdGVzdG1zZyArICJZb3UgY291
bGQgdHJ5IHVzaW5nICVzIGluIFNTVEFURV9NSVJST1JTIHJhdGhlciB0aGFuIGFzIGFuIFNTVEFU
RV9DQUNIRS5cbiIgJSAoc3N0YXRlX2RpcikKICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAg
ICAgICAgICAgcGFzcwogICAgcmV0dXJuIHRlc3Rtc2cKfQoKCnB5dGhvbiB3cml0ZV90YXNrX2Rh
dGEgKCkgewpkZWYgd3JpdGVfdGFza19kYXRhKHN0YXR1cywgbG9nZmlsZSwgZGV2LCBlKToKICAg
IGJuID0gZ2V0X2JuKGUpCiAgICBic2RpciA9IG9zLnBhdGguam9pbihlLmRhdGEuZ2V0VmFyKCdC
VUlMRFNUQVRTX0JBU0UnLCBUcnVlKSwgYm4pCiAgICB0YXNrZGlyID0gb3MucGF0aC5qb2luKGJz
ZGlyLCBlLmRhdGEuZXhwYW5kKCJiYmxheWVycy0xLjAtcjAiKSkKICAgIGZpbGUgPSBvcGVuKG9z
LnBhdGguam9pbihsb2dmaWxlKSwgImEiKQogICAgdGltZWRhdGEgPSBnZXRfdGltZWRhdGEoIl9f
dGltZWRhdGFfdGFzayIsIGUuZGF0YSkKICAgIGlmIHRpbWVkYXRhOgogICAgICAgIGVsYXBzZWR0
aW1lLCBjcHUgPSB0aW1lZGF0YQogICAgICAgIGZpbGUud3JpdGUoYmIuZGF0YS5leHBhbmQoImJi
bGF5ZXJzLTEuMC1yMDogJXM6IEVsYXBzZWQgdGltZTogJTAuMmYgc2Vjb25kcyBcbiIgJQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS50YXNrLCBlbGFwc2VkdGltZSksIGUuZGF0
YSkpCiAgICAgICAgaWYgY3B1OgogICAgICAgICAgICBmaWxlLndyaXRlKCJDUFUgdXNhZ2U6ICUw
LjFmJSUgXG4iICUgY3B1KQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBIZXJlIHdlIGdh
dGhlciB1cCBkaXNrIGRhdGEuIEluIGFuIGVmZm9ydCB0byBhdm9pZCBseWluZyB3aXRoIHN0YXRz
CiAgICAjIEkgZG8gYSBiYXJlIG1pbmltdW0gb2YgYW5hbHlzaXMgb2YgY29sbGVjdGVkIGRhdGEu
CiAgICAjIFRoZSBzaW1wbGUgZmFjdCBpcywgZG9pbmcgZGlzayBpbyBjb2xsZWN0aW9uIG9uIGEg
cGVyIHByb2Nlc3MgYmFzaXMKICAgICMgd2l0aG91dCBlZmZlY3RpbmcgYnVpbGQgdGltZSB3b3Vs
ZCBiZSBkaWZmaWN1bHQuCiAgICAjIEZvciB0aGUgYmVzdCBpbmZvcm1hdGlvbiwgcnVubmluZyB0
aGluZ3Mgd2l0aCBCQl9UT1RBTF9USFJFQURTID0gIjEiCiAgICAjIHdvdWxkIHJldHVybiBhY2N1
cmF0ZSBwZXIgdGFzayByZXN1bHRzLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgaWYgZGV2
ICE9ICJOb0xvZ2ljYWxEZXZpY2UiOgogICAgICAgIGRpc2tkYXRhID0gZ2V0X2Rpc2tkYXRhKCJf
X2Rpc2tkYXRhX3Rhc2siLCBkZXYsIGUuZGF0YSkKICAgICAgICBpZiBkaXNrZGF0YToKICAgICAg
ICAgICAgZm9yIGtleSBpbiBzb3J0ZWQoZGlza2RhdGEuaXRlcmtleXMoKSk6CiAgICAgICAgICAg
ICAgICBmaWxlLndyaXRlKGtleSArICI6ICIgKyBkaXNrZGF0YVtrZXldICsgIlxuIikKICAgIGlm
IHN0YXR1cyBpcyAicGFzc2VkIjoKCSAgICBmaWxlLndyaXRlKCJTdGF0dXM6IFBBU1NFRCBcbiIp
CiAgICBlbHNlOgogICAgICAgIGZpbGUud3JpdGUoIlN0YXR1czogRkFJTEVEIFxuIikKICAgIGZp
bGUud3JpdGUoIkVuZGVkOiAlMC4yZiBcbiIgJSB0aW1lLnRpbWUoKSkKICAgIGZpbGUuY2xvc2Uo
KQp9CgoKcHl0aG9uIHNzdGF0ZV9zZXRzY2VuZSAoKSB7CmRlZiBzc3RhdGVfc2V0c2NlbmUoZCk6
CiAgICBzaGFyZWRfc3RhdGUgPSBzc3RhdGVfc3RhdGVfZnJvbXZhcnMoZCkKICAgIGFjY2VsZXJh
dGUgPSBzc3RhdGVfaW5zdGFsbHBrZyhzaGFyZWRfc3RhdGUsIGQpCiAgICBpZiBub3QgYWNjZWxl
cmF0ZToKICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJObyBzdWl0YWJsZSBzdGFn
aW5nIHBhY2thZ2UgZm91bmQiKQp9CgoKcHl0aG9uIHVuc2FmZV9yZWZlcmVuY2VzX3NraXBwYWJs
ZSAoKSB7CmRlZiB1bnNhZmVfcmVmZXJlbmNlc19za2lwcGFibGUocGF0aCwgbmFtZSwgZCk6Cglp
ZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRz
X2NsYXNzKCduYXRpdmVzZGsnLCBkKToKCQlyZXR1cm4gVHJ1ZQoKCWlmICItZGJnIiBpbiBuYW1l
IG9yICItZGV2IiBpbiBuYW1lOgoJCXJldHVybiBUcnVlCgoJIyBPdGhlciBwYWNrYWdlIG5hbWVz
IHRvIHNraXA6CglpZiBuYW1lLnN0YXJ0c3dpdGgoImtlcm5lbC1tb2R1bGUtIik6CgkJcmV0dXJu
IFRydWUKCgkjIFNraXAgc3ltbGlua3MKCWlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgoJCXJldHVy
biBUcnVlCgoJIyBTa2lwIHVudXN1YWwgcm9vdGZzIGxheW91dHMgd2hpY2ggbWFrZSB0aGVzZSB0
ZXN0cyBpcnJlbGV2YW50CglleGVjX3ByZWZpeCA9IGQuZ2V0VmFyKCdleGVjX3ByZWZpeCcsIFRy
dWUpCglpZiBleGVjX3ByZWZpeCA9PSAiIjoKCQlyZXR1cm4gVHJ1ZQoKCXBrZ2Rlc3QgPSBkLmdl
dFZhcignUEtHREVTVCcsIFRydWUpCglwa2dkZXN0ID0gcGtnZGVzdCArICIvIiArIG5hbWUKCXBr
Z2Rlc3QgPSBvcy5wYXRoLmFic3BhdGgocGtnZGVzdCkKCWJhc2VfYmluZGlyID0gcGtnZGVzdCAr
IGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicsIFRydWUpCgliYXNlX3NiaW5kaXIgPSBwa2dkZXN0ICsg
ZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicsIFRydWUpCgliYXNlX2xpYmRpciA9IHBrZ2Rlc3QgKyBk
LmdldFZhcignYmFzZV9saWJkaXInLCBUcnVlKQoJYmluZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFy
KCdiaW5kaXInLCBUcnVlKQoJc2JpbmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignc2JpbmRpcics
IFRydWUpCglsaWJkaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpCgoJaWYg
YmFzZV9iaW5kaXIgPT0gYmluZGlyIGFuZCBiYXNlX3NiaW5kaXIgPT0gc2JpbmRpciBhbmQgYmFz
ZV9saWJkaXIgPT0gbGliZGlyOgoJCXJldHVybiBUcnVlCgoJIyBTa2lwIGZpbGVzIG5vdCBpbiBi
YXNlX1tiaW5kaXJ8c2JpbmRpcnxsaWJkaXJdCglwYXRoID0gb3MucGF0aC5hYnNwYXRoKHBhdGgp
CglpZiBub3QgKGJhc2VfYmluZGlyIGluIHBhdGggb3IgYmFzZV9zYmluZGlyIGluIHBhdGggb3Ig
YmFzZV9saWJkaXIgaW4gcGF0aCk6CgkJcmV0dXJuIFRydWUKCglyZXR1cm4gRmFsc2UKfQoKCnB5
dGhvbiByZWFkX2xpYmRlcF9maWxlcyAoKSB7CmRlZiByZWFkX2xpYmRlcF9maWxlcyhkKToKICAg
IHBrZ2xpYmRlcHMgPSB7fQogICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVl
KS5zcGxpdCgpCiAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgogICAgICAgIHBrZ2xpYmRlcHNbcGtn
XSA9IFtdCiAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiAiLnNobGliZGVwcyIsICIucGNkZXBzIiwg
Ii5jbGlsaWJkZXBzIjoKICAgICAgICAgICAgZGVwc2ZpbGUgPSBkLmV4cGFuZCgiL2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFi
aS9iYmxheWVycy0xLjAtcjAvcGFja2FnZXMtc3BsaXQvIiArIHBrZyArIGV4dGVuc2lvbikKICAg
ICAgICAgICAgaWYgb3MuYWNjZXNzKGRlcHNmaWxlLCBvcy5SX09LKToKICAgICAgICAgICAgICAg
IGZkID0gZmlsZShkZXBzZmlsZSkKICAgICAgICAgICAgICAgIGxpbmVzID0gZmQucmVhZGxpbmVz
KCkKICAgICAgICAgICAgICAgIGZkLmNsb3NlKCkKICAgICAgICAgICAgICAgIHBrZ2xpYmRlcHNb
cGtnXS5leHRlbmQoW2wucnN0cmlwKCkgZm9yIGwgaW4gbGluZXNdKQogICAgcmV0dXJuIHBrZ2xp
YmRlcHMKfQoKCnB5dGhvbiBzeXNyb290X2NsZWFuc3N0YXRlICgpIHsKICAgICBzcyA9IHNzdGF0
ZV9zdGF0ZV9mcm9tdmFycyhkLCAicG9wdWxhdGVfc3lzcm9vdCIpCiAgICAgc3N0YXRlX2NsZWFu
KHNzLCBkKQp9CgoKcHl0aG9uIHBhY2thZ2VfZGVwY2hhaW5zICgpIHsKICAgICIiIgogICAgRm9y
IGEgZ2l2ZW4gc2V0IG9mIHByZWZpeCBhbmQgcG9zdGZpeCBtb2RpZmllcnMsIG1ha2UgdGhvc2Ug
cGFja2FnZXMKICAgIFJSRUNPTU1FTkRTIG9uIHRoZSBjb3JyZXNwb25kaW5nIHBhY2thZ2VzIGZv
ciBpdHMgUkRFUEVORFMuCgogICAgRXhhbXBsZTogIElmIHBhY2thZ2UgQSBkZXBlbmRzIHVwb24g
cGFja2FnZSBCLCBhbmQgQSdzIC5iYiBlbWl0cyBhbgogICAgQS1kZXYgcGFja2FnZSwgdGhpcyB3
b3VsZCBtYWtlIEEtZGV2IFJlY29tbWVuZHM6IEItZGV2LgoKICAgIElmIG9ubHkgb25lIG9mIGEg
Z2l2ZW4gc3VmZml4IGlzIHNwZWNpZmllZCwgaXQgd2lsbCB0YWtlIHRoZSBSUkVDT01NRU5EUwog
ICAgYmFzZWQgb24gdGhlIFJERVBFTkRTIG9mICphbGwqIG90aGVyIHBhY2thZ2VzLiBJZiBtb3Jl
IHRoYW4gb25lIG9mIGEgZ2l2ZW4KICAgIHN1ZmZpeCBpcyBzcGVjaWZpZWQsIGl0cyB3aWxsIG9u
bHkgdXNlIHRoZSBSREVQRU5EUyBvZiB0aGUgc2luZ2xlIHBhcmVudAogICAgcGFja2FnZS4KICAg
ICIiIgoKICAgIHBhY2thZ2VzICA9IGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpCiAgICBwb3N0
Zml4ZXMgPSAoZC5nZXRWYXIoJ0RFUENIQUlOX1BPU1QnLCBUcnVlKSBvciAnJykuc3BsaXQoKQog
ICAgcHJlZml4ZXMgID0gKGQuZ2V0VmFyKCdERVBDSEFJTl9QUkUnLCBUcnVlKSBvciAnJykuc3Bs
aXQoKQoKICAgIGRlZiBwa2dfYWRkZGVwcnJlY3MocGtnLCBiYXNlLCBzdWZmaXgsIGdldG5hbWUs
IGRlcGVuZHMsIGQpOgoKICAgICAgICAjYmIubm90ZSgnZGVwZW5kcyBmb3IgJXMgaXMgJXMnICUg
KGJhc2UsIGRlcGVuZHMpKQogICAgICAgIHJyZWNsaXN0ID0gYmIudXRpbHMuZXhwbG9kZV9kZXBf
dmVyc2lvbnMoZC5nZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwa2csIFRydWUpIG9yIGQuZ2V0VmFy
KCdSUkVDT01NRU5EUycsIFRydWUpIG9yICIiKQoKICAgICAgICBmb3IgZGVwZW5kIGluIGRlcGVu
ZHM6CiAgICAgICAgICAgIGlmIGRlcGVuZC5maW5kKCctbmF0aXZlJykgIT0gLTEgb3IgZGVwZW5k
LmZpbmQoJy1jcm9zcycpICE9IC0xIG9yIGRlcGVuZC5zdGFydHN3aXRoKCd2aXJ0dWFsLycpOgog
ICAgICAgICAgICAgICAgI2JiLm5vdGUoIlNraXBwaW5nICVzIiAlIGRlcGVuZCkKICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIGlmIGRlcGVuZC5lbmRzd2l0aCgnLWRldicpOgog
ICAgICAgICAgICAgICAgZGVwZW5kID0gZGVwZW5kLnJlcGxhY2UoJy1kZXYnLCAnJykKICAgICAg
ICAgICAgaWYgZGVwZW5kLmVuZHN3aXRoKCctZGJnJyk6CiAgICAgICAgICAgICAgICBkZXBlbmQg
PSBkZXBlbmQucmVwbGFjZSgnLWRiZycsICcnKQogICAgICAgICAgICBwa2duYW1lID0gZ2V0bmFt
ZShkZXBlbmQsIHN1ZmZpeCkKICAgICAgICAgICAgI2JiLm5vdGUoIkFkZGluZyAlcyBmb3IgJXMi
ICUgKHBrZ25hbWUsIGRlcGVuZCkpCiAgICAgICAgICAgIGlmIHBrZ25hbWUgbm90IGluIHJyZWNs
aXN0IGFuZCBwa2duYW1lICE9IHBrZzoKICAgICAgICAgICAgICAgIHJyZWNsaXN0W3BrZ25hbWVd
ID0gIiIKCiAgICAgICAgI2JiLm5vdGUoJ3NldHRpbmc6IFJSRUNPTU1FTkRTXyVzPSVzJyAlIChw
a2csICcgJy5qb2luKHJyZWNsaXN0KSkpCiAgICAgICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXyVz
JyAlIHBrZywgYmIudXRpbHMuam9pbl9kZXBzKHJyZWNsaXN0LCBjb21tYXNlcD1GYWxzZSkpCgog
ICAgZGVmIHBrZ19hZGRycmVjcyhwa2csIGJhc2UsIHN1ZmZpeCwgZ2V0bmFtZSwgcmRlcGVuZHMs
IGQpOgoKICAgICAgICAjYmIubm90ZSgncmRlcGVuZHMgZm9yICVzIGlzICVzJyAlIChiYXNlLCBy
ZGVwZW5kcykpCiAgICAgICAgcnJlY2xpc3QgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9u
cyhkLmdldFZhcignUlJFQ09NTUVORFNfJyArIHBrZywgVHJ1ZSkgb3IgZC5nZXRWYXIoJ1JSRUNP
TU1FTkRTJywgVHJ1ZSkgb3IgIiIpCgogICAgICAgIGZvciBkZXBlbmQgaW4gcmRlcGVuZHM6CiAg
ICAgICAgICAgIGlmIGRlcGVuZC5maW5kKCd2aXJ0dWFsLWxvY2FsZS0nKSAhPSAtMToKICAgICAg
ICAgICAgICAgICNiYi5ub3RlKCJTa2lwcGluZyAlcyIgJSBkZXBlbmQpCiAgICAgICAgICAgICAg
ICBjb250aW51ZQogICAgICAgICAgICBpZiBkZXBlbmQuZW5kc3dpdGgoJy1kZXYnKToKICAgICAg
ICAgICAgICAgIGRlcGVuZCA9IGRlcGVuZC5yZXBsYWNlKCctZGV2JywgJycpCiAgICAgICAgICAg
IGlmIGRlcGVuZC5lbmRzd2l0aCgnLWRiZycpOgogICAgICAgICAgICAgICAgZGVwZW5kID0gZGVw
ZW5kLnJlcGxhY2UoJy1kYmcnLCAnJykKICAgICAgICAgICAgcGtnbmFtZSA9IGdldG5hbWUoZGVw
ZW5kLCBzdWZmaXgpCiAgICAgICAgICAgICNiYi5ub3RlKCJBZGRpbmcgJXMgZm9yICVzIiAlIChw
a2duYW1lLCBkZXBlbmQpKQogICAgICAgICAgICBpZiBwa2duYW1lIG5vdCBpbiBycmVjbGlzdCBh
bmQgcGtnbmFtZSAhPSBwa2c6CiAgICAgICAgICAgICAgICBycmVjbGlzdFtwa2duYW1lXSA9ICIi
CgogICAgICAgICNiYi5ub3RlKCdzZXR0aW5nOiBSUkVDT01NRU5EU18lcz0lcycgJSAocGtnLCAn
ICcuam9pbihycmVjbGlzdCkpKQogICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18lcycgJSBw
a2csIGJiLnV0aWxzLmpvaW5fZGVwcyhycmVjbGlzdCwgY29tbWFzZXA9RmFsc2UpKQoKICAgIGRl
ZiBhZGRfZGVwKGxpc3QsIGRlcCk6CiAgICAgICAgZGVwID0gZGVwLnNwbGl0KCcgKCcpWzBdLnN0
cmlwKCkKICAgICAgICBpZiBkZXAgbm90IGluIGxpc3Q6CiAgICAgICAgICAgIGxpc3QuYXBwZW5k
KGRlcCkKCiAgICBkZXBlbmRzID0gW10KICAgIGZvciBkZXAgaW4gYmIudXRpbHMuZXhwbG9kZV9k
ZXBzKGQuZ2V0VmFyKCdERVBFTkRTJywgVHJ1ZSkgb3IgIiIpOgogICAgICAgIGFkZF9kZXAoZGVw
ZW5kcywgZGVwKQoKICAgIHJkZXBlbmRzID0gW10KICAgIGZvciBkZXAgaW4gYmIudXRpbHMuZXhw
bG9kZV9kZXBzKGQuZ2V0VmFyKCdSREVQRU5EUycsIFRydWUpIG9yICIiKToKICAgICAgICBhZGRf
ZGVwKHJkZXBlbmRzLCBkZXApCgogICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAg
ICAgIGZvciBkZXAgaW4gYmIudXRpbHMuZXhwbG9kZV9kZXBzKGQuZ2V0VmFyKCdSREVQRU5EU18n
ICsgcGtnLCBUcnVlKSBvciAiIik6CiAgICAgICAgICAgIGFkZF9kZXAocmRlcGVuZHMsIGRlcCkK
CiAgICAjYmIubm90ZSgncmRlcGVuZHMgaXMgJXMnICUgcmRlcGVuZHMpCgogICAgZGVmIHBvc3Rf
Z2V0bmFtZShuYW1lLCBzdWZmaXgpOgogICAgICAgIHJldHVybiAnJXMlcycgJSAobmFtZSwgc3Vm
Zml4KQogICAgZGVmIHByZV9nZXRuYW1lKG5hbWUsIHN1ZmZpeCk6CiAgICAgICAgcmV0dXJuICcl
cyVzJyAlIChzdWZmaXgsIG5hbWUpCgogICAgcGtncyA9IHt9CiAgICBmb3IgcGtnIGluIHBhY2th
Z2VzLnNwbGl0KCk6CiAgICAgICAgZm9yIHBvc3RmaXggaW4gcG9zdGZpeGVzOgogICAgICAgICAg
ICBpZiBwa2cuZW5kc3dpdGgocG9zdGZpeCk6CiAgICAgICAgICAgICAgICBpZiBub3QgcG9zdGZp
eCBpbiBwa2dzOgogICAgICAgICAgICAgICAgICAgIHBrZ3NbcG9zdGZpeF0gPSB7fQogICAgICAg
ICAgICAgICAgcGtnc1twb3N0Zml4XVtwa2ddID0gKHBrZ1s6LWxlbihwb3N0Zml4KV0sIHBvc3Rf
Z2V0bmFtZSkKCiAgICAgICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKICAgICAgICAgICAgaWYg
cGtnLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgICAgIGlmIG5vdCBwcmVmaXggaW4g
cGtnczoKICAgICAgICAgICAgICAgICAgICBwa2dzW3ByZWZpeF0gPSB7fQogICAgICAgICAgICAg
ICAgcGtnc1twcmVmaXhdW3BrZ10gPSAocGtnWzotbGVuKHByZWZpeCldLCBwcmVfZ2V0bmFtZSkK
CiAgICBpZiAiLWRiZyIgaW4gcGtnczoKICAgICAgICBwa2dsaWJkZXBzID0gcmVhZF9saWJkZXBf
ZmlsZXMoZCkKICAgICAgICBwa2dsaWJkZXBsaXN0ID0gW10KICAgICAgICBmb3IgcGtnIGluIHBr
Z2xpYmRlcHM6CiAgICAgICAgICAgIGZvciBkZXAgaW4gcGtnbGliZGVwc1twa2ddOgogICAgICAg
ICAgICAgICAgYWRkX2RlcChwa2dsaWJkZXBsaXN0LCBkZXApCiAgICAgICAgIyBGSVhNRSB0aGlz
IHNob3VsZCBub3QgbG9vayBhdCBQTiBvbmNlIGFsbCB0YXNrIHJlY2lwZXMgaW5oZXJpdCBmcm9t
IHRhc2suYmJjbGFzcwogICAgICAgIGRiZ2RlZmF1bHRkZXBzID0gKChkLmdldFZhcignREVQQ0hB
SU5fREJHREVGQVVMVERFUFMnLCBUcnVlKSA9PSAnMScpIG9yIChkLmdldFZhcignUE4nLCBUcnVl
KSBvciAnJykuc3RhcnRzd2l0aCgndGFzay0nKSkKCiAgICBmb3Igc3VmZml4IGluIHBrZ3M6CiAg
ICAgICAgZm9yIHBrZyBpbiBwa2dzW3N1ZmZpeF06CiAgICAgICAgICAgIGlmIGQuZ2V0VmFyRmxh
ZygnUlJFQ09NTUVORFNfJyArIHBrZywgJ25vZGVwcnJlY3MnKToKICAgICAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgICAgIChiYXNlLCBmdW5jKSA9IHBrZ3Nbc3VmZml4XVtwa2ddCiAgICAg
ICAgICAgIGlmIHN1ZmZpeCA9PSAiLWRldiI6CiAgICAgICAgICAgICAgICBwa2dfYWRkZGVwcnJl
Y3MocGtnLCBiYXNlLCBzdWZmaXgsIGZ1bmMsIGRlcGVuZHMsIGQpCiAgICAgICAgICAgIGVsaWYg
c3VmZml4ID09ICItZGJnIjoKICAgICAgICAgICAgICAgIGlmIG5vdCBkYmdkZWZhdWx0ZGVwczoK
ICAgICAgICAgICAgICAgICAgICBwa2dfYWRkcnJlY3MocGtnLCBiYXNlLCBzdWZmaXgsIGZ1bmMs
IHBrZ2xpYmRlcGxpc3QsIGQpCiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAg
ICAgaWYgbGVuKHBrZ3Nbc3VmZml4XSkgPT0gMToKICAgICAgICAgICAgICAgIHBrZ19hZGRycmVj
cyhwa2csIGJhc2UsIHN1ZmZpeCwgZnVuYywgcmRlcGVuZHMsIGQpCiAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICByZGVwcyA9IFtdCiAgICAgICAgICAgICAgICBmb3IgZGVwIGluIGJi
LnV0aWxzLmV4cGxvZGVfZGVwcyhkLmdldFZhcignUkRFUEVORFNfJyArIGJhc2UsIFRydWUpIG9y
IGQuZ2V0VmFyKCdSREVQRU5EUycsIFRydWUpIG9yICIiKToKICAgICAgICAgICAgICAgICAgICBh
ZGRfZGVwKHJkZXBzLCBkZXApCiAgICAgICAgICAgICAgICBwa2dfYWRkcnJlY3MocGtnLCBiYXNl
LCBzdWZmaXgsIGZ1bmMsIHJkZXBzLCBkKQp9CgoKcHl0aG9uIHNwbGl0ZmlsZSAoKSB7CmRlZiBz
cGxpdGZpbGUoZmlsZSwgZGVidWdmaWxlLCBkZWJ1Z3NyY2RpciwgZCk6CiAgICAjIEZ1bmN0aW9u
IHRvIHNwbGl0IGEgc2luZ2xlIGZpbGUsIGNhbGxlZCBmcm9tIHNwbGl0X2FuZF9zdHJpcF9maWxl
cyBiZWxvdwogICAgIyBBIHdvcmtpbmcgJ2ZpbGUnIChvbmUgd2hpY2ggd29ya3Mgb24gdGhlIHRh
cmdldCBhcmNoaXRlY3R1cmUpCiAgICAjIGlzIHNwbGl0IGFuZCB0aGUgc3BsaXQgb2ZmIHBvcnRp
b25zIGdvIHRvIGRlYnVnZmlsZS4KICAgICMKICAgICMgVGhlIGRlYnVnIGluZm9ybWF0aW9uIGlz
IHRoZW4gcHJvY2Vzc2VkIGZvciBzcmMgcmVmZXJlbmNlcy4gIFRoZXNlCiAgICAjIHJlZmVyZW5j
ZXMgYXJlIGNvcGllZCB0byBkZWJ1Z3NyY2RpciwgaWYgZGVmaW5lZC4KCiAgICBpbXBvcnQgY29t
bWFuZHMsIHN0YXQsIHN1YnByb2Nlc3MKCiAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnLCBUcnVl
KQogICAgcGF0aHByZWZpeCA9ICJleHBvcnQgUEFUSD0lczsgIiAlIGQuZ2V0VmFyKCdQQVRIJywg
VHJ1ZSkKICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIsIFRydWUpCiAgICBkZWJ1Z2Vk
aXQgPSBkLmV4cGFuZCgiL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9v
dHMveDg2XzY0LWxpbnV4L3Vzci9saWIvcnBtL2Jpbi9kZWJ1Z2VkaXQiKQogICAgd29ya2RpciA9
IGQuZ2V0VmFyKCJXT1JLRElSIiwgVHJ1ZSkKICAgIHdvcmtwYXJlbnRkaXIgPSBkLmdldFZhcigi
REVCVUdTUkNfT1ZFUlJJREVfUEFUSCIsIFRydWUpIG9yIG9zLnBhdGguZGlybmFtZSh3b3JrZGly
KQogICAgc291cmNlZmlsZSA9IGQuZXhwYW5kKCIvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1
aWxkL3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL2JibGF5ZXJzLTEuMC1yMC9k
ZWJ1Z3NvdXJjZXMubGlzdCIpCgogICAgIyBXZSBpZ25vcmUga2VybmVsIG1vZHVsZXMsIHdlIGRv
bid0IGdlbmVyYXRlIGRlYnVnIGluZm8gZmlsZXMuCiAgICBpZiBmaWxlLmZpbmQoIi9saWIvbW9k
dWxlcy8iKSAhPSAtMSBhbmQgZmlsZS5lbmRzd2l0aCgiLmtvIik6CiAgICAgICAgcmV0dXJuIDEK
CiAgICBuZXdtb2RlID0gTm9uZQogICAgaWYgbm90IG9zLmFjY2VzcyhmaWxlLCBvcy5XX09LKSBv
ciBvcy5hY2Nlc3MoZmlsZSwgb3MuUl9PSyk6CiAgICAgICAgb3JpZ21vZGUgPSBvcy5zdGF0KGZp
bGUpW3N0YXQuU1RfTU9ERV0KICAgICAgICBuZXdtb2RlID0gb3JpZ21vZGUgfCBzdGF0LlNfSVdS
SVRFIHwgc3RhdC5TX0lSRUFECiAgICAgICAgb3MuY2htb2QoZmlsZSwgbmV3bW9kZSkKCiAgICAj
IFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIGhlcmUuLi4KICAg
IGlmIGRlYnVnc3JjZGlyOgogICAgICAgIHN1YnByb2Nlc3MuY2FsbCgiJXMnJXMnIC1iICclcycg
LWQgJyVzJyAtaSAtbCAnJXMnICclcyciICUgKHBhdGhwcmVmaXgsIGRlYnVnZWRpdCwgd29ya3Bh
cmVudGRpciwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGZpbGUpLCBzaGVsbD1UcnVlKQoKICAg
IGJiLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVidWdmaWxlKSkKCiAgICBzdWJwcm9jZXNz
LmNhbGwoIiVzJyVzJyAtLW9ubHkta2VlcC1kZWJ1ZyAnJXMnICclcyciICUgKHBhdGhwcmVmaXgs
IG9iamNvcHksIGZpbGUsIGRlYnVnZmlsZSksIHNoZWxsPVRydWUpCgogICAgIyBTZXQgdGhlIGRl
YnVnbGluayB0byBoYXZlIHRoZSB2aWV3IG9mIHRoZSBmaWxlIHBhdGggb24gdGhlIHRhcmdldAog
ICAgc3VicHJvY2Vzcy5jYWxsKCIlcyclcycgLS1hZGQtZ251LWRlYnVnbGluaz0nJXMnICclcyci
ICUgKHBhdGhwcmVmaXgsIG9iamNvcHksIGRlYnVnZmlsZSwgZmlsZSksIHNoZWxsPVRydWUpCgog
ICAgaWYgbmV3bW9kZToKICAgICAgICBvcy5jaG1vZChmaWxlLCBvcmlnbW9kZSkKCiAgICByZXR1
cm4gMAp9CgoKcHl0aG9uIGRvX2NsZWFuYWxsICgpIHsKICAgIHNyY191cmkgPSAoZC5nZXRWYXIo
J1NSQ19VUkknLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgaWYgbGVuKHNyY191cmkpID09IDA6
CiAgICAgICAgcmV0dXJuCgogICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAg
ICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKCiAgICB0cnk6CiAgICAgICAgZmV0Y2hl
ciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBsb2NhbGRhdGEpCiAgICAgICAgZmV0Y2hlci5j
bGVhbigpCiAgICBleGNlcHQgYmIuZmV0Y2gyLkJCRmV0Y2hFeGNlcHRpb24sIGU6CiAgICAgICAg
cmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQp9CgoKcHl0aG9uIHNzdGF0ZV9wYWNrYWdlICgp
IHsKZGVmIHNzdGF0ZV9wYWNrYWdlKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgogICAgZGVm
IG1ha2VfcmVsYXRpdmVfc3ltbGluayhwYXRoLCBvdXRwdXRwYXRoLCBkKToKICAgICAgICAjIFJl
cGxhY2Ugb3V0IGFic29sdXRlIFRNUERJUiBwYXRocyBpbiBzeW1saW5rcyB3aXRoIHJlbGF0aXZl
IG9uZXMKICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAgICAgICAgIHJl
dHVybgogICAgICAgIGxpbmsgPSBvcy5yZWFkbGluayhwYXRoKQogICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzYWJzKGxpbmspOgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpZiBub3QgbGluay5z
dGFydHN3aXRoKHRtcGRpcik6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICBkZXB0aCA9IGxp
bmsucnBhcnRpdGlvbih0bXBkaXIpWzJdLmNvdW50KCcvJykKICAgICAgICBiYXNlID0gbGluay5w
YXJ0aXRpb24odG1wZGlyKVsyXS5zdHJpcCgpCiAgICAgICAgd2hpbGUgZGVwdGggPiAxOgogICAg
ICAgICAgICBiYXNlID0gIi4uLyIgKyBiYXNlCiAgICAgICAgICAgIGRlcHRoIC09IDEKCiAgICAg
ICAgYmIuZGVidWcoMiwgIlJlcGxhY2luZyBhYnNvbHV0ZSBwYXRoICVzIHdpdGggcmVsYXRpdmUg
cGF0aCAlcyIgJSAobGluaywgYmFzZSkpCiAgICAgICAgb3MucmVtb3ZlKHBhdGgpCiAgICAgICAg
b3Muc3ltbGluayhiYXNlLCBwYXRoKQoKICAgIHRtcGRpciA9IGQuZ2V0VmFyKCdUTVBESVInLCBU
cnVlKQoKICAgIHNzdGF0ZWJ1aWxkID0gZC5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0
ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4w
LXIwL3NzdGF0ZS1idWlsZC0lcy8iICUgc3NbJ25hbWUnXSkKICAgIHNzdGF0ZXBrZyA9IGQuZ2V0
VmFyKCdTU1RBVEVfUEtHJywgVHJ1ZSkgKyAnXycrIHNzWyduYW1lJ10gKyAiLnRneiIKICAgIGJi
Lm1rZGlyaGllcihzc3RhdGVidWlsZCkKICAgIGJiLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUo
c3N0YXRlcGtnKSkKICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgogICAgICAgIHNyY2Jhc2Ug
PSBzdGF0ZVswXS5yc3RyaXAoIi8iKS5yc3BsaXQoJy8nLCAxKVswXQogICAgICAgIGZvciB3YWxr
cm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzdGF0ZVsxXSk6CiAgICAgICAgICAgIGZvciBm
aWxlIGluIGZpbGVzOgogICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBhdGguam9pbih3YWxr
cm9vdCwgZmlsZSkKICAgICAgICAgICAgICAgIGRzdHBhdGggPSBzcmNwYXRoLnJlcGxhY2Uoc3Rh
dGVbMV0sIHNzdGF0ZWJ1aWxkICsgc3RhdGVbMF0pCiAgICAgICAgICAgICAgICBtYWtlX3JlbGF0
aXZlX3N5bWxpbmsoc3JjcGF0aCwgZHN0cGF0aCwgZCkKICAgICAgICAgICAgZm9yIGRpciBpbiBk
aXJzOgogICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBhdGguam9pbih3YWxrcm9vdCwgZGly
KQogICAgICAgICAgICAgICAgZHN0cGF0aCA9IHNyY3BhdGgucmVwbGFjZShzdGF0ZVsxXSwgc3N0
YXRlYnVpbGQgKyBzdGF0ZVswXSkKICAgICAgICAgICAgICAgIG1ha2VfcmVsYXRpdmVfc3ltbGlu
ayhzcmNwYXRoLCBkc3RwYXRoLCBkKQogICAgICAgIGJiLmRlYnVnKDIsICJQcmVwYXJpbmcgdHJl
ZSAlcyBmb3IgcGFja2FnaW5nIGF0ICVzIiAlIChzdGF0ZVsxXSwgc3N0YXRlYnVpbGQgKyBzdGF0
ZVswXSkpCiAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzdGF0ZVsxXSwgc3N0YXRlYnVpbGQgKyBz
dGF0ZVswXSkKCiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKQogICAgZm9y
IHBsYWluIGluIHNzWydwbGFpbmRpcnMnXToKICAgICAgICBwZGlyID0gcGxhaW4ucmVwbGFjZSh3
b3JrZGlyLCBzc3RhdGVidWlsZCkKICAgICAgICBiYi5ta2RpcmhpZXIocGxhaW4pCiAgICAgICAg
YmIubWtkaXJoaWVyKHBkaXIpCiAgICAgICAgb2UucGF0aC5jb3B5dHJlZShwbGFpbiwgcGRpcikK
CiAgICBkLnNldFZhcignU1NUQVRFX0JVSUxERElSJywgc3N0YXRlYnVpbGQpCiAgICBkLnNldFZh
cignU1NUQVRFX1BLRycsIHNzdGF0ZXBrZykKICAgIHNzdGF0ZV9oYXJkY29kZV9wYXRoKGQpCiAg
ICBiYi5idWlsZC5leGVjX2Z1bmMoJ3NzdGF0ZV9jcmVhdGVfcGFja2FnZScsIGQpCgogICAgYmIu
c2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICIuc2lnaW5mbyIsIGQpCgogICAgcmV0
dXJuCn0KCgpweXRob24gZG9fcG9wdWxhdGVfbGljICgpIHsKICAgICIiIgogICAgUG9wdWxhdGUg
TElDRU5TRV9ESVJFQ1RPUlkgd2l0aCBsaWNlbnNlcy4KICAgICIiIgogICAgaW1wb3J0IHNodXRp
bAogICAgaW1wb3J0IG9lLmxpY2Vuc2UKCiAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCiAg
ICBmb3IgcGFja2FnZSBpbiBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKToKICAgICAgICBpZiBk
LmdldFZhcignTElDRU5TRV8nICsgcG4gKyAnLScgKyBwYWNrYWdlLCBUcnVlKToKICAgICAgICAg
ICAgbGljZW5zZV90eXBlcyA9IGxpY2Vuc2VfdHlwZXMgKyAnICYgJyArIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdMSUNFTlNFXycgKyBwbiArICctJyArIHBhY2thZ2Us
IFRydWUpCgogICAgI0lmIHdlIGdldCBoZXJlIHdpdGggbm8gbGljZW5zZSB0eXBlcywgdGhlbiB0
aGF0IG1lYW5zIHdlIGhhdmUgYSByZWNpcGUKICAgICNsZXZlbCBsaWNlbnNlLiBJZiBzbywgd2Ug
Z3JhYiBvbmx5IHRob3NlLgogICAgdHJ5OgogICAgICAgIGxpY2Vuc2VfdHlwZXMKICAgIGV4Y2Vw
dCBOYW1lRXJyb3I6CiAgICAgICAgIyBBbGwgdGhlIGxpY2Vuc2UgdHlwZXMgYXQgdGhlIHJlY2lw
ZSBsZXZlbAogICAgICAgIGxpY2Vuc2VfdHlwZXMgPSBkLmdldFZhcignTElDRU5TRScsIFRydWUp
CgogICAgIyBBbGwgdGhlIGxpY2Vuc2UgZmlsZXMgZm9yIHRoZSBwYWNrYWdlCiAgICBsaWNfZmls
ZXMgPSBkLmdldFZhcignTElDX0ZJTEVTX0NIS1NVTScsIFRydWUpCiAgICBwbiA9IGQuZ2V0VmFy
KCdQTicsIFRydWUpCiAgICAjIFRoZSBiYXNlIGRpcmVjdG9yeSB3ZSB3cmFuZ2xlIGxpY2Vuc2Vz
IHRvCiAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNTU1RBVEVESVInLCBU
cnVlKSwgcG4pCiAgICAjIFRoZSBsaWNlbnNlIGZpbGVzIGFyZSBsb2NhdGVkIGluIFMvTElDX0ZJ
TEVfQ0hFQ0tTVU0uCiAgICBzcmNkaXIgPSBkLmdldFZhcignUycsIFRydWUpCiAgICAjIERpcmVj
dG9yeSB3ZSBzdG9yZSB0aGUgZ2VuZXJpYyBsaWNlbnNlcyBhcyBzZXQgaW4gdGhlIGRpc3RybyBj
b25maWd1cmF0aW9uCiAgICBnZW5lcmljX2RpcmVjdG9yeSA9IGQuZ2V0VmFyKCdDT01NT05fTElD
RU5TRV9ESVInLCBUcnVlKQogICAgbGljZW5zZV9zb3VyY2VfZGlycyA9IFtdCiAgICBsaWNlbnNl
X3NvdXJjZV9kaXJzLmFwcGVuZChnZW5lcmljX2RpcmVjdG9yeSkKICAgIHRyeToKICAgICAgICBh
ZGRpdGlvbmFsX2xpY19kaXJzID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRElSJywgVHJ1ZSkuc3BsaXQo
KQogICAgICAgIGZvciBsaWNfZGlyIGluIGFkZGl0aW9uYWxfbGljX2RpcnM6CiAgICAgICAgICAg
IGxpY2Vuc2Vfc291cmNlX2RpcnMuYXBwZW5kKGxpY19kaXIpCiAgICBleGNlcHQ6CiAgICAgICAg
cGFzcwoKICAgIGNsYXNzIEZpbmRWaXNpdG9yKG9lLmxpY2Vuc2UuTGljZW5zZVZpc2l0b3IpOgog
ICAgICAgIGRlZiB2aXNpdF9TdHIoc2VsZiwgbm9kZSk6CiAgICAgICAgICAgICMKICAgICAgICAg
ICAgIyBVbnRpbCBJIGZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoCiAgICAgICAgICAgICMgdGhl
IHR3byBtb2RpZmllcnMgSSBzdXBwb3J0IChvciBncmVhdGVyID0gKwogICAgICAgICAgICAjIGFu
ZCAid2l0aCBleGNlcHRpb25zIiBiZWluZyAqCiAgICAgICAgICAgICMgd2UnbGwganVzdCBzdHJp
cCBvdXQgdGhlIG1vZGlmaWVyIGFuZCBwdXQKICAgICAgICAgICAgIyB0aGUgYmFzZSBsaWNlbnNl
LgogICAgICAgICAgICBmaW5kX2xpY2Vuc2Uobm9kZS5zLnJlcGxhY2UoIisiLCAiIikucmVwbGFj
ZSgiKiIsICIiKSkKICAgICAgICAgICAgc2VsZi5nZW5lcmljX3Zpc2l0KG5vZGUpCgogICAgZGVm
IGZpbmRfbGljZW5zZShsaWNlbnNlX3R5cGUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgYmIu
bWtkaXJoaWVyKGdlbl9saWNfZGVzdCkKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHBhc3MK
ICAgICAgICBzcGR4X2dlbmVyaWMgPSBOb25lCiAgICAgICAgbGljZW5zZV9zb3VyY2UgPSBOb25l
CiAgICAgICAgIyBJZiB0aGUgZ2VuZXJpYyBkb2VzIG5vdCBleGlzdCB3ZSBuZWVkIHRvIGNoZWNr
IHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBTUERYIG1hcHBpbmcgdG8gaXQKICAgICAgICBmb3IgbGlj
X2RpciBpbiBsaWNlbnNlX3NvdXJjZV9kaXJzOgogICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5p
c2ZpbGUob3MucGF0aC5qb2luKGxpY19kaXIsIGxpY2Vuc2VfdHlwZSkpOgogICAgICAgICAgICAg
ICAgaWYgZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGxpY2Vuc2VfdHlwZSkgIT0gTm9u
ZToKICAgICAgICAgICAgICAgICAgICAjIEdyZWF0LCB0aGVyZSBpcyBhbiBTUERYTElDRU5TRU1B
UC4gV2UgY2FuIGNvcHkhCiAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIldlIG5lZWQg
dG8gdXNlIGEgU1BEWExJQ0VOU0VNQVAgZm9yICVzIiAlIChsaWNlbnNlX3R5cGUpKQogICAgICAg
ICAgICAgICAgICAgIHNwZHhfZ2VuZXJpYyA9IGQuZ2V0VmFyRmxhZygnU1BEWExJQ0VOU0VNQVAn
LCBsaWNlbnNlX3R5cGUpCiAgICAgICAgICAgICAgICAgICAgbGljZW5zZV9zb3VyY2UgPSBsaWNf
ZGlyCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlz
ZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgbGljZW5zZV90eXBlKSk6CiAgICAgICAgICAgICAg
ICBzcGR4X2dlbmVyaWMgPSBsaWNlbnNlX3R5cGUKICAgICAgICAgICAgICAgIGxpY2Vuc2Vfc291
cmNlID0gbGljX2RpcgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgaWYgc3BkeF9nZW5l
cmljIGFuZCBsaWNlbnNlX3NvdXJjZToKICAgICAgICAgICAgIyB3ZSByZWFsbHkgc2hvdWxkIGNv
cHkgdG8gZ2VuZXJpY18gKyBzcGR4X2dlbmVyaWMsIGhvd2V2ZXIsIHRoYXQgZW5kcyB1cCBtZXNz
aW5nIHRoZSBtYW5pZmVzdAogICAgICAgICAgICAjIGF1ZGl0IHVwLiBUaGlzIHNob3VsZCBiZSBm
aXhlZCBpbiBlbWl0X3BrZ2RhdGEgKG9yLCB3ZSBhY3R1YWxseSBnb3QgYW5kIGZpeCBhbGwgdGhl
IHJlY2lwZXMpCgogICAgICAgICAgICBiYi5jb3B5ZmlsZShvcy5wYXRoLmpvaW4obGljZW5zZV9z
b3VyY2UsIHNwZHhfZ2VuZXJpYyksIG9zLnBhdGguam9pbihvcy5wYXRoLmpvaW4oZC5nZXRWYXIo
J0xJQ1NTVEFURURJUicsIFRydWUpLCBwbiksICJnZW5lcmljXyIgKyBsaWNlbnNlX3R5cGUpKQog
ICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKG9zLnBhdGguam9p
bihkLmdldFZhcignTElDU1NUQVRFRElSJywgVHJ1ZSksIHBuKSwgImdlbmVyaWNfIiArIGxpY2Vu
c2VfdHlwZSkpOgogICAgICAgICAgICAjIElmIHRoZSBjb3B5IGRpZG4ndCBvY2N1ciwgc29tZXRo
aW5nIGhvcnJpYmxlIHdlbnQgd3JvbmcgYW5kIHdlIGZhaWwgb3V0CiAgICAgICAgICAgICAgICBi
Yi53YXJuKCIlcyBmb3IgJXMgY291bGQgbm90IGJlIGNvcGllZCBmb3Igc29tZSByZWFzb24uIEl0
IG1heSBub3QgZXhpc3QuIFdBUk4gZm9yIG5vdy4iICUgKHNwZHhfZ2VuZXJpYywgcG4pKQogICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICMgQW5kIGhlcmUgaXMgd2hlcmUgd2Ugd2FybiBwZW9wbGUg
dGhhdCB0aGVpciBsaWNlbnNlcyBhcmUgbG91c3kKICAgICAgICAgICAgYmIud2FybigiJXM6IE5v
IGdlbmVyaWMgbGljZW5zZSBmaWxlIGV4aXN0cyBmb3I6ICVzIGluIGFueSBwcm92aWRlciIgJSAo
cG4sIGxpY2Vuc2VfdHlwZSkpCiAgICAgICAgICAgIHBhc3MKCiAgICB0cnk6CiAgICAgICAgYmIu
bWtkaXJoaWVyKGRlc3RkaXIpCiAgICBleGNlcHQ6CiAgICAgICAgcGFzcwoKICAgIGlmIG5vdCBn
ZW5lcmljX2RpcmVjdG9yeToKICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJDT01N
T05fTElDRU5TRV9ESVIgaXMgdW5zZXQuIFBsZWFzZSBzZXQgdGhpcyBpbiB5b3VyIGRpc3RybyBj
b25maWciKQoKICAgIGlmIG5vdCBsaWNfZmlsZXM6CiAgICAgICAgIyBObyByZWNpcGUgc2hvdWxk
IGhhdmUgYW4gaW52YWxpZCBsaWNlbnNlIGZpbGUuIFRoaXMgaXMgY2hlY2tlZCBlbHNlCiAgICAg
ICAgIyB3aGVyZSwgYnV0IGxldCdzIGJlIHBlZGFudGljCiAgICAgICAgYmIubm90ZShwbiArICI6
IFJlY2lwZSBmaWxlIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uLiIpCiAg
ICAgICAgcmV0dXJuIFRydWUKCiAgICBmb3IgdXJsIGluIGxpY19maWxlcy5zcGxpdCgpOgogICAg
ICAgICh0eXBlLCBob3N0LCBwYXRoLCB1c2VyLCBwc3dkLCBwYXJtKSA9IGJiLmRlY29kZXVybCh1
cmwpCiAgICAgICAgIyBXZSB3YW50IHRoZSBsaWNlbnNlIGZpbGUgdG8gYmUgY29waWVkIGludG8g
dGhlIGRlc3RpbmF0aW9uCiAgICAgICAgc3JjbGljZmlsZSA9IG9zLnBhdGguam9pbihzcmNkaXIs
IHBhdGgpCiAgICAgICAgcmV0ID0gYmIuY29weWZpbGUoc3JjbGljZmlsZSwgb3MucGF0aC5qb2lu
KGRlc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUocGF0aCkpKQogICAgICAgICMgSWYgdGhlIGNvcHkg
ZGlkbid0IG9jY3VyLCBzb21ldGhpbmcgaG9ycmlibGUgd2VudCB3cm9uZyBhbmQgd2UgZmFpbCBv
dXQKICAgICAgICBpZiBub3QgcmV0OgogICAgICAgICAgICBiYi53YXJuKCIlcyBjb3VsZCBub3Qg
YmUgY29waWVkIGZvciBzb21lIHJlYXNvbi4gSXQgbWF5IG5vdCBleGlzdC4gV0FSTiBmb3Igbm93
LiIgJSBzcmNsaWNmaWxlKQoKICAgIHYgPSBGaW5kVmlzaXRvcigpCiAgICB0cnk6CiAgICAgICAg
di52aXNpdF9zdHJpbmcobGljZW5zZV90eXBlcykKICAgIGV4Y2VwdCBvZS5saWNlbnNlLkludmFs
aWRMaWNlbnNlIGFzIGV4YzoKICAgICAgICBiYi5mYXRhbCgnJXM6ICVzJyAlIChkLmdldFZhcign
UEYnLCBUcnVlKSwgZXhjKSkKICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKICAgICAgICBiYi53YXJu
KCIlczogRmFpbGVkIHRvIHBhcnNlIGl0J3MgTElDRU5TRSBmaWVsZC4iICUgKGQuZ2V0VmFyKCdQ
RicsIFRydWUpKSkKCn0KCgpweXRob24gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IgKCkgewpkZWYg
cGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoZXJyb3JfY2xhc3MsIGVycm9yX21zZywgZCk6CiAgICBw
YWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVycm9yX21zZywgZCkKICAgIGlmIGVycm9yX2NsYXNzIGlu
IChkLmdldFZhcigiRVJST1JfUUEiLCBUcnVlKSBvciAiIikuc3BsaXQoKToKICAgICAgICBiYi5l
cnJvcigiUUEgSXNzdWU6ICVzIiAlIGVycm9yX21zZykKICAgICAgICByZXR1cm4gRmFsc2UKICAg
IGVsc2U6CiAgICAgICAgYmIud2FybigiUUEgSXNzdWU6ICVzIiAlIGVycm9yX21zZykKICAgICAg
ICByZXR1cm4gVHJ1ZQp9CgoKcHl0aG9uIGRvX2ZldGNoICgpIHsKICAgIGJiLmJ1aWxkLmV4ZWNf
ZnVuYygnYmFzZV9kb19mZXRjaCcsIGQpCn0KCgpweXRob24gYWxsX211bHRpbGliX3R1bmVfdmFs
dWVzICgpIHsKZGVmIGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCB2YXIsIHVuaXF1ZSA9IFRy
dWUsIG5lZWRfc3BsaXQgPSBUcnVlLCBkZWxpbSA9ICcgJyk6CiAgICAiIiJSZXR1cm4gYSBzdHJp
bmcgb2YgYWxsICR7dmFyfSBpbiBhbGwgbXVsdGlsaWIgdHVuZSBjb25maWd1cmF0aW9uIiIiCiAg
ICB2YWx1ZXMgPSBbXQogICAgdmFsdWUgPSBkLmdldFZhcih2YXIsIFRydWUpIG9yICIiCiAgICBp
ZiB2YWx1ZSAhPSAiIjoKICAgICAgICBpZiBuZWVkX3NwbGl0OgogICAgICAgICAgICBmb3IgaXRl
bSBpbiB2YWx1ZS5zcGxpdChkZWxpbSk6CiAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGl0
ZW0pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZSkKICAgIHZh
cmlhbnRzID0gZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIiwgVHJ1ZSkgb3IgIiIKICAgIGZv
ciBpdGVtIGluIHZhcmlhbnRzLnNwbGl0KCk6CiAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5j
cmVhdGVDb3B5KGQpCiAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJ
REVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIGl0ZW0KICAgICAgICBsb2Nh
bGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCiAgICAgICAgYmIuZGF0YS51cGRh
dGVfZGF0YShsb2NhbGRhdGEpCiAgICAgICAgdmFsdWUgPSBsb2NhbGRhdGEuZ2V0VmFyKHZhciwg
VHJ1ZSkgb3IgIiIKICAgICAgICBpZiB2YWx1ZSAhPSAiIjoKICAgICAgICAgICAgaWYgbmVlZF9z
cGxpdDoKICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlLnNwbGl0KGRlbGltKToKICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGl0ZW0pCiAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKQogICAgaWYgdW5pcXVlOgogICAgICAg
ICN3ZSBkbyB0aGlzIHRvIGtlZXAgb3JkZXIgYXMgbXVjaCBhcyBwb3NzaWJsZQogICAgICAgIHJl
dCA9IFtdCiAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKICAgICAgICAgICAgaWYgbm90IHZh
bHVlIGluIHJldDoKICAgICAgICAgICAgICAgIHJldC5hcHBlbmQodmFsdWUpCiAgICBlbHNlOgog
ICAgICAgIHJldCA9IHZhbHVlcwogICAgcmV0dXJuICIgIi5qb2luKHJldCl9CgoKcHl0aG9uIHNl
dF90aW1lZGF0YSAoKSB7CmRlZiBzZXRfdGltZWRhdGEodmFyLCBkYXRhKToKICAgIGltcG9ydCB0
aW1lCiAgICB0aW1lID0gdGltZS50aW1lKCkKICAgIGNwdXRpbWUgPSBnZXRfY3B1dGltZSgpCiAg
ICBwcm9jdGltZSA9IGdldF9wcm9jZXNzX2NwdXRpbWUob3MuZ2V0cGlkKCkpCiAgICBkYXRhLnNl
dFZhcih2YXIsICh0aW1lLCBjcHV0aW1lLCBwcm9jdGltZSkpCn0KCgpweXRob24gcGFja2FnZV9n
ZXRfYXV0b19wciAoKSB7CiAgICAjIHBlciByZWNpcGUgUFJTRVJWX0hPU1QgUFJTRVJWX1BPUlQK
ICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKICAgIGhvc3QgPSBkLmdldFZhcigiUFJTRVJW
X0hPU1RfIiArIHBuLCBUcnVlKQogICAgcG9ydCA9IGQuZ2V0VmFyKCJQUlNFUlZfUE9SVF8iICsg
cG4sIFRydWUpCiAgICBpZiBub3QgKGhvc3QgaXMgTm9uZSk6CiAgICAgICAgZC5zZXRWYXIoIlBS
U0VSVl9IT1NUIiwgaG9zdCkKICAgIGlmIG5vdCAocG9ydCBpcyBOb25lKToKICAgICAgICBkLnNl
dFZhcigiUFJTRVJWX1BPUlQiLCBwb3J0KQogICAgaWYgZC5nZXRWYXIoJ1VTRV9QUl9TRVJWJywg
VHJ1ZSkgIT0gIjAiOgogICAgICAgIHRyeToKICAgICAgICAgICAgYXV0b19wcj1wcnNlcnZfZ2V0
X3ByX2F1dG8oZCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGJi
LmZhdGFsKCJDYW4gTk9UIGdldCBQUkFVVE8sIGV4Y2VwdGlvbiAlcyIgJSAgc3RyKGUpKQogICAg
ICAgICAgICByZXR1cm4KICAgICAgICBpZiBhdXRvX3ByIGlzIE5vbmU6CiAgICAgICAgICAgIGlm
IGQuZ2V0VmFyKCdQUlNFUlZfTE9DS0RPV04nLCBUcnVlKToKICAgICAgICAgICAgICAgIGJiLmZh
dGFsKCJDYW4gTk9UIGdldCBQUkFVVE8gZnJvbSBsb2NrZG93biBleHBvcnRlZCBmaWxlIikKICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW4gTk9UIGdldCBQUkFV
VE8gZnJvbSByZW1vdGUgUFIgc2VydmljZSIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGQu
c2V0VmFyKCdQUkFVVE8nLHN0cihhdXRvX3ByKSkKfQoKCnB5dGhvbiByZWFkX3NobGliZGVwcyAo
KSB7CiAgICBwa2dsaWJkZXBzID0gcmVhZF9saWJkZXBfZmlsZXMoZCkKCiAgICBwYWNrYWdlcyA9
IGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpLnNwbGl0KCkKICAgIGZvciBwa2cgaW4gcGFja2Fn
ZXM6CiAgICAgICAgcmRlcGVuZHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9ucyhkLmdl
dFZhcignUkRFUEVORFNfJyArIHBrZywgRmFsc2UpIG9yIGQuZ2V0VmFyKCdSREVQRU5EUycsIEZh
bHNlKSBvciAiIikKICAgICAgICBmb3IgZGVwIGluIHBrZ2xpYmRlcHNbcGtnXToKICAgICAgICAg
ICAgcmRlcGVuZHNbZGVwXSA9ICIiCiAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBwa2cs
IGJiLnV0aWxzLmpvaW5fZGVwcyhyZGVwZW5kcywgY29tbWFzZXA9RmFsc2UpKQp9CgoKcHl0aG9u
IGJhc2VfaWZlbHNlICgpIHsKZGVmIGJhc2VfaWZlbHNlKGNvbmRpdGlvbiwgaWZ0cnVlID0gVHJ1
ZSwgaWZmYWxzZSA9IEZhbHNlKToKICAgIHJldHVybiBvZS51dGlscy5pZmVsc2UoY29uZGl0aW9u
LCBpZnRydWUsIGlmZmFsc2UpCn0KCgpweXRob24gcGFja2FnZV9xYV9jaGVja19saWNlbnNlICgp
IHsKZGVmIHBhY2thZ2VfcWFfY2hlY2tfbGljZW5zZSh3b3JrZGlyLCBkKToKICAgICIiIgogICAg
Q2hlY2sgZm9yIGNoYW5nZXMgaW4gdGhlIGxpY2Vuc2UgZmlsZXMKICAgICIiIgogICAgaW1wb3J0
IHRlbXBmaWxlCiAgICBzYW5lID0gVHJ1ZQoKICAgIGxpY19maWxlcyA9IGQuZ2V0VmFyKCdMSUNf
RklMRVNfQ0hLU1VNJywgVHJ1ZSkKICAgIGxpYyA9IGQuZ2V0VmFyKCdMSUNFTlNFJywgVHJ1ZSkK
ICAgIHBuID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKCiAgICBpZiBsaWMgPT0gIkNMT1NFRCI6CiAg
ICAgICAgcmV0dXJuIFRydWUKCiAgICBpZiBub3QgbGljX2ZpbGVzOgogICAgICAgICMganVzdCB0
aHJvdyBhIHdhcm5pbmcgbm93LiBPbmNlIGxpY2Vuc2luZyBkYXRhIGluIGVudGVyZWQgZm9yIGVu
b3VnaCBvZiB0aGUgcmVjaXBlcywKICAgICAgICAjIHRoaXMgd2lsbCBiZSBjb252ZXJ0ZWQgaW50
byBlcnJvciBhbmQgRmFsc2Ugd2lsbCBiZSByZXR1cm5lZC4KICAgICAgICBiYi5lcnJvcihwbiAr
ICI6IFJlY2lwZSBmaWxlIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChM
SUNfRklMRVNfQ0hLU1VNKSIpCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgc3JjZGlyID0gZC5n
ZXRWYXIoJ1MnLCBUcnVlKQoKICAgIGZvciB1cmwgaW4gbGljX2ZpbGVzLnNwbGl0KCk6CiAgICAg
ICAgKHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBzd2QsIHBhcm0pID0gYmIuZGVjb2RldXJsKHVy
bCkKICAgICAgICBzcmNsaWNmaWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgcGF0aCkKICAgICAg
ICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3JjbGljZmlsZSk6CiAgICAgICAgICAgIHJhaXNlIGJi
LmJ1aWxkLkZ1bmNGYWlsZWQoIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBwb2ludHMgdG8gYW4g
aW52YWxpZCBmaWxlOiAiICsgc3JjbGljZmlsZSkKCiAgICAgICAgaWYgJ21kNScgbm90IGluIHBh
cm06CiAgICAgICAgICAgIGJiLmVycm9yKHBuICsgIjogbWQ1IGNoZWNrc3VtIGlzIG5vdCBzcGVj
aWZpZWQgZm9yICIsIHVybCkKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgYmVnaW5s
aW5lLCBlbmRsaW5lID0gMCwgMAogICAgICAgIGlmICdiZWdpbmxpbmUnIGluIHBhcm06CiAgICAg
ICAgICAgIGJlZ2lubGluZSA9IGludChwYXJtWydiZWdpbmxpbmUnXSkKICAgICAgICBpZiAnZW5k
bGluZScgaW4gcGFybToKICAgICAgICAgICAgZW5kbGluZSA9IGludChwYXJtWydlbmRsaW5lJ10p
CgogICAgICAgIGlmIChub3QgYmVnaW5saW5lKSBhbmQgKG5vdCBlbmRsaW5lKToKICAgICAgICAg
ICAgbWQ1Y2hrc3VtID0gYmIudXRpbHMubWQ1X2ZpbGUoc3JjbGljZmlsZSkKICAgICAgICBlbHNl
OgogICAgICAgICAgICBmaSA9IG9wZW4oc3JjbGljZmlsZSwgJ3InKQogICAgICAgICAgICBmbyA9
IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3YicsIHByZWZpeD0ncG9reS4nLCBz
dWZmaXg9Jy50bXAnLCBkZWxldGU9RmFsc2UpCiAgICAgICAgICAgIHRtcGxpY2ZpbGUgPSBmby5u
YW1lOwogICAgICAgICAgICBsaW5lbm8gPSAwCiAgICAgICAgICAgIGxpbmVzb3V0ID0gMAogICAg
ICAgICAgICBmb3IgbGluZSBpbiBmaToKICAgICAgICAgICAgICAgIGxpbmVubyArPSAxCiAgICAg
ICAgICAgICAgICBpZiAobGluZW5vID49IGJlZ2lubGluZSk6CiAgICAgICAgICAgICAgICAgICAg
aWYgKChsaW5lbm8gPD0gZW5kbGluZSkgb3Igbm90IGVuZGxpbmUpOgogICAgICAgICAgICAgICAg
ICAgICAgICBmby53cml0ZShsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICBsaW5lc291dCAr
PSAxCiAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWsKICAgICAgICAgICAgZm8uZmx1c2goKQogICAgICAgICAgICBmby5jbG9zZSgpCiAgICAgICAg
ICAgIGZpLmNsb3NlKCkKICAgICAgICAgICAgbWQ1Y2hrc3VtID0gYmIudXRpbHMubWQ1X2ZpbGUo
dG1wbGljZmlsZSkKICAgICAgICAgICAgb3MudW5saW5rKHRtcGxpY2ZpbGUpCgogICAgICAgIGlm
IHBhcm1bJ21kNSddID09IG1kNWNoa3N1bToKICAgICAgICAgICAgYmIubm90ZSAocG4gKyAiOiBt
ZDUgY2hlY2tzdW0gbWF0Y2hlZCBmb3IgIiwgdXJsKQogICAgICAgIGVsc2U6CiAgICAgICAgICAg
IGJiLmVycm9yIChwbiArICI6IG1kNSBkYXRhIGlzIG5vdCBtYXRjaGluZyBmb3IgIiwgdXJsKQog
ICAgICAgICAgICBiYi5lcnJvciAocG4gKyAiOiBUaGUgbmV3IG1kNSBjaGVja3N1bSBpcyAiLCBt
ZDVjaGtzdW0pCiAgICAgICAgICAgIGJiLmVycm9yIChwbiArICI6IENoZWNrIGlmIHRoZSBsaWNl
bnNlIGluZm9ybWF0aW9uIGhhcyBjaGFuZ2VkIGluIikKICAgICAgICAgICAgc2FuZSA9IEZhbHNl
CgogICAgcmV0dXJuIHNhbmUKfQoKCnB5dGhvbiBiYXNlX2RvX2ZldGNoICgpIHsKCiAgICBzcmNf
dXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIGlmIGxl
bihzcmNfdXJpKSA9PSAwOgogICAgICAgIHJldHVybgoKICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEu
Y3JlYXRlQ29weShkKQogICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgdHJ5
OgogICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgbG9jYWxkYXRhKQog
ICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQogICAgZXhjZXB0IGJiLmZldGNoMi5CQkZldGNoRXhj
ZXB0aW9uLCBlOgogICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoZSkKfQoKCnB5dGhv
biBkb19wYWNrYWdlX3FhICgpIHsKICAgIGltcG9ydCBzdWJwcm9jZXNzCgogICAgYmIubm90ZSgi
RE8gUEFDS0FHRSBRQSIpCgogICAgbG9nZGlyID0gZC5nZXRWYXIoJ1QnLCBUcnVlKQogICAgcGtn
ID0gZC5nZXRWYXIoJ1BOJywgVHJ1ZSkKCiAgICAjIENoZWNrIHRoZSBjb21waWxlIGxvZyBmb3Ig
aG9zdCBjb250YW1pbmF0aW9uCiAgICBjb21waWxlbG9nID0gb3MucGF0aC5qb2luKGxvZ2Rpciwi
bG9nLmRvX2NvbXBpbGUiKQoKICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbXBpbGVsb2cpOgogICAg
ICAgIHN0YXRlbWVudCA9ICJncmVwIC1lICdDUk9TUyBDT01QSUxFIEJhZG5lc3M6JyAtZSAnaXMg
dW5zYWZlIGZvciBjcm9zcy1jb21waWxhdGlvbicgJXMgPiAvZGV2L251bGwiICUgY29tcGlsZWxv
ZwogICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpID09IDA6
CiAgICAgICAgICAgIGJiLndhcm4oIiVzOiBUaGUgY29tcGlsZSBsb2cgaW5kaWNhdGVzIHRoYXQg
aG9zdCBpbmNsdWRlIGFuZC9vciBsaWJyYXJ5IHBhdGhzIHdlcmUgdXNlZC5cbiBcCiAgICAgICAg
UGxlYXNlIGNoZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgKHBrZywg
Y29tcGlsZWxvZykpCgogICAgIyBDaGVjayB0aGUgaW5zdGFsbCBsb2cgZm9yIGhvc3QgY29udGFt
aW5hdGlvbgogICAgaW5zdGFsbGxvZyA9IG9zLnBhdGguam9pbihsb2dkaXIsImxvZy5kb19pbnN0
YWxsIikKCiAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsbG9nKToKICAgICAgICBzdGF0ZW1l
bnQgPSAiZ3JlcCAtZSAnQ1JPU1MgQ09NUElMRSBCYWRuZXNzOicgLWUgJ2lzIHVuc2FmZSBmb3Ig
Y3Jvc3MtY29tcGlsYXRpb24nICVzID4gL2Rldi9udWxsIiAlIGluc3RhbGxsb2cKICAgICAgICBp
ZiBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgogICAgICAgICAg
ICBiYi53YXJuKCIlczogVGhlIGluc3RhbGwgbG9nIGluZGljYXRlcyB0aGF0IGhvc3QgaW5jbHVk
ZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3ZXJlIHVzZWQuXG4gXAogICAgICAgIFBsZWFzZSBjaGVj
ayB0aGUgbG9nICclcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAlIChwa2csIGluc3RhbGxsb2cp
KQoKICAgICMgU2NhbiB0aGUgcGFja2FnZXMuLi4KICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtH
REVTVCcsIFRydWUpCiAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpCgog
ICAgIyBubyBwYWNrYWdlcyBzaG91bGQgYmUgc2Nhbm5lZAogICAgaWYgbm90IHBhY2thZ2VzOgog
ICAgICAgIHJldHVybgoKICAgIHRlc3RtYXRyaXggPSBkLmdldFZhckZsYWdzKCJRQVBBVEhURVNU
IikKCiAgICBnID0gZ2xvYmFscygpCiAgICB3YWxrX3NhbmUgPSBUcnVlCiAgICByZGVwZW5kc19z
YW5lID0gVHJ1ZQogICAgZm9yIHBhY2thZ2UgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICBz
a2lwID0gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcGFja2FnZSwgVHJ1ZSkgb3IgIiIpLnNw
bGl0KCkKICAgICAgICBpZiBza2lwOgogICAgICAgICAgICBiYi5ub3RlKCJQYWNrYWdlICVzIHNr
aXBwaW5nIFFBIHRlc3RzOiAlcyIgJSAocGFja2FnZSwgc3RyKHNraXApKSkKICAgICAgICB3YXJu
Y2hlY2tzID0gW10KICAgICAgICBmb3IgdyBpbiAoZC5nZXRWYXIoIldBUk5fUUEiLCBUcnVlKSBv
ciAiIikuc3BsaXQoKToKICAgICAgICAgICAgaWYgdyBpbiBza2lwOgogICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICBpZiB3IGluIHRlc3RtYXRyaXggYW5kIHRlc3RtYXRyaXhbd10g
aW4gZzoKICAgICAgICAgICAgICAgIHdhcm5jaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFt3XV0p
CiAgICAgICAgZXJyb3JjaGVja3MgPSBbXQogICAgICAgIGZvciBlIGluIChkLmdldFZhcigiRVJS
T1JfUUEiLCBUcnVlKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgaWYgZSBpbiBza2lwOgog
ICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBpZiBlIGluIHRlc3RtYXRyaXggYW5k
IHRlc3RtYXRyaXhbZV0gaW4gZzoKICAgICAgICAgICAgICAgIGVycm9yY2hlY2tzLmFwcGVuZChn
W3Rlc3RtYXRyaXhbZV1dKQoKICAgICAgICBiYi5ub3RlKCJDaGVja2luZyBQYWNrYWdlOiAlcyIg
JSBwYWNrYWdlKQogICAgICAgIHBhdGggPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBhY2thZ2UpCiAg
ICAgICAgaWYgbm90IHBhY2thZ2VfcWFfd2FsayhwYXRoLCB3YXJuY2hlY2tzLCBlcnJvcmNoZWNr
cywgc2tpcCwgcGFja2FnZSwgZCk6CiAgICAgICAgICAgIHdhbGtfc2FuZSAgPSBGYWxzZQogICAg
ICAgIGlmIG5vdCBwYWNrYWdlX3FhX2NoZWNrX3JkZXBlbmRzKHBhY2thZ2UsIHBrZ2Rlc3QsIHNr
aXAsIGQpOgogICAgICAgICAgICByZGVwZW5kc19zYW5lID0gRmFsc2UKCgogICAgaWYgbm90IHdh
bGtfc2FuZSBvciBub3QgcmRlcGVuZHNfc2FuZToKICAgICAgICBiYi5mYXRhbCgiUUEgcnVuIGZv
dW5kIGZhdGFsIGVycm9ycy4gUGxlYXNlIGNvbnNpZGVyIGZpeGluZyB0aGVtLiIpCiAgICBiYi5u
b3RlKCJET05FIHdpdGggUEFDS0FHRSBRQSIpCn0KCgpweXRob24gZG9fcG9wdWxhdGVfc3lzcm9v
dCAoKSB7CiAgICAjCiAgICAjIGlmIGRvX3N0YWdlIGV4aXN0cywgd2UncmUgbGVnYWN5LiBJbiB0
aGF0IGNhc2UgcnVuIHRoZSBkb19zdGFnZSwKICAgICMgbW9kaWZ5IHRoZSBTWVNST09UX0RFU1RE
SVIgdmFyaWFibGUgYW5kIHRoZW4gcnVuIHRoZSBzdGFnaW5nIHByZXByb2Nlc3MKICAgICMgZnVu
Y3Rpb25zIGFnYWluc3Qgc3RhZ2luZyBkaXJlY3RseS4KICAgICMKICAgICMgT3RoZXJ3aXNlIHNl
dHVwIGEgZGVzdGRpciwgY29weSB0aGUgcmVzdWx0cyBmcm9tIGRvX2luc3RhbGwKICAgICMgYW5k
IHJ1biB0aGUgc3RhZ2luZyBwcmVwcm9jZXNzIGFnYWluc3QgdGhhdAogICAgIwoKICAgIGJiLmJ1
aWxkLmV4ZWNfZnVuYygic3lzcm9vdF9zdGFnZV9hbGwiLCBkKQogICAgZm9yIGYgaW4gKGQuZ2V0
VmFyKCdTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MnLCBUcnVlKSBvciAnJykuc3BsaXQoKToKICAg
ICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZiwgZCkKfQoKCnB5dGhvbiBfX2Fub255bW91cyAoKSB7
Ck5vbmV9CgoKcHl0aG9uIGJhc2VfcHJ1bmVfc3VmZml4ICgpIHsKZGVmIGJhc2VfcHJ1bmVfc3Vm
Zml4KHZhciwgc3VmZml4ZXMsIGQpOgogICAgcmV0dXJuIG9lLnV0aWxzLnBydW5lX3N1ZmZpeCh2
YXIsIHN1ZmZpeGVzLCBkKQp9CgoKcHl0aG9uIGRvX3BhY2thZ2VfcnBtICgpIHsKICAgIGRlZiBj
cmVhdF9zcnBtX2RpcihkKToKICAgICAgICBpZiBkLmdldFZhcignU09VUkNFX0FSQ0hJVkVfUEFD
S0FHRV9UWVBFJywgVHJ1ZSkgYW5kIGQuZ2V0VmFyKCdTT1VSQ0VfQVJDSElWRV9QQUNLQUdFX1RZ
UEUnLCBUcnVlKS51cHBlcigpID09ICdTUlBNJzoKICAgICAgICAgICAgY2xlYW5fbGljZW5zZXMg
PSBnZXRfbGljZW5zZXMoZCkKICAgICAgICAgICAgcGtnd3JpdGVzcnBtZGlyID0gYmIuZGF0YS5l
eHBhbmQoJy9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL2RlcGxveS9zb3VyY2Vz
L2RlcGxveS1zcnBtLyR7UEFDS0FHRV9BUkNIX0VYVEVORH0nLCBkKQogICAgICAgICAgICBwa2d3
cml0ZXNycG1kaXIgPSBwa2d3cml0ZXNycG1kaXIgKyAnLycgKyBjbGVhbl9saWNlbnNlcwogICAg
ICAgICAgICBiYi5ta2RpcmhpZXIocGtnd3JpdGVzcnBtZGlyKQogICAgICAgICAgICBvcy5jaG1v
ZChwa2d3cml0ZXNycG1kaXIsIDA3NTUpCiAgICAgICAgICAgIHJldHVybiBwa2d3cml0ZXNycG1k
aXIKCiAgICAjIFdlIG5lZWQgYSBzaW1wbGUgd2F5IHRvIHJlbW92ZSB0aGUgTUxQUkVGSVggZnJv
bSB0aGUgcGFja2FnZSBuYW1lLAogICAgIyBhbmQgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbi4uLgog
ICAgZGVmIHN0cmlwX211bHRpbGliKG5hbWUsIGQpOgogICAgICAgIG1sID0gZC5nZXRWYXIoIk1M
UFJFRklYIiwgVHJ1ZSkKICAgICAgICBpZiBtbCBhbmQgbmFtZSBhbmQgbGVuKG1sKSAhPSAwIGFu
ZCBuYW1lLmZpbmQobWwpID49IDA6CiAgICAgICAgICAgIHJldHVybiAiIi5qb2luKG5hbWUuc3Bs
aXQobWwpKQogICAgICAgIHJldHVybiBuYW1lCgogICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JL
RElSJywgVHJ1ZSkKICAgIG91dGRpciA9IGQuZ2V0VmFyKCdERVBMT1lfRElSX0lQSycsIFRydWUp
CiAgICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJywgVHJ1ZSkKICAgIHBrZ2QgPSBkLmdldFZh
cignUEtHRCcsIFRydWUpCiAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnLCBUcnVlKQog
ICAgaWYgbm90IHdvcmtkaXIgb3Igbm90IG91dGRpciBvciBub3QgcGtnZCBvciBub3QgdG1wZGly
OgogICAgICAgIGJiLmVycm9yKCJWYXJpYWJsZXMgaW5jb3JyZWN0bHkgc2V0LCB1bmFibGUgdG8g
cGFja2FnZSIpCiAgICAgICAgcmV0dXJuCgogICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FH
RVMnLCBUcnVlKQogICAgaWYgbm90IHBhY2thZ2VzIG9yIHBhY2thZ2VzID09ICcnOgogICAgICAg
IGJiLmRlYnVnKDEsICJObyBwYWNrYWdlczsgbm90aGluZyB0byBkbyIpCiAgICAgICAgcmV0dXJu
CgogICAgIyBDb25zdHJ1Y3QgdGhlIHNwZWMgZmlsZS4uLgogICAgc3JjbmFtZSAgICA9IHN0cmlw
X211bHRpbGliKGQuZ2V0VmFyKCdQTicsIFRydWUpLCBkKQogICAgb3V0c3BlY2ZpbGUgPSB3b3Jr
ZGlyICsgIi8iICsgc3JjbmFtZSArICIuc3BlYyIKICAgIGQuc2V0VmFyKCdPVVRTUEVDRklMRScs
IG91dHNwZWNmaWxlKQogICAgYmIuYnVpbGQuZXhlY19mdW5jKCd3cml0ZV9zcGVjZmlsZScsIGQp
CgogICAgIyBDb25zdHJ1Y3QgcGVyIGZpbGUgZGVwZW5kZW5jaWVzIGZpbGUKICAgIGRlZiBkdW1w
X2ZpbGVyZGVwcyh2YXJuYW1lLCBvdXRmaWxlLCBkKToKICAgICAgICBvdXRmaWxlLndyaXRlKCIj
IS91c3IvYmluL2VudiBweXRob25cblxuIikKICAgICAgICBvdXRmaWxlLndyaXRlKCIjIERlcGVu
ZGVuY3kgdGFibGVcbiIpCiAgICAgICAgb3V0ZmlsZS53cml0ZSgnZGVwcyA9IHtcbicpCiAgICAg
ICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICAgICBkZXBlbmRzZmxpc3Rf
a2V5ID0gJ0ZJTEUnICsgdmFybmFtZSArICdGTElTVCcgKyAiXyIgKyBwa2cKICAgICAgICAgICAg
ZGVwZW5kc2ZsaXN0ID0gKGQuZ2V0VmFyKGRlcGVuZHNmbGlzdF9rZXksIFRydWUpIG9yICIiKQog
ICAgICAgICAgICBmb3IgZGZpbGUgaW4gZGVwZW5kc2ZsaXN0LnNwbGl0KCk6CiAgICAgICAgICAg
ICAgICBrZXkgPSAiRklMRSIgKyB2YXJuYW1lICsgIl8iICsgZGZpbGUgKyAiXyIgKyBwa2cKICAg
ICAgICAgICAgICAgIGRlcGVuZHNfZGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25z
KGQuZ2V0VmFyKGtleSwgVHJ1ZSkgb3IgIiIpCiAgICAgICAgICAgICAgICBmaWxlID0gZGZpbGUu
cmVwbGFjZSgiQHVuZGVyc2NvcmVAIiwgIl8iKQogICAgICAgICAgICAgICAgZmlsZSA9IGZpbGUu
cmVwbGFjZSgiQGNsb3NlYnJhY2VAIiwgIl0iKQogICAgICAgICAgICAgICAgZmlsZSA9IGZpbGUu
cmVwbGFjZSgiQG9wZW5icmFjZUAiLCAiWyIpCiAgICAgICAgICAgICAgICBmaWxlID0gZmlsZS5y
ZXBsYWNlKCJAdGFiQCIsICJcdCIpCiAgICAgICAgICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNl
KCJAc3BhY2VAIiwgIiAiKQogICAgICAgICAgICAgICAgZmlsZSA9IGZpbGUucmVwbGFjZSgiQGF0
QCIsICJAIikKICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoJyInICsgcGtnZCArIGZpbGUg
KyAnIiA6ICInKQogICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRzX2RpY3Q6CiAgICAg
ICAgICAgICAgICAgICAgdmVyID0gZGVwZW5kc19kaWN0W2RlcF0KICAgICAgICAgICAgICAgICAg
ICBpZiBkZXAgYW5kIHZlcjoKICAgICAgICAgICAgICAgICAgICAgICAgdmVyID0gdmVyLnJlcGxh
Y2UoIigiLCIiKQogICAgICAgICAgICAgICAgICAgICAgICB2ZXIgPSB2ZXIucmVwbGFjZSgiKSIs
IiIpCiAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoZGVwICsgIiAiICsgdmVy
ICsgIiAiKQogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAg
IG91dGZpbGUud3JpdGUoZGVwICsgIiAiKQogICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgn
IixcbicpCiAgICAgICAgb3V0ZmlsZS53cml0ZSgnfVxuXG4nKQogICAgICAgIG91dGZpbGUud3Jp
dGUoImltcG9ydCBzeXNcbiIpCiAgICAgICAgb3V0ZmlsZS53cml0ZSgid2hpbGUgMTpcbiIpCiAg
ICAgICAgb3V0ZmlsZS53cml0ZSgiXHRsaW5lID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAo
KVxuIikKICAgICAgICBvdXRmaWxlLndyaXRlKCJcdGlmIG5vdCBsaW5lOlxuIikKICAgICAgICBv
dXRmaWxlLndyaXRlKCJcdFx0c3lzLmV4aXQoMClcbiIpCiAgICAgICAgb3V0ZmlsZS53cml0ZSgi
XHRpZiBsaW5lIGluIGRlcHM6XG4iKQogICAgICAgIG91dGZpbGUud3JpdGUoIlx0XHRwcmludChk
ZXBzW2xpbmVdICsgJ1xcbicpXG4iKQoKICAgICMgT0UtY29yZSBkZXBlbmRlbmNpZXMgYS5rLmEu
IFJQTSByZXF1aXJlcwogICAgb3V0ZGVwZW5kcyA9IHdvcmtkaXIgKyAiLyIgKyBzcmNuYW1lICsg
Ii5yZXF1aXJlcyIKCiAgICB0cnk6CiAgICAgICAgZnJvbSBfX2J1aWx0aW5fXyBpbXBvcnQgZmls
ZQogICAgICAgIGRlcGVuZHNmaWxlID0gZmlsZShvdXRkZXBlbmRzLCAndycpCiAgICBleGNlcHQg
T1NFcnJvcjoKICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3Bl
biBzcGVjIGZpbGUgZm9yIHdyaXRpbmcuIikKCiAgICBkdW1wX2ZpbGVyZGVwcygnUkRFUEVORFMn
LCBkZXBlbmRzZmlsZSwgZCkKCiAgICBkZXBlbmRzZmlsZS5jbG9zZSgpCiAgICBvcy5jaG1vZChv
dXRkZXBlbmRzLCAwNzU1KQoKICAgICMgT0UtY29yZSAvIFJQTSBQcm92aWRlcwogICAgb3V0cHJv
dmlkZXMgPSB3b3JrZGlyICsgIi8iICsgc3JjbmFtZSArICIucHJvdmlkZXMiCgogICAgdHJ5Ogog
ICAgICAgIGZyb20gX19idWlsdGluX18gaW1wb3J0IGZpbGUKICAgICAgICBwcm92aWRlc2ZpbGUg
PSBmaWxlKG91dHByb3ZpZGVzLCAndycpCiAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICByYWlz
ZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJ1bmFibGUgdG8gb3BlbiBzcGVjIGZpbGUgZm9yIHdyaXRp
bmcuIikKCiAgICBkdW1wX2ZpbGVyZGVwcygnUlBST1ZJREVTJywgcHJvdmlkZXNmaWxlLCBkKQoK
ICAgIHByb3ZpZGVzZmlsZS5jbG9zZSgpCiAgICBvcy5jaG1vZChvdXRwcm92aWRlcywgMDc1NSkK
CiAgICAjIFNldHVwIHRoZSBycG1idWlsZCBhcmd1bWVudHMuLi4KICAgIHJwbWJ1aWxkID0gZC5n
ZXRWYXIoJ1JQTUJVSUxEJywgVHJ1ZSkKICAgIHRhcmdldHN5cyA9IGQuZ2V0VmFyKCdUQVJHRVRf
U1lTJywgVHJ1ZSkKICAgIHRhcmdldHZlbmRvciA9IGQuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJywg
VHJ1ZSkKICAgIHBhY2thZ2VfYXJjaCA9IGQuZ2V0VmFyKCdQQUNLQUdFX0FSQ0gnLCBUcnVlKSBv
ciAiIgogICAgaWYgcGFja2FnZV9hcmNoIG5vdCBpbiAiYWxsIGFueSBub2FyY2giLnNwbGl0KCk6
CiAgICAgICAgbWxfcHJlZml4ID0gKGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICIiKS5y
ZXBsYWNlKCItIiwgIl8iKQogICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFX0FSQ0hfRVhURU5EJywg
bWxfcHJlZml4ICsgcGFja2FnZV9hcmNoKQogICAgZWxzZToKICAgICAgICBkLnNldFZhcignUEFD
S0FHRV9BUkNIX0VYVEVORCcsIHBhY2thZ2VfYXJjaCkKICAgIHBrZ3dyaXRlZGlyID0gZC5leHBh
bmQoJy9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5
LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL2RlcGxveS1ycG1zLyR7UEFDS0FHRV9BUkNI
X0VYVEVORH0nKQogICAgcGtnYXJjaCA9IGQuZXhwYW5kKCcke1BBQ0tBR0VfQVJDSF9FWFRFTkR9
LXBva3ktbGludXgtZ251ZWFiaScpCiAgICBtYWdpY2ZpbGUgPSBkLmV4cGFuZCgnL2hvbWUvbHNl
cmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFy
ZS9taXNjL21hZ2ljLm1nYycpCiAgICBiYi5ta2RpcmhpZXIocGtnd3JpdGVkaXIpCiAgICBvcy5j
aG1vZChwa2d3cml0ZWRpciwgMDc1NSkKCiAgICBjbWQgPSBycG1idWlsZAogICAgY21kID0gY21k
ICsgIiAtLW5vZGVwcyAtLXNob3J0LWNpcmN1aXQgLS10YXJnZXQgIiArIHBrZ2FyY2ggKyAiIC0t
YnVpbGRyb290ICIgKyBwa2dkCiAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfdG9wZGlyICIg
KyB3b3JrZGlyICsgIicgLS1kZWZpbmUgJ19ycG1kaXIgIiArIHBrZ3dyaXRlZGlyICsgIiciCiAg
ICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRfbmFtZV9mbXQgJSV7TkFNRX0tJSV7VkVS
U0lPTn0tJSV7UkVMRUFTRX0uJSV7QVJDSH0ucnBtJyIKICAgIGNtZCA9IGNtZCArICIgLS1kZWZp
bmUgJ191c2VfaW50ZXJuYWxfZGVwZW5kZW5jeV9nZW5lcmF0b3IgMCciCiAgICBjbWQgPSBjbWQg
KyAiIC0tZGVmaW5lICdfX2ZpbmRfcmVxdWlyZXMgIiArIG91dGRlcGVuZHMgKyAiJyIKICAgIGNt
ZCA9IGNtZCArICIgLS1kZWZpbmUgJ19fZmluZF9wcm92aWRlcyAiICsgb3V0cHJvdmlkZXMgKyAi
JyIKICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ191bnBhY2thZ2VkX2ZpbGVzX3Rlcm1pbmF0
ZV9idWlsZCAwJyIKICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ2RlYnVnX3BhY2thZ2UgJXtu
aWx9JyIKICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ19ycG1mY19tYWdpY19wYXRoICIgKyBt
YWdpY2ZpbGUgKyAiJyIKICAgIGNtZCA9IGNtZCArICIgLS1kZWZpbmUgJ190bXBwYXRoICIgKyB3
b3JrZGlyICsgIiciCiAgICBpZiBkLmdldFZhcignU09VUkNFX0FSQ0hJVkVfUEFDS0FHRV9UWVBF
JywgVHJ1ZSkgYW5kIGQuZ2V0VmFyKCdTT1VSQ0VfQVJDSElWRV9QQUNLQUdFX1RZUEUnLCBUcnVl
KS51cHBlcigpID09ICdTUlBNJzoKICAgICAgICBjbWRzcnBtID0gY21kICsgIiAtLWRlZmluZSAn
X3NvdXJjZWRpciAiICsgd29ya2RpciArICInIC0tZGVmaW5lICdfc3JjcnBtZGlyICIgKyBjcmVh
dF9zcnBtX2RpcihkKSArICInIgogICAgICAgIGNtZHNycG0gPSAnZmFrZXJvb3QgJyArIGNtZHNy
cG0gKyAiIC1icyAiICsgb3V0c3BlY2ZpbGUKICAgIGNtZCA9IGNtZCArICIgLWJiICIgKyBvdXRz
cGVjZmlsZQoKICAgICMgQnVpbGQgdGhlIHNvdXJjZSBycG0gcGFja2FnZSAhCiAgICBpZiBkLmdl
dFZhcignU09VUkNFX0FSQ0hJVkVfUEFDS0FHRV9UWVBFJywgVHJ1ZSkgYW5kIGQuZ2V0VmFyKCdT
T1VSQ0VfQVJDSElWRV9QQUNLQUdFX1RZUEUnLCBUcnVlKS51cHBlcigpID09ICdTUlBNJzoKICAg
ICAgICBkLnNldFZhcignU0JVSUxEU1BFQycsIGNtZHNycG0gKyAiXG4iKQogICAgICAgIGQuc2V0
VmFyRmxhZygnU0JVSUxEU1BFQycsICdmdW5jJywgJzEnKQogICAgICAgIGJiLmJ1aWxkLmV4ZWNf
ZnVuYygnU0JVSUxEU1BFQycsIGQpCgoKICAgICMgQnVpbGQgdGhlIHJwbSBwYWNrYWdlIQogICAg
ZC5zZXRWYXIoJ0JVSUxEU1BFQycsIGNtZCArICJcbiIpCiAgICBkLnNldFZhckZsYWcoJ0JVSUxE
U1BFQycsICdmdW5jJywgJzEnKQogICAgYmIuYnVpbGQuZXhlY19mdW5jKCdCVUlMRFNQRUMnLCBk
KQp9CgoKcHl0aG9uIGJ1aWxkY2ZnX25lZWRlZHZhcnMgKCkgewpkZWYgYnVpbGRjZmdfbmVlZGVk
dmFycyhkKToKICAgIG5lZWRlZF92YXJzID0gb2UuZGF0YS50eXBlZF92YWx1ZSgiQlVJTERDRkdf
TkVFREVEVkFSUyIsIGQpCiAgICBwZXN0ZXJ1c2VyID0gW10KICAgIGZvciB2IGluIG5lZWRlZF92
YXJzOgogICAgICAgIHZhbCA9IGQuZ2V0VmFyKHYsIFRydWUpCiAgICAgICAgaWYgbm90IHZhbCBv
ciB2YWwgPT0gJ0lOVkFMSUQnOgogICAgICAgICAgICBwZXN0ZXJ1c2VyLmFwcGVuZCh2KQoKICAg
IGlmIHBlc3RlcnVzZXI6CiAgICAgICAgYmIuZmF0YWwoJ1RoZSBmb2xsb3dpbmcgdmFyaWFibGUo
cykgd2VyZSBub3Qgc2V0OiAlc1xuUGxlYXNlIHNldCB0aGVtIGRpcmVjdGx5LCBvciBjaG9vc2Ug
YSBNQUNISU5FIG9yIERJU1RSTyB0aGF0IHNldHMgdGhlbS4nICUgJywgJy5qb2luKHBlc3RlcnVz
ZXIpKQp9CgoKcHl0aG9uIHBhY2thZ2VfbmFtZV9ob29rICgpIHsKICAgIGJiLmJ1aWxkLmV4ZWNf
ZnVuYygnZGViaWFuX3BhY2thZ2VfbmFtZV9ob29rJywgZCkKfQoKCnB5dGhvbiBwYXRjaF9wYXRo
ICgpIHsKZGVmIHBhdGNoX3BhdGgodXJsLCBmZXRjaCwgd29ya2Rpcik6CiAgICAiIiJSZXR1cm4g
dGhlIGxvY2FsIHBhdGggb2YgYSBwYXRjaCwgb3IgTm9uZSBpZiB0aGlzIGlzbid0IGEgcGF0Y2gi
IiIKCiAgICBsb2NhbCA9IGZldGNoLmxvY2FscGF0aCh1cmwpCiAgICBiYXNlLCBleHQgPSBvcy5w
YXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUobG9jYWwpKQogICAgaWYgZXh0IGluICgnLmd6
JywgJy5iejInLCAnLlonKToKICAgICAgICBsb2NhbCA9IG9zLnBhdGguam9pbih3b3JrZGlyLCBi
YXNlKQogICAgICAgIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZSlbMV0KCiAgICB1cmxkYXRh
ID0gZmV0Y2gudWRbdXJsXQogICAgaWYgImFwcGx5IiBpbiB1cmxkYXRhLnBhcm06CiAgICAgICAg
YXBwbHkgPSBvZS50eXBlcy5ib29sZWFuKHVybGRhdGEucGFybVsiYXBwbHkiXSkKICAgICAgICBp
ZiBub3QgYXBwbHk6CiAgICAgICAgICAgIHJldHVybgogICAgZWxpZiBleHQgbm90IGluICgiLmRp
ZmYiLCAiLnBhdGNoIik6CiAgICAgICAgcmV0dXJuCgogICAgcmV0dXJuIGxvY2FsCn0KCgpweXRo
b24gZ2V0X3RpbWVkYXRhICgpIHsKZGVmIGdldF90aW1lZGF0YSh2YXIsIGRhdGEpOgogICAgaW1w
b3J0IHRpbWUKICAgIHRpbWVkYXRhID0gZGF0YS5nZXRWYXIodmFyLCBGYWxzZSkKICAgIGlmIHRp
bWVkYXRhIGlzIE5vbmU6CiAgICAgICAgcmV0dXJuCiAgICBvbGR0aW1lLCBvbGRjcHUsIG9sZHBy
b2MgPSB0aW1lZGF0YQogICAgcHJvY2RpZmYgPSBnZXRfcHJvY2Vzc19jcHV0aW1lKG9zLmdldHBp
ZCgpKSAtIG9sZHByb2MKICAgIGNwdWRpZmYgPSBnZXRfY3B1dGltZSgpIC0gb2xkY3B1CiAgICB0
aW1lZGlmZiA9IHRpbWUudGltZSgpIC0gb2xkdGltZQogICAgaWYgY3B1ZGlmZiA+IDA6CiAgICAg
ICAgY3B1cGVyYyA9IGZsb2F0KHByb2NkaWZmKSAqIDEwMCAvIGNwdWRpZmYKICAgIGVsc2U6CiAg
ICAgICAgY3B1cGVyYyA9IE5vbmUKICAgIHJldHVybiB0aW1lZGlmZiwgY3B1cGVyYwp9CgoKcHl0
aG9uIGJhc2VfZ2V0X21ldGFkYXRhX21vbm90b25lX3JldmlzaW9uICgpIHsKZGVmIGJhc2VfZ2V0
X21ldGFkYXRhX21vbm90b25lX3JldmlzaW9uKHBhdGgsIGQpOgogICAgbW9ub3RvbmVfcmV2aXNp
b24gPSAiPHVua25vd24+IgogICAgdHJ5OgogICAgICAgIG1vbm90b25lX3JldmlzaW9uID0gZmls
ZSggIiVzL19NVE4vcmV2aXNpb24iICUgcGF0aCApLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgaWYg
bW9ub3RvbmVfcmV2aXNpb24uc3RhcnRzd2l0aCggImZvcm1hdF92ZXJzaW9uIiApOgogICAgICAg
ICAgICBtb25vdG9uZV9yZXZpc2lvbl93b3JkcyA9IG1vbm90b25lX3JldmlzaW9uLnNwbGl0KCkK
ICAgICAgICAgICAgbW9ub3RvbmVfcmV2aXNpb24gPSBtb25vdG9uZV9yZXZpc2lvbl93b3Jkc1sg
bW9ub3RvbmVfcmV2aXNpb25fd29yZHMuaW5kZXgoICJvbGRfcmV2aXNpb24iICkrMV1bMTotMV0K
ICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgIHBhc3MKICAgIHJldHVybiBtb25vdG9uZV9yZXZp
c2lvbgp9CgoKcHl0aG9uIHJlYWRfc3VicGFja2FnZV9tZXRhZGF0YSAoKSB7CiAgICBpbXBvcnQg
b2UucGFja2FnZWRhdGEKCiAgICBkYXRhID0gb2UucGFja2FnZWRhdGEucmVhZF9wa2dkYXRhKGQu
Z2V0VmFyKCdQTicsIFRydWUpLCBkKQoKICAgIGZvciBrZXkgaW4gZGF0YS5rZXlzKCk6CiAgICAg
ICAgZC5zZXRWYXIoa2V5LCBkYXRhW2tleV0pCgogICAgZm9yIHBrZyBpbiBkLmdldFZhcignUEFD
S0FHRVMnLCBUcnVlKS5zcGxpdCgpOgogICAgICAgIHNkYXRhID0gb2UucGFja2FnZWRhdGEucmVh
ZF9zdWJwa2dkYXRhKHBrZywgZCkKICAgICAgICBmb3Iga2V5IGluIHNkYXRhLmtleXMoKToKICAg
ICAgICAgICAgZC5zZXRWYXIoa2V5LCBzZGF0YVtrZXldKQp9CgoKcHl0aG9uIGRvX3BhY2thZ2Ug
KCkgewogICAgIyBDaGFuZ2UgdGhlIGZvbGxvd2luZyB2ZXJzaW9uIHRvIGNhdXNlIHNzdGF0ZSB0
byBpbnZhbGlkYXRlIHRoZSBwYWNrYWdlCiAgICAjIGNhY2hlLiAgVGhpcyBpcyB1c2VmdWwgaWYg
YW4gaXRlbSB0aGlzIGNsYXNzIGRlcGVuZHMgb24gY2hhbmdlcyBpbiBhCiAgICAjIHdheSB0aGF0
IHRoZSBvdXRwdXQgb2YgdGhpcyBjbGFzcyBjaGFuZ2VzLiAgcnBtZGVwcyBpcyBhIGdvb2QgZXhh
bXBsZQogICAgIyBhcyBhbnkgY2hhbmdlIHRvIHJwbWRlcHMgcmVxdWlyZXMgdGhpcyB0byBiZSBy
ZXJ1bi4KICAgICMgUEFDS0FHRV9CQkNMQVNTX1ZFUlNJT04gPSAiMSIKCiAgICBwYWNrYWdlcyA9
IChkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgaWYgbGVuKHBh
Y2thZ2VzKSA8IDE6CiAgICAgICAgYmIuZGVidWcoMSwgIk5vIHBhY2thZ2VzIHRvIGJ1aWxkLCBz
a2lwcGluZyBkb19wYWNrYWdlIikKICAgICAgICByZXR1cm4KCiAgICB3b3JrZGlyID0gZC5nZXRW
YXIoJ1dPUktESVInLCBUcnVlKQogICAgb3V0ZGlyID0gZC5nZXRWYXIoJ0RFUExPWV9ESVInLCBU
cnVlKQogICAgZGVzdCA9IGQuZ2V0VmFyKCdEJywgVHJ1ZSkKICAgIGR2YXIgPSBkLmdldFZhcign
UEtHRCcsIFRydWUpCiAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCgogICAgaWYgbm90IHdv
cmtkaXIgb3Igbm90IG91dGRpciBvciBub3QgZGVzdCBvciBub3QgZHZhciBvciBub3QgcG4gb3Ig
bm90IHBhY2thZ2VzOgogICAgICAgIGJiLmVycm9yKCJXT1JLRElSLCBERVBMT1lfRElSLCBELCBQ
TiBhbmQgUEtHRCBhbGwgbXVzdCBiZSBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCiAgICAg
ICAgcmV0dXJuCgogICAgZm9yIGYgaW4gKGQuZ2V0VmFyKCdQQUNLQUdFRlVOQ1MnLCBUcnVlKSBv
ciAnJykuc3BsaXQoKToKICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZiwgZCkKfQoKCnB5dGhv
biBjaGVja19saWNlbnNlX2ZsYWdzICgpIHsKZGVmIGNoZWNrX2xpY2Vuc2VfZmxhZ3MoZCk6CiAg
ICAiIiIKICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGEgcmVjaXBlIGhhcyBhbnkgTElDRU5T
RV9GTEFHcyB0aGF0CiAgICBhcmVuJ3Qgd2hpdGVsaXN0ZWQuCgogICAgSWYgaXQgZG9lcywgaXQg
cmV0dXJucyB0aGUgZmlyc3QgTElDRU5TRV9GTEFHIG1pc3NpbmcgZnJvbSB0aGUKICAgIHdoaXRl
bGlzdCwgb3IgYWxsIHRoZSBMSUNFTlNFX0ZMQUdzIGlmIHRoZXJlIGlzIG5vIHdoaXRlbGlzdC4K
CiAgICBJZiBldmVyeXRoaW5nIGlzIGlzIHByb3Blcmx5IHdoaXRlbGlzdGVkLCBpdCByZXR1cm5z
IE5vbmUuCiAgICAiIiIKCiAgICBkZWYgbGljZW5zZV9mbGFnX21hdGNoZXMoZmxhZywgd2hpdGVs
aXN0LCBwbik6CiAgICAgICAgIiIiCiAgICAgICAgUmV0dXJuIFRydWUgaWYgZmxhZyBtYXRjaGVz
IHNvbWV0aGluZyBpbiB3aGl0ZWxpc3QsIE5vbmUgaWYgbm90LgoKICAgICAgICBCZWZvcmUgd2Ug
dGVzdCBhIGZsYWcgYWdhaW5zdCB0aGUgd2hpdGVsaXN0LCB3ZSBhcHBlbmQgX2JibGF5ZXJzCiAg
ICAgICAgdG8gaXQuICBXZSB0aGVuIHRyeSB0byBtYXRjaCB0aGF0IHN0cmluZyBhZ2FpbnN0IHRo
ZQogICAgICAgIHdoaXRlbGlzdC4gIFRoaXMgY292ZXJzIHRoZSBub3JtYWwgY2FzZSwgd2hlcmUg
d2UgZXhwZWN0CiAgICAgICAgTElDRU5TRV9GTEFHUyB0byBiZSBhIHNpbXBsZSBzdHJpbmcgbGlr
ZSAnY29tbWVyY2lhbCcsIHdoaWNoCiAgICAgICAgdGhlIHVzZXIgdHlwaWNhbGx5IG1hdGNoZXMg
ZXhhY3RseSBpbiB0aGUgd2hpdGVsaXN0IGJ5CiAgICAgICAgZXhwbGljaXRseSBhcHBlbmRpbmcg
dGhlIHBhY2thZ2UgbmFtZSBlLmcgJ2NvbW1lcmNpYWxfZm9vJy4KICAgICAgICBJZiB3ZSBmYWls
IHRoZSBtYXRjaCBob3dldmVyLCB3ZSB0aGVuIHNwbGl0IHRoZSBmbGFnIGFjcm9zcwogICAgICAg
ICdfJyBhbmQgYXBwZW5kIGVhY2ggZnJhZ21lbnQgYW5kIHRlc3QgdW50aWwgd2UgZWl0aGVyIG1h
dGNoIG9yCiAgICAgICAgcnVuIG91dCBvZiBmcmFnbWVudHMuCiAgICAgICAgIiIiCiAgICAgICAg
ZmxhZ19wbiA9ICgiJXNfJXMiICUgKGZsYWcsIHBuKSkKICAgICAgICBmb3IgY2FuZGlkYXRlIGlu
IHdoaXRlbGlzdDoKICAgICAgICAgICAgaWYgZmxhZ19wbiA9PSBjYW5kaWRhdGU6CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICAgICAgZmxhZ19jdXIgPSAiIgogICAgICAgIGZs
YWdtZW50cyA9IGZsYWdfcG4uc3BsaXQoIl8iKQogICAgICAgIGZsYWdtZW50cy5wb3AoKSAjIHdl
J3ZlIGFscmVhZHkgdGVzdGVkIHRoZSBmdWxsIHN0cmluZwogICAgICAgIGZvciBmbGFnbWVudCBp
biBmbGFnbWVudHM6CiAgICAgICAgICAgIGlmIGZsYWdfY3VyOgogICAgICAgICAgICAgICAgZmxh
Z19jdXIgKz0gIl8iCiAgICAgICAgICAgIGZsYWdfY3VyICs9IGZsYWdtZW50CiAgICAgICAgICAg
IGZvciBjYW5kaWRhdGUgaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgaWYgZmxhZ19jdXIg
PT0gY2FuZGlkYXRlOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgcmV0
dXJuIEZhbHNlCgogICAgZGVmIGFsbF9saWNlbnNlX2ZsYWdzX21hdGNoKGxpY2Vuc2VfZmxhZ3Ms
IHdoaXRlbGlzdCk6CiAgICAgICAgIiIiIFJldHVybiBmaXJzdCB1bm1hdGNoZWQgZmxhZywgTm9u
ZSBpZiBhbGwgZmxhZ3MgbWF0Y2ggIiIiCiAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVl
KQogICAgICAgIHNwbGl0X3doaXRlbGlzdCA9IHdoaXRlbGlzdC5zcGxpdCgpCiAgICAgICAgZm9y
IGZsYWcgaW4gbGljZW5zZV9mbGFncy5zcGxpdCgpOgogICAgICAgICAgICBpZiBub3QgbGljZW5z
ZV9mbGFnX21hdGNoZXMoZmxhZywgc3BsaXRfd2hpdGVsaXN0LCBwbik6CiAgICAgICAgICAgICAg
ICByZXR1cm4gZmxhZwogICAgICAgIHJldHVybiBOb25lCgogICAgbGljZW5zZV9mbGFncyA9IGQu
Z2V0VmFyKCdMSUNFTlNFX0ZMQUdTJywgVHJ1ZSkKICAgIGlmIGxpY2Vuc2VfZmxhZ3M6CiAgICAg
ICAgd2hpdGVsaXN0ID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUJywgVHJ1ZSkK
ICAgICAgICBpZiBub3Qgd2hpdGVsaXN0OgogICAgICAgICAgICByZXR1cm4gbGljZW5zZV9mbGFn
cwogICAgICAgIHVubWF0Y2hlZF9mbGFnID0gYWxsX2xpY2Vuc2VfZmxhZ3NfbWF0Y2gobGljZW5z
ZV9mbGFncywgd2hpdGVsaXN0KQogICAgICAgIGlmIHVubWF0Y2hlZF9mbGFnOgogICAgICAgICAg
ICByZXR1cm4gdW5tYXRjaGVkX2ZsYWcKICAgIHJldHVybiBOb25lCn0KCgpweXRob24gc2V0X2Rl
dmljZSAoKSB7CmRlZiBzZXRfZGV2aWNlKGUpOgogICAgdG1wZGlyID0gZS5kYXRhLmdldFZhcign
VE1QRElSJywgVHJ1ZSkKICAgIHRyeToKICAgICAgICBvcy5yZW1vdmUoZS5kYXRhLmdldFZhcign
REVWRklMRScsIFRydWUpKQogICAgZXhjZXB0OgogICAgICAgIHBhc3MKICAgICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICAgICMgV2UgbG9vayBmb3IgdGhlIHZvbHVtZSBUTVBESVIgbGl2ZXMgb24uIFRv
IGRvIGFsbCBkaXNrcyB3b3VsZCBtYWtlIGxpdHRsZQogICAgIyBzZW5zZSBhbmQgbm90IGdpdmUg
dXMgYW55IHBhcnRpY3VsYXJseSB1c2VmdWwgZGF0YS4gSW4gdGhlb3J5IHdlIGNvdWxkIGRvCiAg
ICAjIHNvbWV0aGluZyBsaWtlIHN0aWNrIERMX0RJUiBvbiBhIGRpZmZlcmVudCBwYXJ0aXRpb24g
YW5kIHRoaXMgd291bGQKICAgICMgdGhyb3cgc3RhdHMgZ2F0aGVyaW5nIG9mZi4gVGhlIHNhbWUg
Z29lcyB3aXRoIFNTVEFURV9ESVIuIEhvd2V2ZXIsIGxldCdzCiAgICAjIGdldCB0aGUgYmFzaWNz
IGluIGhlcmUgYW5kIHdvcmsgb24gdGhlIGNvcm5lcmNhc2VzIGxhdGVyLgogICAgIyBBIG5vdGUu
IC9wcm9jL2Rpc2tzdGF0cyBkb2VzIG5vdCBjb250YWluIGluZm8gb24gZW5jcnlwdGZzLCB0bXBm
cywgZXRjLgogICAgIyBJZiB3ZSBlbmQgdXAgaGl0dGluZyBvbmUgb2YgdGhlc2UgZnMsIHdlJ2xs
IGp1c3Qgc2tpcCBkaXNrc3RhdHMgY29sbGVjdGlvbi4KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICAgIGRldmljZT1vcy5zdGF0KHRtcGRpcikKICAgIG1ham9yZGV2PW9zLm1ham9yKGRldmljZS5z
dF9kZXYpCiAgICBtaW5vcmRldj1vcy5taW5vcihkZXZpY2Uuc3RfZGV2KQogICAgIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwogICAgIyBCdWcgMTcwMDoKICAgICMgQmVjYXVzZSB0bXBmcy9lbmNyeXB0ZnMv
cmFtZnMgZXRjIGluc2VydHMgbm8gZW50cnkgaW4gL3Byb2MvZGlza3N0YXRzCiAgICAjIHdlIHNl
dCByZGV2IHRvIE5vTG9naWNhbERldmljZSBhbmQgc2VhcmNoIGZvciBpdCBsYXRlci4gSWYgd2Ug
ZmluZCBOTEQKICAgICMgd2UgZG8gbm90IGNvbGxlY3QgZGlza3N0YXRzIGFzIHRoZSBtZXRob2Qg
dG8gY29sbGVjdCBtZWFuaW5nZnVsIHN0YXRpc3RpY3MKICAgICMgZm9yIHRoZXNlIGZzIHR5cGVz
IHJlcXVpcmVzIGEgYml0IG1vcmUgcmVzZWFyY2guCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAg
ICByZGV2PSJOb0xvZ2ljYWxEZXZpY2UiCiAgICB0cnk6CiAgICAgICAgZm9yIGxpbmUgaW4gb3Bl
bigiL3Byb2MvZGlza3N0YXRzIiwgInIiKToKICAgICAgICAgICAgaWYgbWFqb3JkZXYgPT0gaW50
KGxpbmUuc3BsaXQoKVswXSkgYW5kIG1pbm9yZGV2ID09IGludChsaW5lLnNwbGl0KClbMV0pOgog
ICAgICAgICAgICAgICByZGV2PWxpbmUuc3BsaXQoKVsyXQogICAgZXhjZXB0OgogICAgICAgIHBh
c3MKICAgIGZpbGUgPSBvcGVuKGUuZGF0YS5nZXRWYXIoJ0RFVkZJTEUnLCBUcnVlKSwgInciKQog
ICAgZmlsZS53cml0ZShyZGV2KQogICAgZmlsZS5jbG9zZSgpCn0KCgpweXRob24gYmFzZV9jb250
YWlucyAoKSB7CmRlZiBiYXNlX2NvbnRhaW5zKHZhcmlhYmxlLCBjaGVja3ZhbHVlcywgdHJ1ZXZh
bHVlLCBmYWxzZXZhbHVlLCBkKToKICAgIHJldHVybiBvZS51dGlscy5jb250YWlucyh2YXJpYWJs
ZSwgY2hlY2t2YWx1ZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKfQoKCnB5dGhvbiBwYWNr
YWdlX3FhX2NoZWNrX3Blcm0gKCkgewpkZWYgcGFja2FnZV9xYV9jaGVja19wZXJtKHBhdGgsbmFt
ZSxkLCBlbGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgQ2hlY2sgdGhlIHBlcm1pc3Npb24gb2Yg
ZmlsZXMKICAgICIiIgogICAgcmV0dXJuCn0KCgpweXRob24gbWFjaGluZV9wYXRocyAoKSB7CmRl
ZiBtYWNoaW5lX3BhdGhzKGQpOgogICAgIiIiTGlzdCBhbnkgZXhpc3RpbmcgbWFjaGluZSBzcGVj
aWZpYyBmaWxlc3BhdGggZGlyZWN0b3JpZXMiIiIKICAgIG1hY2hpbmUgPSBkLmdldFZhcigiTUFD
SElORSIsIFRydWUpCiAgICBmaWxlc3BhdGhwa2cgPSBkLmdldFZhcigiRklMRVNQQVRIUEtHIiwg
VHJ1ZSkuc3BsaXQoIjoiKQogICAgZm9yIGJhc2VwYXRoIGluIGQuZ2V0VmFyKCJGSUxFU1BBVEhC
QVNFIiwgVHJ1ZSkuc3BsaXQoIjoiKToKICAgICAgICBmb3IgcGtncGF0aCBpbiBmaWxlc3BhdGhw
a2c6CiAgICAgICAgICAgIG1hY2hpbmVwYXRoID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCBwa2dw
YXRoLCBtYWNoaW5lKQogICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG1hY2hpbmVwYXRoKToK
ICAgICAgICAgICAgICAgIHlpZWxkIG1hY2hpbmVwYXRoCn0KCgpweXRob24gb2VfaW1wb3J0ICgp
IHsKZGVmIG9lX2ltcG9ydChkKToKICAgIGltcG9ydCBzeXMKCiAgICBiYnBhdGggPSBkLmdldFZh
cigiQkJQQVRIIiwgVHJ1ZSkuc3BsaXQoIjoiKQogICAgc3lzLnBhdGhbMDowXSA9IFtvcy5wYXRo
LmpvaW4oZGlyLCAibGliIikgZm9yIGRpciBpbiBiYnBhdGhdCgogICAgZGVmIGluamVjdChuYW1l
LCB2YWx1ZSk6CiAgICAgICAgIiIiTWFrZSBhIHB5dGhvbiBvYmplY3QgYWNjZXNzaWJsZSBmcm9t
IHRoZSBtZXRhZGF0YSIiIgogICAgICAgIGlmIGhhc2F0dHIoYmIudXRpbHMsICJfY29udGV4dCIp
OgogICAgICAgICAgICBiYi51dGlscy5fY29udGV4dFtuYW1lXSA9IHZhbHVlCiAgICAgICAgZWxz
ZToKICAgICAgICAgICAgX19idWlsdGluc19fW25hbWVdID0gdmFsdWUKCiAgICBpbXBvcnQgb2Uu
ZGF0YQogICAgZm9yIHRvaW1wb3J0IGluIG9lLmRhdGEudHlwZWRfdmFsdWUoIk9FX0lNUE9SVFMi
LCBkKToKICAgICAgICBpbXBvcnRlZCA9IF9faW1wb3J0X18odG9pbXBvcnQpCiAgICAgICAgaW5q
ZWN0KHRvaW1wb3J0LnNwbGl0KCIuIiwgMSlbMF0sIGltcG9ydGVkKQp9CgoKcHl0aG9uIHBhY2th
Z2VfcWFfd2FsayAoKSB7CmRlZiBwYWNrYWdlX3FhX3dhbGsocGF0aCwgd2FybmZ1bmNzLCBlcnJv
cmZ1bmNzLCBza2lwLCBwYWNrYWdlLCBkKToKICAgIGltcG9ydCBvZS5xYQoKICAgICNpZiB0aGlz
IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLCB0aGVuIGZpeCB0aGUgZGljdCBhYm92ZQogICAgdGFy
Z2V0X29zICAgPSBkLmdldFZhcignVEFSR0VUX09TJywgVHJ1ZSkKICAgIHRhcmdldF9hcmNoID0g
ZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKCiAgICB3YXJuaW5ncyA9IFtdCiAgICBlcnJv
cnMgPSBbXQogICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CiAgICAg
ICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocm9v
dCxmaWxlKQogICAgICAgICAgICBlbGYgPSBvZS5xYS5FTEZGaWxlKHBhdGgpCiAgICAgICAgICAg
IHRyeToKICAgICAgICAgICAgICAgIGVsZi5vcGVuKCkKICAgICAgICAgICAgZXhjZXB0OgogICAg
ICAgICAgICAgICAgZWxmID0gTm9uZQogICAgICAgICAgICBmb3IgZnVuYyBpbiB3YXJuZnVuY3M6
CiAgICAgICAgICAgICAgICBmdW5jKHBhdGgsIHBhY2thZ2UsIGQsIGVsZiwgd2FybmluZ3MpCiAg
ICAgICAgICAgIGZvciBmdW5jIGluIGVycm9yZnVuY3M6CiAgICAgICAgICAgICAgICBmdW5jKHBh
dGgsIHBhY2thZ2UsIGQsIGVsZiwgZXJyb3JzKQoKICAgIGZvciB3IGluIHdhcm5pbmdzOgogICAg
ICAgIGJiLndhcm4oIlFBIElzc3VlOiAlcyIgJSB3KQogICAgICAgIHBhY2thZ2VfcWFfd3JpdGVf
ZXJyb3IodywgZCkKICAgIGZvciBlIGluIGVycm9yczoKICAgICAgICBiYi5lcnJvcigiUUEgSXNz
dWU6ICVzIiAlIGUpCiAgICAgICAgcGFja2FnZV9xYV93cml0ZV9lcnJvcihlLCBkKQoKICAgIHJl
dHVybiBsZW4oZXJyb3JzKSA9PSAwCn0KCgpweXRob24gZG9fc3BsaXRfcGFja2FnZXMgKCkgewpk
ZWYgZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdCwgZmlsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm4s
IGRlc2NyaXB0aW9uLCBwb3N0aW5zdD1Ob25lLCByZWN1cnNpdmU9RmFsc2UsIGhvb2s9Tm9uZSwg
ZXh0cmFfZGVwZW5kcz1Ob25lLCBhdXhfZmlsZXNfcGF0dGVybj1Ob25lLCBwb3N0cm09Tm9uZSwg
YWxsb3dfZGlycz1GYWxzZSwgcHJlcGVuZD1GYWxzZSwgbWF0Y2hfcGF0aD1GYWxzZSwgYXV4X2Zp
bGVzX3BhdHRlcm5fdmVyYmF0aW09Tm9uZSwgYWxsb3dfbGlua3M9RmFsc2UpOgogICAgIiIiCiAg
ICBVc2VkIGluIC5iYiBmaWxlcyB0byBzcGxpdCB1cCBkeW5hbWljYWxseSBnZW5lcmF0ZWQgc3Vi
cGFja2FnZXMgb2YgYQogICAgZ2l2ZW4gcGFja2FnZSwgdXN1YWxseSBwbHVnaW5zIG9yIG1vZHVs
ZXMuCiAgICAiIiIKCiAgICBtbCA9IGQuZ2V0VmFyKCJNTFBSRUZJWCIsIFRydWUpCiAgICBpZiBt
bDoKICAgICAgICBpZiBub3Qgb3V0cHV0X3BhdHRlcm4uc3RhcnRzd2l0aChtbCk6CiAgICAgICAg
ICAgIG91dHB1dF9wYXR0ZXJuID0gbWwgKyBvdXRwdXRfcGF0dGVybgoKICAgICAgICBuZXdkZXBz
ID0gW10KICAgICAgICBmb3IgZGVwIGluIChleHRyYV9kZXBlbmRzIG9yICIiKS5zcGxpdCgpOgog
ICAgICAgICAgICBpZiBkZXAuc3RhcnRzd2l0aChtbCk6CiAgICAgICAgICAgICAgICBuZXdkZXBz
LmFwcGVuZChkZXApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBuZXdkZXBzLmFw
cGVuZChtbCArIGRlcCkKICAgICAgICBpZiBuZXdkZXBzOgogICAgICAgICAgICBleHRyYV9kZXBl
bmRzID0gIiAiLmpvaW4obmV3ZGVwcykKCiAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnLCBUcnVl
KQoKICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJywgVHJ1ZSkuc3BsaXQoKQoKICAg
IGlmIHBvc3RpbnN0OgogICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJyArIHBvc3RpbnN0
ICsgJ1xuJwogICAgaWYgcG9zdHJtOgogICAgICAgIHBvc3RybSA9ICcjIS9iaW4vc2hcbicgKyBw
b3N0cm0gKyAnXG4nCiAgICBpZiBub3QgcmVjdXJzaXZlOgogICAgICAgIG9ianMgPSBvcy5saXN0
ZGlyKGR2YXIgKyByb290KQogICAgZWxzZToKICAgICAgICBvYmpzID0gW10KICAgICAgICBmb3Ig
d2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZHZhciArIHJvb3QpOgogICAgICAgICAg
ICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIHJlbHBhdGggPSBvcy5wYXRoLmpv
aW4od2Fsa3Jvb3QsIGZpbGUpLnJlcGxhY2UoZHZhciArIHJvb3QgKyAnLycsICcnLCAxKQogICAg
ICAgICAgICAgICAgaWYgcmVscGF0aDoKICAgICAgICAgICAgICAgICAgICBvYmpzLmFwcGVuZChy
ZWxwYXRoKQoKICAgIGlmIGV4dHJhX2RlcGVuZHMgPT0gTm9uZToKICAgICAgICBleHRyYV9kZXBl
bmRzID0gZC5nZXRWYXIoIlBOIiwgVHJ1ZSkKCiAgICBmb3IgbyBpbiBzb3J0ZWQob2Jqcyk6CiAg
ICAgICAgaW1wb3J0IHJlLCBzdGF0CiAgICAgICAgaWYgbWF0Y2hfcGF0aDoKICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKGZpbGVfcmVnZXgsIG8pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKGZpbGVfcmVnZXgsIG9zLnBhdGguYmFzZW5hbWUobykpCgogICAgICAgIGlmIG5v
dCBtOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZHZhciAr
IHJvb3QsIG8pCiAgICAgICAgbW9kZSA9IG9zLmxzdGF0KGYpLnN0X21vZGUKICAgICAgICBpZiBu
b3QgKHN0YXQuU19JU1JFRyhtb2RlKSBvciAoYWxsb3dfbGlua3MgYW5kIHN0YXQuU19JU0xOSyht
b2RlKSkgb3IgKGFsbG93X2RpcnMgYW5kIHN0YXQuU19JU0RJUihtb2RlKSkpOgogICAgICAgICAg
ICBjb250aW51ZQogICAgICAgIG9uID0gbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUobS5ncm91cCgx
KSkKICAgICAgICBwa2cgPSBvdXRwdXRfcGF0dGVybiAlIG9uCiAgICAgICAgaWYgbm90IHBrZyBp
biBwYWNrYWdlczoKICAgICAgICAgICAgaWYgcHJlcGVuZDoKICAgICAgICAgICAgICAgIHBhY2th
Z2VzID0gW3BrZ10gKyBwYWNrYWdlcwogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
cGFja2FnZXMuYXBwZW5kKHBrZykKICAgICAgICBvbGRmaWxlcyA9IGQuZ2V0VmFyKCdGSUxFU18n
ICsgcGtnLCBUcnVlKQogICAgICAgIGlmIG5vdCBvbGRmaWxlczoKICAgICAgICAgICAgdGhlX2Zp
bGVzID0gW29zLnBhdGguam9pbihyb290LCBvKV0KICAgICAgICAgICAgaWYgYXV4X2ZpbGVzX3Bh
dHRlcm46CiAgICAgICAgICAgICAgICBpZiB0eXBlKGF1eF9maWxlc19wYXR0ZXJuKSBpcyBsaXN0
OgogICAgICAgICAgICAgICAgICAgIGZvciBmcCBpbiBhdXhfZmlsZXNfcGF0dGVybjoKICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlX2ZpbGVzLmFwcGVuZChmcCAlIG9uKQogICAgICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0aGVfZmlsZXMuYXBwZW5kKGF1eF9maWxlc19w
YXR0ZXJuICUgb24pCiAgICAgICAgICAgIGlmIGF1eF9maWxlc19wYXR0ZXJuX3ZlcmJhdGltOgog
ICAgICAgICAgICAgICAgaWYgdHlwZShhdXhfZmlsZXNfcGF0dGVybl92ZXJiYXRpbSkgaXMgbGlz
dDoKICAgICAgICAgICAgICAgICAgICBmb3IgZnAgaW4gYXV4X2ZpbGVzX3BhdHRlcm5fdmVyYmF0
aW06CiAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9maWxlcy5hcHBlbmQoZnAgJSBtLmdyb3Vw
KDEpKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICB0aGVfZmlsZXMu
YXBwZW5kKGF1eF9maWxlc19wYXR0ZXJuX3ZlcmJhdGltICUgbS5ncm91cCgxKSkKICAgICAgICAg
ICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBwa2csICIgIi5qb2luKHRoZV9maWxlcykpCiAgICAgICAg
ICAgIGlmIGV4dHJhX2RlcGVuZHMgIT0gJyc6CiAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcign
UkRFUEVORFNfJyArIHBrZywgJyAnICsgZXh0cmFfZGVwZW5kcykKICAgICAgICAgICAgZC5zZXRW
YXIoJ0RFU0NSSVBUSU9OXycgKyBwa2csIGRlc2NyaXB0aW9uICUgb24pCiAgICAgICAgICAgIGlm
IHBvc3RpbnN0OgogICAgICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0aW5zdF8nICsgcGtn
LCBwb3N0aW5zdCkKICAgICAgICAgICAgaWYgcG9zdHJtOgogICAgICAgICAgICAgICAgZC5zZXRW
YXIoJ3BrZ19wb3N0cm1fJyArIHBrZywgcG9zdHJtKQogICAgICAgIGVsc2U6CiAgICAgICAgICAg
IGQuc2V0VmFyKCdGSUxFU18nICsgcGtnLCBvbGRmaWxlcyArICIgIiArIG9zLnBhdGguam9pbihy
b290LCBvKSkKICAgICAgICBpZiBjYWxsYWJsZShob29rKToKICAgICAgICAgICAgaG9vayhmLCBw
a2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtLmdyb3VwKDEpKQoKICAgIGQuc2V0VmFy
KCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKfQoKCnB5dGhvbiBwcm9jZXNzX2RpciAo
KSB7CmRlZiBwcm9jZXNzX2RpciAoZGlyZWN0b3J5LCBkKToKICAgIGltcG9ydCBzdWJwcm9jZXNz
IGFzIHN1YgogICAgaW1wb3J0IHN0YXQKCiAgICBjbWQgPSBkLmV4cGFuZCgnY2hycGF0aCcpCiAg
ICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJykKICAgIGJhc2VkaXIgPSBkLmV4cGFuZCgnJykK
CiAgICAjYmIuZGVidWcoIkNoZWNraW5nICVzIGZvciBiaW5hcmllcyB0byBwcm9jZXNzIiAlIGRp
cmVjdG9yeSkKICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJlY3RvcnkpOgogICAgICAgIHJl
dHVybgoKICAgIGRpcnMgPSBvcy5saXN0ZGlyKGRpcmVjdG9yeSkKICAgIGZvciBmaWxlIGluIGRp
cnM6CiAgICAgICAgZnBhdGggPSBkaXJlY3RvcnkgKyAiLyIgKyBmaWxlCiAgICAgICAgZnBhdGgg
PSBvcy5wYXRoLm5vcm1wYXRoKGZwYXRoKQogICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGZwYXRo
KToKICAgICAgICAgICAgIyBTa2lwIHN5bWxpbmtzCiAgICAgICAgICAgIGNvbnRpbnVlCgogICAg
ICAgIGlmIG9zLnBhdGguaXNkaXIoZnBhdGgpOgogICAgICAgICAgICBwcm9jZXNzX2RpcihmcGF0
aCwgZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjYmIubm90ZSgiVGVzdGluZyAlcyBmb3Ig
cmVsb2NhdGFiaWxpdHkiICUgZnBhdGgpCgogICAgICAgICAgICAjIFdlIG5lZWQgcmVhZCBhbmQg
d3JpdGUgcGVybWlzc2lvbnMgZm9yIGNocnBhdGgsIGlmIHdlIGRvbid0IGhhdmUKICAgICAgICAg
ICAgIyB0aGVtIHRoZW4gc2V0IHRoZW0gdGVtcG9yYXJpbHkuIFRha2UgYSBjb3B5IG9mIHRoZSBm
aWxlcwogICAgICAgICAgICAjIHBlcm1pc3Npb25zIHNvIHRoYXQgd2UgY2FuIHJlc3RvcmUgdGhl
bSBhZnRlcndhcmRzLgogICAgICAgICAgICBwZXJtcyA9IG9zLnN0YXQoZnBhdGgpW3N0YXQuU1Rf
TU9ERV0KICAgICAgICAgICAgaWYgb3MuYWNjZXNzKGZwYXRoLCBvcy5XX09LfG9zLlJfT0spOgog
ICAgICAgICAgICAgICAgcGVybXMgPSBOb25lCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAjIFRlbXBvcmFyaWx5IG1ha2UgdGhlIGZpbGUgd3JpdGVhYmxlIHNvIHdlIGNhbiBjaHJw
YXRoIGl0CiAgICAgICAgICAgICAgICBvcy5jaG1vZChmcGF0aCwgcGVybXN8c3RhdC5TX0lSV1hV
KQoKICAgICAgICAgICAgcCA9IHN1Yi5Qb3BlbihbY21kLCAnLWwnLCBmcGF0aF0sc3Rkb3V0PXN1
Yi5QSVBFLHN0ZGVycj1zdWIuUElQRSkKICAgICAgICAgICAgZXJyLCBvdXQgPSBwLmNvbW11bmlj
YXRlKCkKICAgICAgICAgICAgIyBJZiByZXR1cm5lZCBzdWNjZXNmdWxseSwgcHJvY2VzcyBzdGRl
cnIgZm9yIHJlc3VsdHMKICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6CiAgICAgICAg
ICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgIyBUaHJvdyBhd2F5IGV2ZXJ5dGhpbmcgb3Ro
ZXIgdGhhbiB0aGUgcnBhdGggbGlzdAogICAgICAgICAgICBjdXJyX3JwYXRoID0gZXJyLnBhcnRp
dGlvbigiUlBBVEg9IilbMl0KICAgICAgICAgICAgI2JiLm5vdGUoIkN1cnJlbnQgcnBhdGggZm9y
ICVzIGlzICVzIiAlIChmcGF0aCwgY3Vycl9ycGF0aC5zdHJpcCgpKSkKICAgICAgICAgICAgcnBh
dGhzID0gY3Vycl9ycGF0aC5zcGxpdCgiOiIpCiAgICAgICAgICAgIG5ld19ycGF0aHMgPSBbXQog
ICAgICAgICAgICBmb3IgcnBhdGggaW4gcnBhdGhzOgogICAgICAgICAgICAgICAgIyBJZiBycGF0
aCBpcyBhbHJlYWR5IGR5bmFtaWMgY29udGludWUKICAgICAgICAgICAgICAgIGlmIHJwYXRoLmZp
bmQoIiRPUklHSU4iKSAhPSAtMToKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAg
ICAgICAgICAgIyBJZiB0aGUgcnBhdGggc2hhcmVzIGEgcm9vdCB3aXRoIGJhc2VfcHJlZml4IGRl
dGVybWluZSBhIG5ldyBkeW5hbWljIHJwYXRoIGZyb20gdGhlCiAgICAgICAgICAgICAgICAjIGJh
c2VfcHJlZml4IHNoYXJlZCByb290CiAgICAgICAgICAgICAgICBpZiBycGF0aC5maW5kKGJhc2Vk
aXIpICE9IC0xOgogICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZnBhdGgucGFydGl0aW9uKGJh
c2VkaXIpWzJdLmNvdW50KCcvJykKICAgICAgICAgICAgICAgICAgICBsaWJwYXRoID0gcnBhdGgu
cGFydGl0aW9uKGJhc2VkaXIpWzJdLnN0cmlwKCkKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNl
IChpLmUuIGNyb3NzIHBhY2thZ2VzKSBkZXRlcm1pbmUgYSBzaGFyZWQgcm9vdCBiYXNlZCBvbiB0
aGUgVE1QRElSCiAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgd2lsbCBub3Qgd29yayByZWxp
YWJseSBmb3IgY3Jvc3MgcGFja2FnZXMsIHBhcnRpY3VsYXJseSBpbiB0aGUgY2FzZQogICAgICAg
ICAgICAgICAgIyB3aGVyZSB5b3VyIFRNUERJUiBpcyBhIHNob3J0IHBhdGggKGkuZS4gL3Vzci9w
b2t5KSBhcyBjaHJwYXRoIGNhbm5vdCBpbnNlcnQgYW4KICAgICAgICAgICAgICAgICMgcnBhdGgg
bG9uZ2VyIHRoYW4gdGhhdCB3aGljaCBpcyBhbHJlYWR5IHNldC4KICAgICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBmcGF0aC5ycGFydGl0aW9uKHRtcGRpcilb
Ml0uY291bnQoJy8nKQogICAgICAgICAgICAgICAgICAgIGxpYnBhdGggPSBycGF0aC5wYXJ0aXRp
b24odG1wZGlyKVsyXS5zdHJpcCgpCgogICAgICAgICAgICAgICAgYmFzZSA9ICIkT1JJR0lOIgog
ICAgICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAxOgogICAgICAgICAgICAgICAgICAgIGJhc2Ug
Kz0gIi8uLiIKICAgICAgICAgICAgICAgICAgICBkZXB0aC09MQogICAgICAgICAgICAgICAgbmV3
X3JwYXRocy5hcHBlbmQoIiVzJXMiICUgKGJhc2UsIGxpYnBhdGgpKQoKICAgICAgICAgICAgIyBp
ZiB3ZSBoYXZlIG1vZGlmaWVkIHNvbWUgcnBhdGhzIGNhbGwgY2hycGF0aCB0byB1cGRhdGUgdGhl
IGJpbmFyeQogICAgICAgICAgICBpZiBsZW4obmV3X3JwYXRocyk6CiAgICAgICAgICAgICAgICBh
cmdzID0gIjoiLmpvaW4obmV3X3JwYXRocykKICAgICAgICAgICAgICAgICNiYi5ub3RlKCJTZXR0
aW5nIHJwYXRoIGZvciAlcyB0byAlcyIgJShmcGF0aCwgYXJncykpCiAgICAgICAgICAgICAgICBz
dWIuY2FsbChbY21kLCAnLXInLCBhcmdzLCBmcGF0aF0pCgogICAgICAgICAgICBpZiBwZXJtczoK
ICAgICAgICAgICAgICAgIG9zLmNobW9kKGZwYXRoLCBwZXJtcykKfQoKCnB5dGhvbiBzc3RhdGVf
c3RhdGVfZnJvbXZhcnMgKCkgewpkZWYgc3N0YXRlX3N0YXRlX2Zyb212YXJzKGQsIHRhc2sgPSBO
b25lKToKICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICB0YXNrID0gZC5nZXRWYXIoJ0JCX0NV
UlJFTlRUQVNLJywgVHJ1ZSkKICAgICAgICBpZiBub3QgdGFzazoKICAgICAgICAgICAgYmIuZmF0
YWwoInNzdGF0ZSBjb2RlIHJ1bm5pbmcgd2l0aG91dCB0YXNrIGNvbnRleHQ/ISIpCiAgICAgICAg
dGFzayA9IHRhc2sucmVwbGFjZSgiX3NldHNjZW5lIiwgIiIpCgogICAgbmFtZSA9IGQuZ2V0VmFy
RmxhZygiZG9fIiArIHRhc2ssICdzc3RhdGUtbmFtZScsIFRydWUpCiAgICBpbnB1dHMgPSAoZC5n
ZXRWYXJGbGFnKCJkb18iICsgdGFzaywgJ3NzdGF0ZS1pbnB1dGRpcnMnLCBUcnVlKSBvciAiIiku
c3BsaXQoKQogICAgb3V0cHV0cyA9IChkLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRl
LW91dHB1dGRpcnMnLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgcGxhaW5kaXJzID0gKGQuZ2V0
VmFyRmxhZygiZG9fIiArIHRhc2ssICdzc3RhdGUtcGxhaW5kaXJzJywgVHJ1ZSkgb3IgIiIpLnNw
bGl0KCkKICAgIGxvY2tmaWxlcyA9IChkLmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRl
LWxvY2tmaWxlJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIGxvY2tmaWxlc3NoYXJlZCA9IChk
LmdldFZhckZsYWcoImRvXyIgKyB0YXNrLCAnc3N0YXRlLWxvY2tmaWxlLXNoYXJlZCcsIFRydWUp
IG9yICIiKS5zcGxpdCgpCiAgICBpbnRlcmNlcHRmdW5jcyA9IChkLmdldFZhckZsYWcoImRvXyIg
KyB0YXNrLCAnc3N0YXRlLWludGVyY2VwdGZ1bmNzJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAg
IGlmIG5vdCBuYW1lIG9yIGxlbihpbnB1dHMpICE9IGxlbihvdXRwdXRzKToKICAgICAgICBiYi5m
YXRhbCgic3N0YXRlIHZhcmlhYmxlcyBub3Qgc2V0dXAgY29ycmVjdGx5PyEiKQoKICAgIHNzID0g
c3N0YXRlX2luaXQobmFtZSwgdGFzaywgZCkKICAgIGZvciBpIGluIHJhbmdlKGxlbihpbnB1dHMp
KToKICAgICAgICBzc3RhdGVfYWRkKHNzLCBpbnB1dHNbaV0sIG91dHB1dHNbaV0sIGQpCiAgICBz
c1snbG9ja2ZpbGVzJ10gPSBsb2NrZmlsZXMKICAgIHNzWydsb2NrZmlsZXMtc2hhcmVkJ10gPSBs
b2NrZmlsZXNzaGFyZWQKICAgIHNzWydwbGFpbmRpcnMnXSA9IHBsYWluZGlycwogICAgc3NbJ2lu
dGVyY2VwdGZ1bmNzJ10gPSBpbnRlcmNlcHRmdW5jcwogICAgcmV0dXJuIHNzCn0KCgpweXRob24g
ZG9fdW5wYWNrICgpIHsKICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb191bnBhY2snLCBk
KQp9CgoKcHl0aG9uIHBhY2thZ2VfcWFfY2hlY2tfYXJjaCAoKSB7CmRlZiBwYWNrYWdlX3FhX2No
ZWNrX2FyY2gocGF0aCxuYW1lLGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIiCiAgICBDaGVjayBp
ZiBhcmNocyBhcmUgY29tcGF0aWJsZQogICAgIiIiCiAgICBpZiBub3QgZWxmOgogICAgICAgIHJl
dHVybgoKICAgIHRhcmdldF9vcyAgID0gZC5nZXRWYXIoJ1RBUkdFVF9PUycsIFRydWUpCiAgICB0
YXJnZXRfYXJjaCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpCiAgICBwcm92aWRlcyA9
IGQuZ2V0VmFyKCdQUk9WSURFUycsIGQsIFRydWUpCiAgICBicG4gPSBkLmdldFZhcignQlBOJywg
VHJ1ZSkKCiAgICAjIEZJWE1FOiBDcm9zcyBwYWNrYWdlIGNvbmZ1c2UgdGhpcyBjaGVjaywgc28g
anVzdCBza2lwIHRoZW0KICAgIGZvciBzIGluIFsnY3Jvc3MnLCAnbmF0aXZlc2RrJywgJ2Nyb3Nz
LWNhbmFkaWFuJ106CiAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcyhzLCBkKToKICAg
ICAgICAgICAgcmV0dXJuCgogICAgIyBhdm9pZCBmb2xsb3dpbmcgbGlua3MgdG8gL3Vzci9iaW4g
KGUuZy4gb24gdWRldiBidWlsZHMpCiAgICAjIHdlIHdpbGwgY2hlY2sgdGhlIGZpbGVzIHBvaW50
ZWQgdG8gYW55d2F5Li4uCiAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKToKICAgICAgICByZXR1
cm4KCiAgICAjaWYgdGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiwgdGhlbiBmaXggdGhlIGRp
Y3QgYWJvdmUKICAgIChtYWNoaW5lLCBvc2FiaSwgYWJpdmVyc2lvbiwgbGl0dGxlZW5kaWFuLCBi
aXRzKSBcCiAgICAgICAgPSBwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3QoKVt0YXJnZXRfb3Nd
W3RhcmdldF9hcmNoXQoKICAgICMgQ2hlY2sgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZW5kaWFubmVz
IG9mIHRoZSBiaW5hcnkKICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3Ig
XAoJKCJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMpIGFuZCAodGFyZ2V0X29zID09ICJsaW51
eC1nbnV4MzIiKSk6CiAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJBcmNoaXRlY3R1cmUgZGlkIG5v
dCBtYXRjaCAoJWQgdG8gJWQpIG9uICVzIiAlIFwKICAgICAgICAgICAgICAgICAobWFjaGluZSwg
ZWxmLm1hY2hpbmUoKSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogICAgZWxpZiBu
b3QgKChiaXRzID09IGVsZi5hYmlTaXplKCkpIG9yICBcCgkoInZpcnR1YWwva2VybmVsIiBpbiBw
cm92aWRlcykgYW5kICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIpKToKICAgICAgICBtZXNz
YWdlcy5hcHBlbmQoIkJpdCBzaXplIGRpZCBub3QgbWF0Y2ggKCVkIHRvICVkKSAlcyBvbiAlcyIg
JSBcCiAgICAgICAgICAgICAgICAgKGJpdHMsIGVsZi5hYmlTaXplKCksIGJwbiwgcGFja2FnZV9x
YV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogICAgZWxpZiBub3QgbGl0dGxlZW5kaWFuID09IGVsZi5p
c0xpdHRsZUVuZGlhbigpOgogICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiRW5kaWFubmVzIGRpZCBu
b3QgbWF0Y2ggKCVkIHRvICVkKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAgICAgKGxpdHRsZWVu
ZGlhbiwgZWxmLmlzTGl0dGxlRW5kaWFuKCksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQp
KSkKfQoKCnB5dGhvbiBydW5zdHJpcCAoKSB7CmRlZiBydW5zdHJpcChmaWxlLCBlbGZ0eXBlLCBk
KToKICAgICMgRnVuY3Rpb24gdG8gc3RyaXAgYSBzaW5nbGUgZmlsZSwgY2FsbGVkIGZyb20gc3Bs
aXRfYW5kX3N0cmlwX2ZpbGVzIGJlbG93CiAgICAjIEEgd29ya2luZyAnZmlsZScgKG9uZSB3aGlj
aCB3b3JrcyBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSkKICAgICMKICAgICMgVGhlIGVsZnR5
cGUgaXMgYSBiaXQgcGF0dGVybiAoZXhwbGFpbmVkIGluIHNwbGl0X2FuZF9zdHJpcF9maWxlcykg
dG8gdGVsbAogICAgIyB1cyB3aGF0IHR5cGUgb2YgZmlsZSB3ZSdyZSBwcm9jZXNzaW5nLi4uCiAg
ICAjIDQgLSBleGVjdXRhYmxlCiAgICAjIDggLSBzaGFyZWQgbGlicmFyeQoKICAgIGltcG9ydCBj
b21tYW5kcywgc3RhdCwgc3VicHJvY2VzcwoKICAgIHBhdGhwcmVmaXggPSAiZXhwb3J0IFBBVEg9
JXM7ICIgJSBkLmdldFZhcignUEFUSCcsIFRydWUpCiAgICBzdHJpcCA9IGQuZ2V0VmFyKCJTVFJJ
UCIsIFRydWUpCgogICAgIyBIYW5kbGUga2VybmVsIG1vZHVsZXMgc3BlY2lmaWNhbGx5IC0gLmRl
YnVnIGRpcmVjdG9yaWVzIGhlcmUgYXJlIHBvaW50bGVzcwogICAgaWYgZmlsZS5maW5kKCIvbGli
L21vZHVsZXMvIikgIT0gLTEgYW5kIGZpbGUuZW5kc3dpdGgoIi5rbyIpOgogICAgICAgIHJldHVy
biBzdWJwcm9jZXNzLmNhbGwoIiVzJyVzJyAtLXN0cmlwLWRlYnVnIC0tcmVtb3ZlLXNlY3Rpb249
LmNvbW1lbnQgLS1yZW1vdmUtc2VjdGlvbj0ubm90ZSAtLXByZXNlcnZlLWRhdGVzICclcyciICUg
KHBhdGhwcmVmaXgsIHN0cmlwLCBmaWxlKSwgc2hlbGw9VHJ1ZSkKCiAgICBuZXdtb2RlID0gTm9u
ZQogICAgaWYgbm90IG9zLmFjY2VzcyhmaWxlLCBvcy5XX09LKSBvciBvcy5hY2Nlc3MoZmlsZSwg
b3MuUl9PSyk6CiAgICAgICAgb3JpZ21vZGUgPSBvcy5zdGF0KGZpbGUpW3N0YXQuU1RfTU9ERV0K
ICAgICAgICBuZXdtb2RlID0gb3JpZ21vZGUgfCBzdGF0LlNfSVdSSVRFIHwgc3RhdC5TX0lSRUFE
CiAgICAgICAgb3MuY2htb2QoZmlsZSwgbmV3bW9kZSkKCiAgICBleHRyYWZsYWdzID0gIiIKCiAg
ICAjIHNwbGl0X2FuZF9zdHJpcF9maWxlcyBpcyBjYWxsaW5nIHRoaXMgd2l0aCBlbGZfdHlwZSBO
b25lLCBjYXVzaW5nOgogICAgIyBUeXBlRXJyb3I6IHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShz
KSBmb3IgJjogJ05vbmVUeXBlJyBhbmQgJ2ludCcKICAgIGlmIGVsZnR5cGU6CiAgICAgICAgIyAu
c28gYW5kIHNoYXJlZCBsaWJyYXJ5CiAgICAgICAgaWYgIi5zbyIgaW4gZmlsZSBhbmQgZWxmdHlw
ZSAmIDg6CiAgICAgICAgICAgIGV4dHJhZmxhZ3MgPSAiLS1yZW1vdmUtc2VjdGlvbj0uY29tbWVu
dCAtLXJlbW92ZS1zZWN0aW9uPS5ub3RlIC0tc3RyaXAtdW5uZWVkZWQiCiAgICAgICAgIyBzaGFy
ZWQgb3IgZXhlY3V0YWJsZToKICAgICAgICBlbGlmIGVsZnR5cGUgJiA4IG9yIGVsZnR5cGUgJiA0
OgogICAgICAgICAgICBleHRyYWZsYWdzID0gIi0tcmVtb3ZlLXNlY3Rpb249LmNvbW1lbnQgLS1y
ZW1vdmUtc2VjdGlvbj0ubm90ZSIKCiAgICBzdHJpcGNtZCA9ICInJXMnICVzICclcyciICUgKHN0
cmlwLCBleHRyYWZsYWdzLCBmaWxlKQogICAgYmIuZGVidWcoMSwgInJ1bnN0cmlwOiAlcyIgJSBz
dHJpcGNtZCkKCiAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIiVzJXMiICUgKHBhdGhwcmVmaXgs
IHN0cmlwY21kKSwgc2hlbGw9VHJ1ZSkKCiAgICBpZiBuZXdtb2RlOgogICAgICAgIG9zLmNobW9k
KGZpbGUsIG9yaWdtb2RlKQoKICAgIGlmIHJldDoKICAgICAgICBiYi5lcnJvcigicnVuc3RyaXA6
ICclcycgc3RyaXAgY29tbWFuZCBmYWlsZWQiICUgc3RyaXBjbWQpCgogICAgcmV0dXJuIDAKfQoK
CnB5dGhvbiBjaGVja19zYW5pdHlfdmFsaWRtYWNoaW5lICgpIHsKZGVmIGNoZWNrX3Nhbml0eV92
YWxpZG1hY2hpbmUoc2FuaXR5X2RhdGEpOgogICAgbWVzc2FnZXMgPSAiIgoKICAgICMgQ2hlY2sg
VFVORV9BUkNIIGlzIHNldAogICAgaWYgc2FuaXR5X2RhdGEuZ2V0VmFyKCdUVU5FX0FSQ0gnLCBU
cnVlKSA9PSAnSU5WQUxJRCc6CiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICdUVU5FX0FS
Q0ggaXMgdW5zZXQuIFBsZWFzZSBlbnN1cmUgeW91ciBNQUNISU5FIGNvbmZpZ3VyYXRpb24gaW5j
bHVkZXMgYSB2YWxpZCB0dW5lIGNvbmZpZ3VyYXRpb24gZmlsZSB3aGljaCB3aWxsIHNldCB0aGlz
IGNvcnJlY3RseS5cbicKCiAgICAjIENoZWNrIFRBUkdFVF9PUyBpcyBzZXQKICAgIGlmIHNhbml0
eV9kYXRhLmdldFZhcignVEFSR0VUX09TJywgVHJ1ZSkgPT0gJ0lOVkFMSUQnOgogICAgICAgIG1l
c3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHNldCBUQVJHRVRfT1MgZGlyZWN0bHksIG9yIGNo
b29zZSBhIE1BQ0hJTkUgb3IgRElTVFJPIHRoYXQgZG9lcyBzby5cbicKCiAgICAjIENoZWNrIHRo
YXQgd2UgZG9uJ3QgaGF2ZSBkdXBsaWNhdGUgZW50cmllcyBpbiBQQUNLQUdFX0FSQ0hTICYgdGhh
dCBUVU5FX1BLR0FSQ0ggaXMgaW4gUEFDS0FHRV9BUkNIUwogICAgcGtnYXJjaHMgPSBzYW5pdHlf
ZGF0YS5nZXRWYXIoJ1BBQ0tBR0VfQVJDSFMnLCBUcnVlKQogICAgdHVuZXBrZyA9IHNhbml0eV9k
YXRhLmdldFZhcignVFVORV9QS0dBUkNIJywgVHJ1ZSkKICAgIHR1bmVmb3VuZCA9IEZhbHNlCiAg
ICBzZWVuID0ge30KICAgIGR1cHMgPSBbXQoKICAgIGZvciBwYSBpbiBwa2dhcmNocy5zcGxpdCgp
OgogICAgICAgIGlmIHNlZW4uZ2V0KHBhLCAwKSA9PSAxOgogICAgICAgICAgICBkdXBzLmFwcGVu
ZChwYSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWVuW3BhXSA9IDEKICAgICAgICBpZiBw
YSA9PSB0dW5lcGtnOgogICAgICAgICAgICB0dW5lZm91bmQgPSBUcnVlCgogICAgaWYgbGVuKGR1
cHMpOgogICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICJFcnJvciwgdGhlIFBBQ0tBR0VfQVJD
SFMgdmFyaWFibGUgY29udGFpbnMgZHVwbGljYXRlcy4gVGhlIGZvbGxvd2luZyBhcmNocyBhcmUg
bGlzdGVkIG1vcmUgdGhhbiBvbmNlOiAlcyIgJSAiICIuam9pbihkdXBzKQoKICAgIGlmIHR1bmVm
b3VuZCA9PSBGYWxzZToKICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiRXJyb3IsIHRoZSBQ
QUNLQUdFX0FSQ0hTIHZhcmlhYmxlIGRvZXMgbm90IGNvbnRhaW4gVFVORV9QS0dBUkNIICglcyku
IiAlIHR1bmVwa2cKCiAgICByZXR1cm4gbWVzc2FnZXMKCn0KCgpweXRob24gcGFja2FnZV9xYV9j
aGVja19kZXNrdG9wICgpIHsKZGVmIHBhY2thZ2VfcWFfY2hlY2tfZGVza3RvcChwYXRoLCBuYW1l
LCBkLCBlbGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgUnVuIGFsbCBkZXNrdG9wIGZpbGVzIHRo
cm91Z2ggZGVza3RvcC1maWxlLXZhbGlkYXRlLgogICAgIiIiCiAgICBpZiBwYXRoLmVuZHN3aXRo
KCIuZGVza3RvcCIpOgogICAgICAgIGRlc2t0b3BfZmlsZV92YWxpZGF0ZSA9IG9zLnBhdGguam9p
bihkLmdldFZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJyxUcnVlKSwnZGVza3RvcC1maWxlLXZh
bGlkYXRlJykKICAgICAgICBvdXRwdXQgPSBvcy5wb3BlbigiJXMgJXMiICUgKGRlc2t0b3BfZmls
ZV92YWxpZGF0ZSwgcGF0aCkpCiAgICAgICAgIyBUaGlzIG9ubHkgcHJvZHVjZXMgb3V0cHV0IG9u
IGVycm9ycwogICAgICAgIGZvciBsIGluIG91dHB1dDoKICAgICAgICAgICAgbWVzc2FnZXMuYXBw
ZW5kKCJEZXNrdG9wIGZpbGUgaXNzdWU6ICIgKyBsLnN0cmlwKCkpCn0KCgpweXRob24gZ2V0X2Rp
c2tzdGF0cyAoKSB7CmRlZiBnZXRfZGlza3N0YXRzKGRldik6CiAgICBpbXBvcnQgaXRlcnRvb2xz
CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEZvciBpbmZvIG9uIHdoYXQgdGhlc2UgYXJl
LCBzZWUga2VybmVsIGRvYyBmaWxlIGlvc3RhdHMudHh0CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAgICBEU1RBVF9LRVlTID0gWydSZWFkc0NvbXAnLCAnUmVhZHNNZXJnZWQnLCAnU2VjdFJlYWQn
LCAnVGltZVJlYWRzJywgJ1dyaXRlc0NvbXAnLCAnU2VjdFdyaXRlJywgJ1RpbWVXcml0ZScsICdJ
T2luUHJvZ3Jlc3MnLCAnVGltZUlPJywgJ1dUaW1lSU8nXQogICAgdHJ5OgogICAgICAgIGZvciB4
IGluIG9wZW4oIi9wcm9jL2Rpc2tzdGF0cyIsICJyIik6CiAgICAgICAgICAgIGlmIGRldiBpbiB4
OgogICAgICAgICAgICAgICAgZGlza3N0YXRzX3ZhbCA9IHgucnN0cmlwKCkuc3BsaXQoKVs0Ol0K
ICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CiAgICAgICAgcmV0dXJuCiAgICBkaXNrc3RhdHMgPSBk
aWN0KGl0ZXJ0b29scy5pemlwKERTVEFUX0tFWVMsIGRpc2tzdGF0c192YWwpKQogICAgcmV0dXJu
IGRpc2tzdGF0cwp9CgoKcHl0aG9uIHNyY19wYXRjaGVzICgpIHsKZGVmIHNyY19wYXRjaGVzKGQs
IGFsbCA9IEZhbHNlICk6CiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKQog
ICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goW10sIGQpCiAgICBwYXRjaGVzID0gW10KICAgIHNv
dXJjZXMgPSBbXQogICAgZm9yIHVybCBpbiBmZXRjaC51cmxzOgogICAgICAgIGxvY2FsID0gcGF0
Y2hfcGF0aCh1cmwsIGZldGNoLCB3b3JrZGlyKQogICAgICAgIGlmIG5vdCBsb2NhbDoKICAgICAg
ICAgICAgaWYgYWxsOgogICAgICAgICAgICAgICAgbG9jYWwgPSBmZXRjaC5sb2NhbHBhdGgodXJs
KQogICAgICAgICAgICAgICAgc291cmNlcy5hcHBlbmQobG9jYWwpCiAgICAgICAgICAgIGNvbnRp
bnVlCgogICAgICAgIHVybGRhdGEgPSBmZXRjaC51ZFt1cmxdCiAgICAgICAgcGFybSA9IHVybGRh
dGEucGFybQogICAgICAgIHBhdGNobmFtZSA9IHBhcm0uZ2V0KCdwbmFtZScpIG9yIG9zLnBhdGgu
YmFzZW5hbWUobG9jYWwpCgogICAgICAgIGFwcGx5LCByZWFzb24gPSBzaG91bGRfYXBwbHkocGFy
bSwgZCkKICAgICAgICBpZiBub3QgYXBwbHk6CiAgICAgICAgICAgIGlmIHJlYXNvbjoKICAgICAg
ICAgICAgICAgIGJiLm5vdGUoIlBhdGNoICVzICVzIiAlIChwYXRjaG5hbWUsIHJlYXNvbikpCiAg
ICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIHBhdGNocGFybSA9IHsncGF0Y2huYW1lJzogcGF0
Y2huYW1lfQogICAgICAgIGlmICJzdHJpcGxldmVsIiBpbiBwYXJtOgogICAgICAgICAgICBzdHJp
cGxldmVsID0gcGFybVsic3RyaXBsZXZlbCJdCiAgICAgICAgZWxpZiAicG51bSIgaW4gcGFybToK
ICAgICAgICAgICAgI2JiLm1zZy53YXJuKE5vbmUsICJEZXByZWNhdGVkIHVzYWdlIG9mICdwbnVt
JyB1cmwgcGFyYW1ldGVyIGluICclcycsIHBsZWFzZSB1c2UgJ3N0cmlwbGV2ZWwnIiAlIHVybCkK
ICAgICAgICAgICAgc3RyaXBsZXZlbCA9IHBhcm1bInBudW0iXQogICAgICAgIGVsc2U6CiAgICAg
ICAgICAgIHN0cmlwbGV2ZWwgPSAnMScKICAgICAgICBwYXRjaHBhcm1bJ3N0cmlwbGV2ZWwnXSA9
IHN0cmlwbGV2ZWwKCiAgICAgICAgcGF0Y2hkaXIgPSBwYXJtLmdldCgncGF0Y2hkaXInKQogICAg
ICAgIGlmIHBhdGNoZGlyOgogICAgICAgICAgICBwYXRjaHBhcm1bJ3BhdGNoZGlyJ10gPSBwYXRj
aGRpcgoKICAgICAgICBsb2NhbHVybCA9IGJiLmVuY29kZXVybCgoJ2ZpbGUnLCAnJywgbG9jYWws
ICcnLCAnJywgcGF0Y2hwYXJtKSkKICAgICAgICBwYXRjaGVzLmFwcGVuZChsb2NhbHVybCkKCiAg
ICBpZiBhbGw6CiAgICAgICAgcmV0dXJuIHNvdXJjZXMKCiAgICByZXR1cm4gcGF0Y2hlcwp9CgoK
cHl0aG9uIGNoZWNrX2NvbmZfZXhpc3RzICgpIHsKZGVmIGNoZWNrX2NvbmZfZXhpc3RzKGZuLCBk
YXRhKToKICAgIGJicGF0aCA9IFtdCiAgICBmbiA9IGRhdGEuZXhwYW5kKGZuKQogICAgdmJicGF0
aCA9IGRhdGEuZ2V0VmFyKCJCQlBBVEgiKQogICAgaWYgdmJicGF0aDoKICAgICAgICBiYnBhdGgg
Kz0gdmJicGF0aC5zcGxpdCgiOiIpCiAgICBmb3IgcCBpbiBiYnBhdGg6CiAgICAgICAgY3Vycm5h
bWUgPSBvcy5wYXRoLmpvaW4oZGF0YS5leHBhbmQocCksIGZuKQogICAgICAgIGlmIG9zLmFjY2Vz
cyhjdXJybmFtZSwgb3MuUl9PSyk6CiAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICByZXR1cm4g
RmFsc2UKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2hhc2hfc3R5bGUgKCkgewpkZWYgcGFja2FnZV9x
YV9oYXNoX3N0eWxlKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIiCiAgICBD
aGVjayBpZiB0aGUgYmluYXJ5IGhhcyB0aGUgcmlnaHQgaGFzaCBzdHlsZS4uLgogICAgIiIiCgog
ICAgaWYgbm90IGVsZjoKICAgICAgICByZXR1cm4KCiAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRo
KToKICAgICAgICByZXR1cm4KCiAgICBnbnVfaGFzaCA9ICItLWhhc2gtc3R5bGU9Z251IiBpbiBk
LmdldFZhcignTERGTEFHUycsIFRydWUpCiAgICBpZiBub3QgZ251X2hhc2g6CiAgICAgICAgZ251
X2hhc2ggPSAiLS1oYXNoLXN0eWxlPWJvdGgiIGluIGQuZ2V0VmFyKCdMREZMQUdTJywgVHJ1ZSkK
ICAgIGlmIG5vdCBnbnVfaGFzaDoKICAgICAgICByZXR1cm4KCiAgICBvYmpkdW1wID0gZC5nZXRW
YXIoJ09CSkRVTVAnLCBUcnVlKQogICAgZW52X3BhdGggPSBkLmdldFZhcignUEFUSCcsIFRydWUp
CgogICAgc2FuZSA9IEZhbHNlCiAgICBoYXNfc3ltcyA9IEZhbHNlCgogICAgIyBJZiB0aGlzIGJp
bmFyeSBoYXMgc3ltYm9scywgd2UgZXhwZWN0IGl0IHRvIGhhdmUgR05VX0hBU0ggdG9vLgogICAg
Zm9yIGxpbmUgaW4gb3MucG9wZW4oIkxDX0FMTD1DIFBBVEg9JXMgJXMgLXAgJyVzJyAyPiAvZGV2
L251bGwiICUgKGVudl9wYXRoLCBvYmpkdW1wLCBwYXRoKSwgInIiKToKICAgICAgICBpZiAiU1lN
VEFCIiBpbiBsaW5lOgogICAgICAgICAgICBoYXNfc3ltcyA9IFRydWUKICAgICAgICBpZiAiR05V
X0hBU0giIGluIGxpbmU6CiAgICAgICAgICAgIHNhbmUgPSBUcnVlCiAgICAgICAgaWYgIlttaXBz
MzJdIiBpbiBsaW5lIG9yICJbbWlwczY0XSIgaW4gbGluZToKCSAgICBzYW5lID0gVHJ1ZQoKICAg
IGlmIGhhc19zeW1zIGFuZCBub3Qgc2FuZToKICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIk5vIEdO
VV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OiAnJXMnIiAlIHBhdGgpCgp9CgoKcHl0aG9uIHNob3Vs
ZF9hcHBseSAoKSB7CmRlZiBzaG91bGRfYXBwbHkocGFybSwgZCk6CiAgICAiIiJEZXRlcm1pbmUg
aWYgd2Ugc2hvdWxkIGFwcGx5IHRoZSBnaXZlbiBwYXRjaCIiIgoKICAgIGlmICJtaW5kYXRlIiBp
biBwYXJtIG9yICJtYXhkYXRlIiBpbiBwYXJtOgogICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJywg
VHJ1ZSkKICAgICAgICBzcmNkYXRlID0gZC5nZXRWYXIoJ1NSQ0RBVEVfJXMnICUgcG4sIFRydWUp
CiAgICAgICAgaWYgbm90IHNyY2RhdGU6CiAgICAgICAgICAgIHNyY2RhdGUgPSBkLmdldFZhcign
U1JDREFURScsIFRydWUpCgogICAgICAgIGlmIHNyY2RhdGUgPT0gIm5vdyI6CiAgICAgICAgICAg
IHNyY2RhdGUgPSBkLmdldFZhcignREFURScsIFRydWUpCgogICAgICAgIGlmICJtYXhkYXRlIiBp
biBwYXJtIGFuZCBwYXJtWyJtYXhkYXRlIl0gPCBzcmNkYXRlOgogICAgICAgICAgICByZXR1cm4g
RmFsc2UsICdpcyBvdXRkYXRlZCcKCiAgICAgICAgaWYgIm1pbmRhdGUiIGluIHBhcm0gYW5kIHBh
cm1bIm1pbmRhdGUiXSA+IHNyY2RhdGU6CiAgICAgICAgICAgIHJldHVybiBGYWxzZSwgJ2lzIHBy
ZWRhdGVkJwoKCiAgICBpZiAibWlucmV2IiBpbiBwYXJtOgogICAgICAgIHNyY3JldiA9IGQuZ2V0
VmFyKCdTUkNSRVYnLCBUcnVlKQogICAgICAgIGlmIHNyY3JldiBhbmQgc3JjcmV2IDwgcGFybVsi
bWlucmV2Il06CiAgICAgICAgICAgIHJldHVybiBGYWxzZSwgJ2FwcGxpZXMgdG8gbGF0ZXIgcmV2
aXNpb25zJwoKICAgIGlmICJtYXhyZXYiIGluIHBhcm06CiAgICAgICAgc3JjcmV2ID0gZC5nZXRW
YXIoJ1NSQ1JFVicsIFRydWUpCiAgICAgICAgaWYgc3JjcmV2IGFuZCBzcmNyZXYgPiBwYXJtWyJt
YXhyZXYiXToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAnYXBwbGllcyB0byBlYXJsaWVyIHJl
dmlzaW9ucycKCiAgICBpZiAicmV2IiBpbiBwYXJtOgogICAgICAgIHNyY3JldiA9IGQuZ2V0VmFy
KCdTUkNSRVYnLCBUcnVlKQogICAgICAgIGlmIHNyY3JldiBhbmQgcGFybVsicmV2Il0gbm90IGlu
IHNyY3JldjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiZG9lc24ndCBhcHBseSB0byByZXZp
c2lvbiIKCiAgICBpZiAibm90cmV2IiBpbiBwYXJtOgogICAgICAgIHNyY3JldiA9IGQuZ2V0VmFy
KCdTUkNSRVYnLCBUcnVlKQogICAgICAgIGlmIHNyY3JldiBhbmQgcGFybVsibm90cmV2Il0gaW4g
c3JjcmV2OgogICAgICAgICAgICByZXR1cm4gRmFsc2UsICJkb2Vzbid0IGFwcGx5IHRvIHJldmlz
aW9uIgoKICAgIHJldHVybiBUcnVlLCBOb25lCn0KCgpweXRob24gcG9wdWxhdGVfcGFja2FnZXMg
KCkgewogICAgaW1wb3J0IGdsb2IsIHN0YXQsIGVycm5vLCByZSwgc3VicHJvY2VzcwoKICAgIHdv
cmtkaXIgPSBkLmdldFZhcignV09SS0RJUicsIFRydWUpCiAgICBvdXRkaXIgPSBkLmdldFZhcign
REVQTE9ZX0RJUicsIFRydWUpCiAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnLCBUcnVlKQogICAg
cGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKQogICAgcG4gPSBkLmdldFZhcign
UE4nLCBUcnVlKQoKICAgIGJiLm1rZGlyaGllcihvdXRkaXIpCiAgICBvcy5jaGRpcihkdmFyKQoK
ICAgICMgU2FuaXR5IGNoZWNrIFBBQ0tBR0VTIGZvciBkdXBsaWNhdGVzIGFuZCBmb3IgTElDRU5T
RV9FWENMVVNJT04KICAgICMgU2FuaXR5IHNob3VsZCBiZSBtb3ZlZCB0byBzYW5pdHkuYmJjbGFz
cyBvbmNlIHdlIGhhdmUgdGhlIGluZnJhc3R1Y3R1cmUKICAgIHBhY2thZ2VfbGlzdCA9IFtdCgog
ICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgIGlmIGQuZ2V0VmFyKCdMSUNF
TlNFX0VYQ0xVU0lPTi0nICsgcGtnLCBUcnVlKToKICAgICAgICAgICAgYmIud2FybigiJXMgaGFz
IGFuIGluY29tcGF0aWJsZSBsaWNlbnNlLiBFeGNsdWRpbmcgZnJvbSBwYWNrYWdpbmcuIiAlIHBr
ZykKICAgICAgICAgICAgcGFja2FnZXMucmVtb3ZlKHBrZykKICAgICAgICBlbHNlOgogICAgICAg
ICAgICBpZiBwa2cgaW4gcGFja2FnZV9saXN0OgogICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVz
IGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNr
YWdpbmcgZXJyb3JzLiIgJSBwa2cpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBw
YWNrYWdlX2xpc3QuYXBwZW5kKHBrZykKICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2lu
KHBhY2thZ2VfbGlzdCkpCiAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnLCBUcnVlKQog
ICAgc3VicHJvY2Vzcy5jYWxsKCdybSAtcmYgJXMnICUgcGtnZGVzdCwgc2hlbGw9VHJ1ZSkKCiAg
ICBzZWVuID0gW10KCiAgICBmb3IgcGtnIGluIHBhY2thZ2VfbGlzdDoKICAgICAgICBsb2NhbGRh
dGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICAgICByb290ID0gb3MucGF0aC5qb2luKHBr
Z2Rlc3QsIHBrZykKICAgICAgICBiYi5ta2RpcmhpZXIocm9vdCkKCiAgICAgICAgbG9jYWxkYXRh
LnNldFZhcignUEtHJywgcGtnKQogICAgICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIo
J09WRVJSSURFUycsIFRydWUpCiAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKICAgICAgICAgICAg
cmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKICAgICAg
ICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBvdmVycmlkZXMgKyAnOicgKyBwa2cpCiAg
ICAgICAgYmIuZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgICAgIGZpbGVzdmFyID0g
bG9jYWxkYXRhLmdldFZhcignRklMRVMnLCBUcnVlKSBvciAiIgogICAgICAgIGZpbGVzID0gZmls
ZXN2YXIuc3BsaXQoKQogICAgICAgIGZpbGVfbGlua3MgPSB7fQogICAgICAgIGZvciBmaWxlIGlu
IGZpbGVzOgogICAgICAgICAgICBpZiBmaWxlLmZpbmQoIi8vIikgIT0gLTE6CiAgICAgICAgICAg
ICAgICBiYi53YXJuKCJGSUxFUyB2YXJpYWJsZSBmb3IgcGFja2FnZSAlcyBjb250YWlucyAnLy8n
IHdoaWNoIGlzIGludmFsaWQuIEF0dGVtcHRpbmcgdG8gZml4IHRoaXMgYnV0IHlvdSBzaG91bGQg
Y29ycmVjdCB0aGUgbWV0YWRhdGEuXG4iICUgcGtnKQogICAgICAgICAgICAgICAgZmlsZS5yZXBs
YWNlKCIvLyIsICIvIikKICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhmaWxlKToKICAgICAg
ICAgICAgICAgIGZpbGUgPSAnLicgKyBmaWxlCiAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlz
bGluayhmaWxlKToKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZSk6CiAgICAg
ICAgICAgICAgICAgICAgbmV3ZmlsZXMgPSAgWyBvcy5wYXRoLmpvaW4oZmlsZSx4KSBmb3IgeCBp
biBvcy5saXN0ZGlyKGZpbGUpIF0KICAgICAgICAgICAgICAgICAgICBpZiBuZXdmaWxlczoKICAg
ICAgICAgICAgICAgICAgICAgICAgZmlsZXMgKz0gbmV3ZmlsZXMKICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKICAgICAgICAgICAgZ2xvYmJlZCA9IGdsb2IuZ2xvYihmaWxlKQogICAg
ICAgICAgICBpZiBnbG9iYmVkOgogICAgICAgICAgICAgICAgaWYgWyBmaWxlIF0gIT0gZ2xvYmJl
ZDoKICAgICAgICAgICAgICAgICAgICBmaWxlcyArPSBnbG9iYmVkCiAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKICAgICAgICAgICAgaWYgKG5vdCBvcy5wYXRoLmlzbGluayhmaWxlKSkgYW5k
IChub3Qgb3MucGF0aC5leGlzdHMoZmlsZSkpOgogICAgICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgICAgaWYgZmlsZSBpbiBzZWVuOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAg
ICAgICAgc2Vlbi5hcHBlbmQoZmlsZSkKCiAgICAgICAgICAgIGRlZiBta2RpcihzcmMsIGRlc3Qs
IHApOgogICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNyYywgcCkKICAgICAgICAg
ICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oZGVzdCwgcCkKICAgICAgICAgICAgICAgIGJiLm1r
ZGlyaGllcihkZXN0KQogICAgICAgICAgICAgICAgZnN0YXQgPSBvcy5zdGF0KHNyYykKICAgICAg
ICAgICAgICAgIG9zLmNobW9kKGRlc3QsIGZzdGF0LnN0X21vZGUpCiAgICAgICAgICAgICAgICBv
cy5jaG93bihkZXN0LCBmc3RhdC5zdF91aWQsIGZzdGF0LnN0X2dpZCkKICAgICAgICAgICAgICAg
IGlmIHAgbm90IGluIHNlZW46CiAgICAgICAgICAgICAgICAgICAgc2Vlbi5hcHBlbmQocCkKCiAg
ICAgICAgICAgIGRlZiBta2Rpcl9yZWN1cnNlKHNyYywgZGVzdCwgcGF0aHMpOgogICAgICAgICAg
ICAgICAgd2hpbGUgcGF0aHMuc3RhcnRzd2l0aCgiLi8iKToKICAgICAgICAgICAgICAgICAgICBw
YXRocyA9IHBhdGhzWzI6XQogICAgICAgICAgICAgICAgcCA9ICIuIgogICAgICAgICAgICAgICAg
Zm9yIGMgaW4gcGF0aHMuc3BsaXQoIi8iKToKICAgICAgICAgICAgICAgICAgICBwID0gb3MucGF0
aC5qb2luKHAsIGMpCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihkZXN0LCBwKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIG1rZGlyKHNyYywg
ZGVzdCwgcCkKCiAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZSkgYW5kIG5vdCBvcy5w
YXRoLmlzbGluayhmaWxlKToKICAgICAgICAgICAgICAgIG1rZGlyX3JlY3Vyc2UoZHZhciwgcm9v
dCwgZmlsZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBta2Rpcl9yZWN1
cnNlKGR2YXIsIHJvb3QsIG9zLnBhdGguZGlybmFtZShmaWxlKSkKICAgICAgICAgICAgZnBhdGgg
PSBvcy5wYXRoLmpvaW4ocm9vdCxmaWxlKQogICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xp
bmsoZmlsZSk6CiAgICAgICAgICAgICAgICBvcy5saW5rKGZpbGUsIGZwYXRoKQogICAgICAgICAg
ICAgICAgZnN0YXQgPSBvcy5zdGF0KGZpbGUpCiAgICAgICAgICAgICAgICBvcy5jaG1vZChmcGF0
aCwgZnN0YXQuc3RfbW9kZSkKICAgICAgICAgICAgICAgIG9zLmNob3duKGZwYXRoLCBmc3RhdC5z
dF91aWQsIGZzdGF0LnN0X2dpZCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAg
IHJldCA9IGJiLmNvcHlmaWxlKGZpbGUsIGZwYXRoKQogICAgICAgICAgICBpZiByZXQgaXMgRmFs
c2Ugb3IgcmV0ID09IDA6CiAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVk
KCJGaWxlIHBvcHVsYXRpb24gZmFpbGVkIikKCiAgICAgICAgZGVsIGxvY2FsZGF0YQogICAgb3Mu
Y2hkaXIod29ya2RpcikKCiAgICB1bnNoaXBwZWQgPSBbXQogICAgZm9yIHJvb3QsIGRpcnMsIGZp
bGVzIGluIG9zLndhbGsoZHZhcik6CiAgICAgICAgZGlyID0gcm9vdFtsZW4oZHZhcik6XQogICAg
ICAgIGlmIG5vdCBkaXI6CiAgICAgICAgICAgIGRpciA9IG9zLnNlcAogICAgICAgIGZvciBmIGlu
IChmaWxlcyArIGRpcnMpOgogICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpciwgZikK
ICAgICAgICAgICAgaWYgKCcuJyArIHBhdGgpIG5vdCBpbiBzZWVuOgogICAgICAgICAgICAgICAg
dW5zaGlwcGVkLmFwcGVuZChwYXRoKQoKICAgIGlmIHVuc2hpcHBlZCAhPSBbXToKICAgICAgICBt
c2cgPSBwbiArICI6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3Qgc2hp
cHBlZCIKICAgICAgICBpZiAiaW5zdGFsbGVkX3ZzX3NoaXBwZWQiIGluIChkLmdldFZhcignSU5T
QU5FX1NLSVBfJyArIHBuLCBUcnVlKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgYmIubm90
ZSgiUGFja2FnZSAlcyBza2lwcGluZyBRQSB0ZXN0czogaW5zdGFsbGVkX3ZzX3NoaXBwZWQiICUg
cG4pCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIGYgaW4gdW5zaGlwcGVkOgogICAgICAg
ICAgICAgICAgbXNnID0gbXNnICsgIlxuICAiICsgZgogICAgICAgICAgICBwYWNrYWdlX3FhX2hh
bmRsZV9lcnJvcigiaW5zdGFsbGVkX3ZzX3NoaXBwZWQiLCBtc2csIGQpCgogICAgYmIuYnVpbGQu
ZXhlY19mdW5jKCJwYWNrYWdlX25hbWVfaG9vayIsIGQpCgogICAgZm9yIHBrZyBpbiBwYWNrYWdl
X2xpc3Q6CiAgICAgICAgcGtnbmFtZSA9IGQuZ2V0VmFyKCdQS0dfJXMnICUgcGtnLCBUcnVlKQog
ICAgICAgIGlmIHBrZ25hbWUgaXMgTm9uZToKICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR18lcycg
JSBwa2csIHBrZykKCiAgICBkYW5nbGluZ19saW5rcyA9IHt9CiAgICBwa2dfZmlsZXMgPSB7fQog
ICAgZm9yIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CiAgICAgICAgZGFuZ2xpbmdfbGlua3NbcGtnXSA9
IFtdCiAgICAgICAgcGtnX2ZpbGVzW3BrZ10gPSBbXQogICAgICAgIGluc3Rfcm9vdCA9IG9zLnBh
dGguam9pbihwa2dkZXN0LCBwa2cpCiAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9z
LndhbGsoaW5zdF9yb290KToKICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAg
ICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCiAgICAgICAgICAgICAgICBycGF0aCA9
IHBhdGhbbGVuKGluc3Rfcm9vdCk6XQogICAgICAgICAgICAgICAgcGtnX2ZpbGVzW3BrZ10uYXBw
ZW5kKHJwYXRoKQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHMgPSBv
cy5zdGF0KHBhdGgpCiAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciwgKGVyciwgc3RyZXJy
b3IpOgogICAgICAgICAgICAgICAgICAgIGlmIGVyciAhPSBlcnJuby5FTk9FTlQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gb3MucmVh
ZGxpbmsocGF0aCkKICAgICAgICAgICAgICAgICAgICBpZiB0YXJnZXRbMF0gIT0gJy8nOgogICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBvcy5wYXRoLmpvaW4ocm9vdFtsZW4oaW5zdF9y
b290KTpdLCB0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgZGFuZ2xpbmdfbGlua3NbcGtnXS5h
cHBlbmQob3MucGF0aC5ub3JtcGF0aCh0YXJnZXQpKQoKICAgIGZvciBwa2cgaW4gcGFja2FnZV9s
aXN0OgogICAgICAgIHJkZXBlbmRzID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMoZC5n
ZXRWYXIoJ1JERVBFTkRTXycgKyBwa2csIFRydWUpIG9yIGQuZ2V0VmFyKCdSREVQRU5EUycsIFRy
dWUpIG9yICIiKQoKICAgICAgICBmb3IgbCBpbiBkYW5nbGluZ19saW5rc1twa2ddOgogICAgICAg
ICAgICBmb3VuZCA9IEZhbHNlCiAgICAgICAgICAgIGJiLmRlYnVnKDEsICIlcyBjb250YWlucyBk
YW5nbGluZyBsaW5rICVzIiAlIChwa2csIGwpKQogICAgICAgICAgICBmb3IgcCBpbiBwYWNrYWdl
X2xpc3Q6CiAgICAgICAgICAgICAgICBmb3IgZiBpbiBwa2dfZmlsZXNbcF06CiAgICAgICAgICAg
ICAgICAgICAgaWYgZiA9PSBsOgogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUK
ICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgInRhcmdldCBmb3VuZCBpbiAlcyIg
JSBwKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBwID09IHBrZzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHJk
ZXBlbmRzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRlcGVuZHNbcF0gPSAiIgogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBmb3VuZCA9PSBGYWxzZToK
ICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIGNvbnRhaW5zIGRhbmdsaW5nIHN5bWxpbmsgdG8g
JXMiICUgKHBrZywgbCkpCiAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBwa2csIGJiLnV0
aWxzLmpvaW5fZGVwcyhyZGVwZW5kcywgY29tbWFzZXA9RmFsc2UpKQp9CgoKcHl0aG9uIHBhY2th
Z2VfcWFfY2hlY2tfYnVpbGRwYXRocyAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNrX2J1aWxkcGF0
aHMocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CiAgICAiIiIKICAgIENoZWNrIGZvciBi
dWlsZCBwYXRocyBpbnNpZGUgdGFyZ2V0IGZpbGVzIGFuZCBlcnJvciBpZiBub3QgZm91bmQgaW4g
dGhlIHdoaXRlbGlzdAogICAgIiIiCiAgICAjIElnbm9yZSAuZGVidWcgZmlsZXMsIG5vdCBpbnRl
cmVzdGluZwogICAgaWYgcGF0aC5maW5kKCIuZGVidWciKSAhPSAtMToKICAgICAgICByZXR1cm4K
CiAgICAjIElnbm9yZSBzeW1saW5rcwogICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAg
ICAgcmV0dXJuCgogICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicsIFRydWUpCiAgICBmaWxl
X2NvbnRlbnQgPSBvcGVuKHBhdGgpLnJlYWQoKQogICAgaWYgdG1wZGlyIGluIGZpbGVfY29udGVu
dDoKICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIkZpbGUgJXMgaW4gcGFja2FnZSBjb250YWluZWQg
cmVmZXJlbmNlIHRvIHRtcGRpciIgJSBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkKfQoK
CnB5dGhvbiBwYWNrYWdlX3FhX2NoZWNrX3N0YWdlZCAoKSB7CmRlZiBwYWNrYWdlX3FhX2NoZWNr
X3N0YWdlZChwYXRoLGQpOgogICAgIiIiCiAgICBDaGVjayBzdGFnZWQgbGEgYW5kIHBjIGZpbGVz
IGZvciBzYW5pdHkKICAgICAgLWUuZy4gaW5zdGFsbGVkIGJlaW5nIGZhbHNlCgogICAgICAgIEFz
IHRoaXMgaXMgcnVuIGFmdGVyIGV2ZXJ5IHN0YWdlIHdlIHNob3VsZCBiZSBhYmxlCiAgICAgICAg
dG8gZmluZCB0aGUgb25lIHJlc3BvbnNpYmxlIGZvciB0aGUgZXJyb3JzIGVhc2lseSBldmVuCiAg
ICAgICAgaWYgd2UgbG9vayBhdCBldmVyeSAucGMgYW5kIC5sYSBmaWxlCiAgICAiIiIKCiAgICBz
YW5lID0gVHJ1ZQogICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicsIFRydWUpCiAgICB3b3Jr
ZGlyID0gb3MucGF0aC5qb2luKHRtcGRpciwgIndvcmsiKQoKICAgIGluc3RhbGxlZCA9ICJpbnN0
YWxsZWQ9eWVzIgogICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlIiwgZCkgb3Ig
YmIuZGF0YS5pbmhlcml0c19jbGFzcygiY3Jvc3MiLCBkKToKICAgICAgICBwa2djb25maWdjaGVj
ayA9IHdvcmtkaXIKICAgIGVsc2U6CiAgICAgICAgcGtnY29uZmlnY2hlY2sgPSB0bXBkaXIKCiAg
ICAjIGZpbmQgYWxsIC5sYSBhbmQgLnBjIGZpbGVzCiAgICAjIHJlYWQgdGhlIGNvbnRlbnQKICAg
ICMgYW5kIGNoZWNrIGZvciBzdHVmZiB0aGF0IGxvb2tzIHdyb25nCiAgICBmb3Igcm9vdCwgZGly
cywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAg
ICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290LGZpbGUpCiAgICAgICAgICAgIGlmIGZp
bGUuZW5kc3dpdGgoIi5sYSIpOgogICAgICAgICAgICAgICAgZmlsZV9jb250ZW50ID0gb3Blbihw
YXRoKS5yZWFkKCkKICAgICAgICAgICAgICAgIGlmIHdvcmtkaXIgaW4gZmlsZV9jb250ZW50Ogog
ICAgICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICIlcyBmYWlsZWQgc2FuaXR5IHRlc3QgKHdv
cmtkaXIpIGluIHBhdGggJXMiICUgKGZpbGUscm9vdCkKICAgICAgICAgICAgICAgICAgICBzYW5l
ID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxhIiwgZXJyb3JfbXNnLCBkKQogICAgICAgICAg
ICBlbGlmIGZpbGUuZW5kc3dpdGgoIi5wYyIpOgogICAgICAgICAgICAgICAgZmlsZV9jb250ZW50
ID0gb3BlbihwYXRoKS5yZWFkKCkKICAgICAgICAgICAgICAgIGlmIHBrZ2NvbmZpZ2NoZWNrIGlu
IGZpbGVfY29udGVudDoKICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiJXMgZmFpbGVk
IHNhbml0eSB0ZXN0ICh0bXBkaXIpIGluIHBhdGggJXMiICUgKGZpbGUscm9vdCkKICAgICAgICAg
ICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBrZ2NvbmZpZyIsIGVy
cm9yX21zZywgZCkKCiAgICByZXR1cm4gc2FuZQp9CgoKcHl0aG9uIGJhc2VfZG9fdW5wYWNrICgp
IHsKICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknLCBUcnVlKSBvciAiIikuc3BsaXQo
KQogICAgaWYgbGVuKHNyY191cmkpID09IDA6CiAgICAgICAgcmV0dXJuCgogICAgbG9jYWxkYXRh
ID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICBiYi5kYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0
YSkKCiAgICByb290ZGlyID0gbG9jYWxkYXRhLmdldFZhcignV09SS0RJUicsIFRydWUpCgogICAg
dHJ5OgogICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgbG9jYWxkYXRh
KQogICAgICAgIGZldGNoZXIudW5wYWNrKHJvb3RkaXIpCiAgICBleGNlcHQgYmIuZmV0Y2gyLkJC
RmV0Y2hFeGNlcHRpb24sIGU6CiAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZChlKQp9
CgoKcHl0aG9uIGRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUgKCkgewogICAgc3N0YXRlX3Nl
dHNjZW5lKGQpCn0KCgpweXRob24gZ2V0X2xheWVyc19icmFuY2hfcmV2ICgpIHsKZGVmIGdldF9s
YXllcnNfYnJhbmNoX3JldihkKToKICAgIGxheWVycyA9IChkLmdldFZhcigiQkJMQVlFUlMiLCBU
cnVlKSBvciAiIikuc3BsaXQoKQogICAgbGF5ZXJzX2JyYW5jaF9yZXYgPSBbIiUtMTdzID0gXCIl
czolc1wiIiAlIChvcy5wYXRoLmJhc2VuYW1lKGkpLCBcCiAgICAgICAgYmFzZV9nZXRfbWV0YWRh
dGFfZ2l0X2JyYW5jaChpLCBOb25lKS5zdHJpcCgpLCBcCiAgICAgICAgYmFzZV9nZXRfbWV0YWRh
dGFfZ2l0X3JldmlzaW9uKGksIE5vbmUpKSBcCiAgICAgICAgICAgIGZvciBpIGluIGxheWVyc10K
ICAgIGkgPSBsZW4obGF5ZXJzX2JyYW5jaF9yZXYpLTEKICAgIHAxID0gbGF5ZXJzX2JyYW5jaF9y
ZXZbaV0uZmluZCgiPSIpCiAgICBzMSA9IGxheWVyc19icmFuY2hfcmV2W2ldW3AxOl0KICAgIHdo
aWxlIGkgPiAwOgogICAgICAgIHAyID0gbGF5ZXJzX2JyYW5jaF9yZXZbaS0xXS5maW5kKCI9IikK
ICAgICAgICBzMj0gbGF5ZXJzX2JyYW5jaF9yZXZbaS0xXVtwMjpdCiAgICAgICAgaWYgczEgPT0g
czI6CiAgICAgICAgICAgIGxheWVyc19icmFuY2hfcmV2W2ktMV0gPSBsYXllcnNfYnJhbmNoX3Jl
dltpLTFdWzA6cDJdCiAgICAgICAgICAgIGkgLT0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAg
IGkgLT0gMQogICAgICAgICAgICBwMSA9IGxheWVyc19icmFuY2hfcmV2W2ldLmZpbmQoIj0iKQog
ICAgICAgICAgICBzMT0gbGF5ZXJzX2JyYW5jaF9yZXZbaV1bcDE6XQogICAgcmV0dXJuIGxheWVy
c19icmFuY2hfcmV2Cgp9CgoKcHl0aG9uIGJhc2VfZ2V0X3NjbWJhc2VwYXRoICgpIHsKZGVmIGJh
c2VfZ2V0X3NjbWJhc2VwYXRoKGQpOgogICAgcmV0dXJuIGQuZ2V0VmFyKCAnQ09SRUJBU0UnLCBU
cnVlKQp9CgoKcHl0aG9uIHNzdGF0ZV9jbGVhbmFsbCAoKSB7CiAgICBpbXBvcnQgZm5tYXRjaAoK
ICAgIGJiLm5vdGUoIlJlbW92aW5nIHNoYXJlZCBzdGF0ZSBmb3IgcGFja2FnZSAlcyIgJSBkLmdl
dFZhcignUE4nLCBUcnVlKSkKCiAgICBtYW5pZmVzdF9kaXIgPSBkLmdldFZhcignU1NUQVRFX01B
TklGRVNUUycsIFRydWUpCiAgICBtYW5pZmVzdF9wcmVmaXggPSBkLmdldFZhcigiU1NUQVRFX01B
TkZJTEVQUkVGSVgiLCBUcnVlKQogICAgbWFuaWZlc3RfcGF0dGVybiA9IG9zLnBhdGguYmFzZW5h
bWUobWFuaWZlc3RfcHJlZml4KSArICIuKiIKCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFu
aWZlc3RfZGlyKToKICAgICAgICByZXR1cm4KCiAgICBmb3IgbWFuaWZlc3QgaW4gKG9zLmxpc3Rk
aXIobWFuaWZlc3RfZGlyKSk6CiAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKG1hbmlmZXN0LCBt
YW5pZmVzdF9wYXR0ZXJuKToKICAgICAgICAgICAgIG5hbWUgPSBtYW5pZmVzdC5yZXBsYWNlKG1h
bmlmZXN0X3BhdHRlcm5bOi0xXSwgIiIpCiAgICAgICAgICAgICBuYW1lbWFwID0gZC5nZXRWYXIo
J1NTVEFURVRBU0tOQU1FUycsIFRydWUpLnNwbGl0KCkKICAgICAgICAgICAgIHRhc2tzID0gZC5n
ZXRWYXIoJ1NTVEFURVRBU0tTJywgVHJ1ZSkuc3BsaXQoKQogICAgICAgICAgICAgaWYgbmFtZSBu
b3QgaW4gbmFtZW1hcDoKICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHRh
c2tuYW1lID0gdGFza3NbbmFtZW1hcC5pbmRleChuYW1lKV0KICAgICAgICAgICAgIHNoYXJlZF9z
dGF0ZSA9IHNzdGF0ZV9zdGF0ZV9mcm9tdmFycyhkLCB0YXNrbmFtZVszOl0pCiAgICAgICAgICAg
ICBzc3RhdGVfY2xlYW4oc2hhcmVkX3N0YXRlLCBkKQp9CgoKcHl0aG9uIGJhc2VfcGF0aF9vdXQg
KCkgewpkZWYgYmFzZV9wYXRoX291dChwYXRoLCBkKToKICAgIHJldHVybiBvZS5wYXRoLmZvcm1h
dF9kaXNwbGF5KHBhdGgsIGQpCn0KCgpweXRob24gbXVsdGlsaWJfcGtnX2V4dGVuZCAoKSB7CmRl
ZiBtdWx0aWxpYl9wa2dfZXh0ZW5kKGQsIHBrZyk6CiAgICB2YXJpYW50cyA9IChkLmdldFZhcigi
TVVMVElMSUJfVkFSSUFOVFMiLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgaWYgbm90IHZhcmlh
bnRzOgogICAgICAgIHJldHVybiBwa2cKICAgIHBrZ3MgPSBwa2cKICAgIGZvciB2IGluIHZhcmlh
bnRzOgogICAgICAgIHBrZ3MgPSBwa2dzICsgIiAiICsgdiArICItIiArIHBrZwogICAgcmV0dXJu
IHBrZ3MKfQoKCnB5dGhvbiBjaGVja19zYW5pdHlfdmVyc2lvbl9jaGFuZ2UgKCkgewpkZWYgY2hl
Y2tfc2FuaXR5X3ZlcnNpb25fY2hhbmdlKGRhdGEpOgogICAgIyBTYW5pdHkgY2hlY2tzIHRvIGJl
IGRvbmUgd2hlbiBTQU5JVFlfVkVSU0lPTiBjaGFuZ2VzCiAgICByZXR1cm4gIiIKfQoKCnB5dGhv
biBwYWNrYWdlX2RvX3BrZ2NvbmZpZyAoKSB7CiAgICBpbXBvcnQgcmUKCiAgICBwYWNrYWdlcyA9
IGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpCiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktE
SVInLCBUcnVlKQogICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJywgVHJ1ZSkKCiAgICBz
aGxpYnNfZGlyID0gZC5nZXRWYXIoJ1NITElCU0RJUicsIFRydWUpCiAgICBzaGxpYnN3b3JrX2Rp
ciA9IGQuZ2V0VmFyKCdTSExJQlNXT1JLRElSJywgVHJ1ZSkKCiAgICBwY19yZSA9IHJlLmNvbXBp
bGUoJyguKilcLnBjJCcpCiAgICB2YXJfcmUgPSByZS5jb21waWxlKCcoLiopPSguKiknKQogICAg
ZmllbGRfcmUgPSByZS5jb21waWxlKCcoLiopOiAoLiopJykKCiAgICBwa2djb25maWdfcHJvdmlk
ZWQgPSB7fQogICAgcGtnY29uZmlnX25lZWRlZCA9IHt9CiAgICBmb3IgcGtnIGluIHBhY2thZ2Vz
LnNwbGl0KCk6CiAgICAgICAgcGtnY29uZmlnX3Byb3ZpZGVkW3BrZ10gPSBbXQogICAgICAgIHBr
Z2NvbmZpZ19uZWVkZWRbcGtnXSA9IFtdCiAgICAgICAgdG9wID0gb3MucGF0aC5qb2luKHBrZ2Rl
c3QsIHBrZykKICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh0b3ApOgog
ICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIG0gPSBwY19yZS5t
YXRjaChmaWxlKQogICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICBwZCA9
IGJiLmRhdGEuaW5pdCgpCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKICAg
ICAgICAgICAgICAgICAgICBwa2djb25maWdfcHJvdmlkZWRbcGtnXS5hcHBlbmQobmFtZSkKICAg
ICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGUpCiAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhwYXRoLCBvcy5SX09LKToKICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihwYXRoLCAn
cicpCiAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCiAgICAgICAgICAg
ICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAg
ICAgICAgICAgICAgICAgICAgICAgIG0gPSB2YXJfcmUubWF0Y2gobCkKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBtLmdyb3Vw
KDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBtLmdyb3VwKDIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwZC5zZXRWYXIobmFtZSwgcGQuZXhwYW5kKHZhbCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICBt
ID0gZmllbGRfcmUubWF0Y2gobCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhkciA9IG0uZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cCA9IGJiLmRhdGEuZXhwYW5kKG0uZ3JvdXAoMiksIHBkKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgaGRyID09ICdSZXF1aXJlcyc6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGtnY29uZmlnX25lZWRlZFtwa2ddICs9IGV4cC5yZXBsYWNlKCcsJywg
JyAnKS5zcGxpdCgpCgogICAgIyBUYWtlIHNoYXJlZCBsb2NrIHNpbmNlIHdlJ3JlIG9ubHkgcmVh
ZGluZywgbm90IHdyaXRpbmcKICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIi9o
b21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL3BhY2thZ2Utb3V0cHV0
LmxvY2siKSkKCiAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgcGtnc19m
aWxlID0gb3MucGF0aC5qb2luKHNobGlic3dvcmtfZGlyLCBwa2cgKyAiLnBjbGlzdCIpCiAgICAg
ICAgaWYgcGtnY29uZmlnX3Byb3ZpZGVkW3BrZ10gIT0gW106CiAgICAgICAgICAgIGYgPSBvcGVu
KHBrZ3NfZmlsZSwgJ3cnKQogICAgICAgICAgICBmb3IgcCBpbiBwa2djb25maWdfcHJvdmlkZWRb
cGtnXToKICAgICAgICAgICAgICAgIGYud3JpdGUoJyVzXG4nICUgcCkKICAgICAgICAgICAgZi5j
bG9zZSgpCgogICAgZm9yIGRpciBpbiBbc2hsaWJzX2Rpcl06CiAgICAgICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZm9yIGZpbGUgaW4g
b3MubGlzdGRpcihkaXIpOgogICAgICAgICAgICBtID0gcmUubWF0Y2goJ14oLiopXC5wY2xpc3Qk
JywgZmlsZSkKICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgIHBrZyA9IG0uZ3JvdXAo
MSkKICAgICAgICAgICAgICAgIGZkID0gb3Blbihvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKSkKICAg
ICAgICAgICAgICAgIGxpbmVzID0gZmQucmVhZGxpbmVzKCkKICAgICAgICAgICAgICAgIGZkLmNs
b3NlKCkKICAgICAgICAgICAgICAgIHBrZ2NvbmZpZ19wcm92aWRlZFtwa2ddID0gW10KICAgICAg
ICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgICAgIHBrZ2NvbmZpZ19w
cm92aWRlZFtwa2ddLmFwcGVuZChsLnJzdHJpcCgpKQoKICAgIGZvciBwa2cgaW4gcGFja2FnZXMu
c3BsaXQoKToKICAgICAgICBkZXBzID0gW10KICAgICAgICBmb3IgbiBpbiBwa2djb25maWdfbmVl
ZGVkW3BrZ106CiAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKICAgICAgICAgICAgZm9yIGsgaW4g
cGtnY29uZmlnX3Byb3ZpZGVkLmtleXMoKToKICAgICAgICAgICAgICAgIGlmIG4gaW4gcGtnY29u
ZmlnX3Byb3ZpZGVkW2tdOgogICAgICAgICAgICAgICAgICAgIGlmIGsgIT0gcGtnIGFuZCBub3Qg
KGsgaW4gZGVwcyk6CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMuYXBwZW5kKGspCiAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgIGlmIGZvdW5kID09IEZhbHNl
OgogICAgICAgICAgICAgICAgYmIubm90ZSgiY291bGRuJ3QgZmluZCBwa2djb25maWcgbW9kdWxl
ICclcycgaW4gYW55IHBhY2thZ2UiICUgbikKICAgICAgICBkZXBzX2ZpbGUgPSBvcy5wYXRoLmpv
aW4ocGtnZGVzdCwgcGtnICsgIi5wY2RlcHMiKQogICAgICAgIGlmIGxlbihkZXBzKToKICAgICAg
ICAgICAgZmQgPSBvcGVuKGRlcHNfZmlsZSwgJ3cnKQogICAgICAgICAgICBmb3IgZGVwIGluIGRl
cHM6CiAgICAgICAgICAgICAgICBmZC53cml0ZShkZXAgKyAnXG4nKQogICAgICAgICAgICBmZC5j
bG9zZSgpCgogICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKfQoKCnB5dGhvbiBjaGVja19jb25u
ZWN0aXZpdHkgKCkgewpkZWYgY2hlY2tfY29ubmVjdGl2aXR5KGQpOgogICAgIyBVUkkncyB0byBj
aGVjayBjYW4gYmUgc2V0IGluIHRoZSBDT05ORUNUSVZJVFlfQ0hFQ0tfVVJJUyB2YXJpYWJsZQog
ICAgIyB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMgZm9yIFNSQ19VUkkuIElmIHRoZSB2YXJpYWJs
ZSBpcyBub3Qgc2V0CiAgICAjIHRoZSBjaGVjayBpcyBza2lwcGVkCiAgICB0ZXN0X3VyaXMgPSAo
ZC5nZXRWYXIoJ0NPTk5FQ1RJVklUWV9DSEVDS19VUklTJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkK
ICAgIHJldHZhbCA9ICIiCgogICAgIyBPbmx5IGNoZWNrIGNvbm5lY3Rpdml0eSBpZiBuZXR3b3Jr
IGVuYWJsZWQgYW5kIHRoZQogICAgIyBDT05ORUNUSVZJVFlfQ0hFQ0tfVVJJUyBhcmUgc2V0CiAg
ICBuZXR3b3JrX2VuYWJsZWQgPSBub3QgZC5nZXRWYXIoJ0JCX05PX05FVFdPUksnLCBUcnVlKQog
ICAgY2hlY2tfZW5hYmxlZCA9IGxlbih0ZXN0X3VyaXMpCiAgICAjIFRha2UgYSBjb3B5IG9mIHRo
ZSBkYXRhIHN0b3JlIGFuZCB1bnNldCBNSVJST1JTIGFuZCBQUkVNSVJST1MKICAgIGRhdGEgPSBi
Yi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgIGRhdGEuZGVsVmFyKCdQUkVNSVJST1JTJykKICAgIGRh
dGEuZGVsVmFyKCdNSVJST1JTJykKICAgIGlmIGNoZWNrX2VuYWJsZWQgYW5kIG5ldHdvcmtfZW5h
YmxlZDoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2go
dGVzdF91cmlzLCBkYXRhKQogICAgICAgICAgICBmZXRjaGVyLmNoZWNrc3RhdHVzKCkKICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAjIEFsbG93IHRoZSBtZXNzYWdlIHRvIGJl
IGNvbmZpZ3VyZWQgc28gdGhhdCB1c2VycyBjYW4gYmUKICAgICAgICAgICAgIyBwb2ludGVkIHRv
IGEgc3VwcG9ydCBtZWNoYW5pc20uCiAgICAgICAgICAgIG1zZyA9IGRhdGEuZ2V0VmFyKCdDT05O
RUNUSVZJVFlfQ0hFQ0tfTVNHJywgVHJ1ZSkgb3IgIiIKICAgICAgICAgICAgaWYgbGVuKG1zZykg
PT0gMDoKICAgICAgICAgICAgICAgIG1zZyA9ICJGYWlsZWQgdG8gZmV0Y2ggdGVzdCBkYXRhIGZy
b20gdGhlIG5ldHdvcmsuIFBsZWFzZSBlbnN1cmUgeW91ciBuZXR3b3JrIGlzIGNvbmZpZ3VyZWQg
Y29ycmVjdGx5LlxuIgogICAgICAgICAgICByZXR2YWwgPSBtc2cKCiAgICByZXR1cm4gcmV0dmFs
Cn0KCgpweXRob24gc2V0X2Rpc2tkYXRhICgpIHsKZGVmIHNldF9kaXNrZGF0YSh2YXIsIGRldiwg
ZGF0YSk6CiAgICBkYXRhLnNldFZhcih2YXIsIGdldF9kaXNrc3RhdHMoZGV2KSkKfQoKCnB5dGhv
biBkb19wYWNrYWdlX3dyaXRlX3JwbSAoKSB7CiAgICBiYi5idWlsZC5leGVjX2Z1bmMoInJlYWRf
c3VicGFja2FnZV9tZXRhZGF0YSIsIGQpCiAgICBiYi5idWlsZC5leGVjX2Z1bmMoImRvX3BhY2th
Z2VfcnBtIiwgZCkKfQoKCnB5dGhvbiBiYXNlX2V2ZW50aGFuZGxlciAoKSB7CiAgICBpZiBpc2lu
c3RhbmNlKGUsIGJiLmV2ZW50LkNvbmZpZ1BhcnNlZCk6CiAgICAgICAgZS5kYXRhLnNldFZhcign
QkJfVkVSU0lPTicsIGJiLl9fdmVyc2lvbl9fKQogICAgICAgIGdlbmVyYXRlX2dpdF9jb25maWco
ZSkKICAgICAgICBwa2dhcmNoX21hcHBpbmcoZS5kYXRhKQogICAgICAgIHByZWZlcnJlZF9tbF91
cGRhdGVzKGUuZGF0YSkKCiAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkJ1aWxkU3RhcnRl
ZCk6CiAgICAgICAgc3RhdHVzbGluZXMgPSBbXQogICAgICAgIGZvciBmdW5jIGluIG9lLmRhdGEu
dHlwZWRfdmFsdWUoJ0JVSUxEQ0ZHX0ZVTkNTJywgZS5kYXRhKToKICAgICAgICAgICAgZyA9IGds
b2JhbHMoKQogICAgICAgICAgICBpZiBmdW5jIG5vdCBpbiBnOgogICAgICAgICAgICAgICAgYmIu
d2FybigiQnVpbGQgY29uZmlndXJhdGlvbiBmdW5jdGlvbiAnJXMnIGRvZXMgbm90IGV4aXN0IiAl
IGZ1bmMpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBmbGluZXMgPSBnW2Z1bmNd
KGUuZGF0YSkKICAgICAgICAgICAgICAgIGlmIGZsaW5lczoKICAgICAgICAgICAgICAgICAgICBz
dGF0dXNsaW5lcy5leHRlbmQoZmxpbmVzKQoKICAgICAgICBzdGF0dXNoZWFkZXIgPSBlLmRhdGEu
Z2V0VmFyKCdCVUlMRENGR19IRUFERVInLCBUcnVlKQogICAgICAgIGJiLnBsYWluKCdcbiVzXG4l
c1xuJyAlIChzdGF0dXNoZWFkZXIsICdcbicuam9pbihzdGF0dXNsaW5lcykpKQp9CgoKcHl0aG9u
IHNzdGF0ZV9pbml0ICgpIHsKZGVmIHNzdGF0ZV9pbml0KG5hbWUsIHRhc2ssIGQpOgogICAgc3Mg
PSB7fQogICAgc3NbJ3Rhc2snXSA9IHRhc2sKICAgIHNzWyduYW1lJ10gPSBuYW1lCiAgICBzc1sn
ZGlycyddID0gW10KICAgIHNzWydwbGFpbmRpcnMnXSA9IFtdCiAgICBzc1snbG9ja2ZpbGVzJ10g
PSBbXQogICAgc3NbJ2xvY2tmaWxlcy1zaGFyZWQnXSA9IFtdCiAgICByZXR1cm4gc3MKfQoKCnB5
dGhvbiBnZXRfYm4gKCkgewpkZWYgZ2V0X2JuKGUpOgogICAgZmlsZSA9IG9wZW4oZS5kYXRhLmdl
dFZhcignQk5GSUxFJywgVHJ1ZSkpCiAgICBibiA9IGZpbGUucmVhZGxpbmUoKQogICAgZmlsZS5j
bG9zZSgpCiAgICByZXR1cm4gYm4KfQoKCnB5dGhvbiBjaGVja19hcHBfZXhpc3RzICgpIHsKZGVm
IGNoZWNrX2FwcF9leGlzdHMoYXBwLCBkKToKICAgIGZyb20gYmIgaW1wb3J0IHdoaWNoLCBkYXRh
CgogICAgYXBwID0gZGF0YS5leHBhbmQoYXBwLCBkKQogICAgcGF0aCA9IGRhdGEuZ2V0VmFyKCdQ
QVRIJywgZCwgMSkKICAgIHJldHVybiBib29sKHdoaWNoKHBhdGgsIGFwcCkpCn0KCgpweXRob24g
YmFzZV9wYXRoX3JlbGF0aXZlICgpIHsKZGVmIGJhc2VfcGF0aF9yZWxhdGl2ZShzcmMsIGRlc3Qp
OgogICAgcmV0dXJuIG9lLnBhdGgucmVsYXRpdmUoc3JjLCBkZXN0KQp9CgoKcHl0aG9uIGJhc2Vf
Y29uZGl0aW9uYWwgKCkgewpkZWYgYmFzZV9jb25kaXRpb25hbCh2YXJpYWJsZSwgY2hlY2t2YWx1
ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKToKICAgIHJldHVybiBvZS51dGlscy5jb25kaXRp
b25hbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQp9CgoK
cHl0aG9uIHBhY2thZ2VfcWFfY2hlY2tfc3RhdGljZGV2ICgpIHsKZGVmIHBhY2thZ2VfcWFfY2hl
Y2tfc3RhdGljZGV2KHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogICAgIiIiCiAgICBD
aGVjayBmb3IgIi5hIiBsaWJyYXJ5IGluIG5vbi1zdGF0aWNkZXYgcGFja2FnZXMKICAgIFRoZXJl
IGFyZSBhIG51bWJlciBvZiBleGNlcHRpb25zIHRvIHRoaXMgcnVsZSwgLXBpYyBwYWNrYWdlcyBj
YW4gY29udGFpbgogICAgc3RhdGljIGxpYnJhcmllcywgdGhlIF9ub25zaGFyZWQuYSBiZWxvbmcg
d2l0aCB0aGVpciAtZGV2IHBhY2thZ2VzIGFuZAogICAgbGliZ2NjLmEsIGxpYmdjb3YuYSB3aWxs
IGJlIHNraXBwZWQgaW4gdGhlaXIgcGFja2FnZXMKICAgICIiIgoKICAgIGlmIG5vdCBuYW1lLmVu
ZHN3aXRoKCItcGljIikgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItc3RhdGljZGV2IikgYW5kIHBh
dGguZW5kc3dpdGgoIi5hIikgYW5kIG5vdCBwYXRoLmVuZHN3aXRoKCJfbm9uc2hhcmVkLmEiKToK
ICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIm5vbiAtc3RhdGljZGV2IHBhY2thZ2UgY29udGFpbnMg
c3RhdGljIC5hIGxpYnJhcnk6ICVzIHBhdGggJyVzJyIgJSBcCiAgICAgICAgICAgICAgICAgKG5h
bWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKfQoKCnB5dGhvbiBzc3RhdGVfY2xl
YW5fbWFuaWZlc3QgKCkgewpkZWYgc3N0YXRlX2NsZWFuX21hbmlmZXN0KG1hbmlmZXN0LCBkKToK
ICAgIGltcG9ydCBvZS5wYXRoCgogICAgbWZpbGUgPSBvcGVuKG1hbmlmZXN0KQogICAgZW50cmll
cyA9IG1maWxlLnJlYWRsaW5lcygpCiAgICBtZmlsZS5jbG9zZSgpCgogICAgZm9yIGVudHJ5IGlu
IGVudHJpZXM6CiAgICAgICAgZW50cnkgPSBlbnRyeS5zdHJpcCgpCiAgICAgICAgYmIuZGVidWco
MiwgIlJlbW92aW5nIG1hbmlmZXN0OiAlcyIgJSBlbnRyeSkKICAgICAgICAjIFdlIGNhbiByYWNl
IGFnYWluc3QgYW5vdGhlciBwYWNrYWdlIHBvcHVsYXRpbmcgZGlyZWN0b3JpZXMgYXMgd2UncmUg
cmVtb3ZpbmcgdGhlbQogICAgICAgICMgc28gd2UgaWdub3JlIGVycm9ycyBoZXJlLgogICAgICAg
IHRyeToKICAgICAgICAgICAgaWYgZW50cnkuZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgICAg
aWYgb3MucGF0aC5pc2xpbmsoZW50cnlbOi0xXSk6CiAgICAgICAgICAgICAgICAgIG9zLnJlbW92
ZShlbnRyeVs6LTFdKQogICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKGVudHJ5KSBh
bmQgbGVuKG9zLmxpc3RkaXIoZW50cnkpKSA9PSAwOgogICAgICAgICAgICAgICAgICBvcy5ybWRp
cihlbnRyeVs6LTFdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgb2UucGF0aC5y
ZW1vdmUoZW50cnkpCiAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgIHBhc3MKCiAg
ICBvZS5wYXRoLnJlbW92ZShtYW5pZmVzdCkKfQoKCnB5dGhvbiBzc3RhdGVfY2xlYW4gKCkgewpk
ZWYgc3N0YXRlX2NsZWFuKHNzLCBkKToKICAgIGltcG9ydCBvZS5wYXRoCgogICAgbWFuaWZlc3Qg
PSBkLmV4cGFuZCgiL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3N0YXRlLWNv
bnRyb2wvbWFuaWZlc3QtYXJtdjV0ZS1iYmxheWVycy4lcyIgJSBzc1snbmFtZSddKQoKICAgIGlm
IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKICAgICAgICBsb2NrcyA9IFtdCiAgICAgICAgZm9y
IGxvY2sgaW4gc3NbJ2xvY2tmaWxlcy1zaGFyZWQnXToKICAgICAgICAgICAgbG9ja3MuYXBwZW5k
KGJiLnV0aWxzLmxvY2tmaWxlKGxvY2spKQogICAgICAgIGZvciBsb2NrIGluIHNzWydsb2NrZmls
ZXMnXToKICAgICAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2spKQoK
ICAgICAgICBzc3RhdGVfY2xlYW5fbWFuaWZlc3QobWFuaWZlc3QsIGQpCgogICAgICAgIGZvciBs
b2NrIGluIGxvY2tzOgogICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxvY2spCgogICAg
c3RmaWxlID0gZC5nZXRWYXIoIlNUQU1QIiwgVHJ1ZSkgKyAiLmRvXyIgKyBzc1sndGFzayddCiAg
ICBleHRyYWluZiA9IGQuZ2V0VmFyRmxhZygiZG9fIiArIHNzWyd0YXNrJ10sICdzdGFtcC1leHRy
YS1pbmZvJywgVHJ1ZSkKICAgIG9lLnBhdGgucmVtb3ZlKHN0ZmlsZSkKICAgIG9lLnBhdGgucmVt
b3ZlKHN0ZmlsZSArICJfc2V0c2NlbmUiKQogICAgaWYgZXh0cmFpbmY6CiAgICAgICAgb2UucGF0
aC5yZW1vdmUoc3RmaWxlICsgIi4qIiArIGV4dHJhaW5mKQogICAgICAgIG9lLnBhdGgucmVtb3Zl
KHN0ZmlsZSArICJfc2V0c2NlbmUiICsgIi4qIiArIGV4dHJhaW5mKQogICAgZWxzZToKICAgICAg
ICBvZS5wYXRoLnJlbW92ZShzdGZpbGUgKyAiLioiKQogICAgICAgIG9lLnBhdGgucmVtb3ZlKHN0
ZmlsZSArICJfc2V0c2NlbmUiICsgIi4qIikKfQoKCnB5dGhvbiBiYXNlX3BhdGhfam9pbiAoKSB7
CmRlZiBiYXNlX3BhdGhfam9pbihhLCAqcCk6CiAgICByZXR1cm4gb2UucGF0aC5qb2luKGEsICpw
KQp9CgoKcHl0aG9uIHBhY2thZ2VfcWFfY2hlY2tfdXNlbGVzc19ycGF0aHMgKCkgewpkZWYgcGFj
a2FnZV9xYV9jaGVja191c2VsZXNzX3JwYXRocyhmaWxlLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2Vz
KToKICAgICIiIgogICAgQ2hlY2sgZm9yIFJQQVRIcyB0aGF0IGFyZSB1c2VsZXNzIGJ1dCBub3Qg
ZGFuZ2Vyb3VzCiAgICAiIiIKICAgIGlmIG5vdCBlbGY6CiAgICAgICAgcmV0dXJuCgogICAgb2Jq
ZHVtcCA9IGQuZ2V0VmFyKCdPQkpEVU1QJywgVHJ1ZSkKICAgIGVudl9wYXRoID0gZC5nZXRWYXIo
J1BBVEgnLCBUcnVlKQoKICAgIGxpYmRpciA9IGQuZ2V0VmFyKCJsaWJkaXIiLCBUcnVlKQogICAg
YmFzZV9saWJkaXIgPSBkLmdldFZhcigiYmFzZV9saWJkaXIiLCBUcnVlKQoKICAgIGltcG9ydCBy
ZQogICAgcnBhdGhfcmUgPSByZS5jb21waWxlKCJccytSUEFUSFxzKyguKikiKQogICAgZm9yIGxp
bmUgaW4gb3MucG9wZW4oIkxDX0FMTD1DIFBBVEg9JXMgJXMgLXAgJyVzJyAyPiAvZGV2L251bGwi
ICUgKGVudl9wYXRoLCBvYmpkdW1wLCBmaWxlKSwgInIiKToKICAgIAltID0gcnBhdGhfcmUubWF0
Y2gobGluZSkKCWlmIG06CgkgICBycGF0aCA9IG0uZ3JvdXAoMSkKCSAgIGlmIHJwYXRoID09IGxp
YmRpciBvciBycGF0aCA9PSBiYXNlX2xpYmRpcjoKCSAgICAgICMgVGhlIGR5bmFtaWMgbGlua2Vy
IHNlYXJjaGVzIGJvdGggdGhlc2UgcGxhY2VzIGFueXdheS4gIFRoZXJlIGlzIG5vIHBvaW50IGlu
CgkgICAgICAjIGxvb2tpbmcgdGhlcmUgYWdhaW4uCgkgICAgICBtZXNzYWdlcy5hcHBlbmQoIiVz
OiAlcyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggJXMiICUgKG5hbWUsIHBhY2th
Z2VfcWFfY2xlYW5fcGF0aChmaWxlLCBkKSwgcnBhdGgpKQp9CgoKcHl0aG9uIGJhc2VfZ2V0X21l
dGFkYXRhX3N2bl9yZXZpc2lvbiAoKSB7CmRlZiBiYXNlX2dldF9tZXRhZGF0YV9zdm5fcmV2aXNp
b24ocGF0aCwgZCk6CiAgICByZXZpc2lvbiA9ICI8dW5rbm93bj4iCiAgICB0cnk6CiAgICAgICAg
cmV2aXNpb24gPSBmaWxlKCAiJXMvLnN2bi9lbnRyaWVzIiAlIHBhdGggKS5yZWFkbGluZXMoKVsz
XS5zdHJpcCgpCiAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICBwYXNzCiAgICByZXR1cm4gcmV2
aXNpb24KfQoKCnB5dGhvbiBnZW5lcmF0ZV9zc3RhdGVmbiAoKSB7CmRlZiBnZW5lcmF0ZV9zc3Rh
dGVmbihzcGVjLCBoYXNoLCBkKToKICAgIGlmIG5vdCBoYXNoOgogICAgICAgIGhhc2ggPSAiSU5W
QUxJRCIKICAgIHJldHVybiBoYXNoWzoyXSArICIvIiArIHNwZWMgKyBoYXNoCn0KCgpweXRob24g
c3N0YXRlX2NsZWFuX2NhY2hlZmlsZXMgKCkgewpkZWYgc3N0YXRlX2NsZWFuX2NhY2hlZmlsZXMo
ZCk6CiAgICBmb3IgdGFzayBpbiAoZC5nZXRWYXIoJ1NTVEFURVRBU0tTJywgVHJ1ZSkgb3IgIiIp
LnNwbGl0KCk6CiAgICAgICAgc3MgPSBzc3RhdGVfc3RhdGVfZnJvbXZhcnMoZCwgdGFza1szOl0p
CiAgICAgICAgc3N0YXRlX2NsZWFuX2NhY2hlZmlsZShzcywgZCkKfQoKCnB5dGhvbiBwYWNrYWdl
X2RvX3NobGlicyAoKSB7CiAgICBpbXBvcnQgcmUsIHBpcGVzCgogICAgZXhjbHVkZV9zaGxpYnMg
PSBkLmdldFZhcignRVhDTFVERV9GUk9NX1NITElCUycsIDApCiAgICBpZiBleGNsdWRlX3NobGli
czoKICAgICAgICBiYi5ub3RlKCJub3QgZ2VuZXJhdGluZyBzaGxpYnMiKQogICAgICAgIHJldHVy
bgoKICAgIGxpYl9yZSA9IHJlLmNvbXBpbGUoIl4uKlwuc28iKQogICAgbGliZGlyX3JlID0gcmUu
Y29tcGlsZSgiLiovJXMkIiAlIGQuZ2V0VmFyKCdiYXNlbGliJywgVHJ1ZSkpCgogICAgcGFja2Fn
ZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKQogICAgdGFyZ2V0b3MgPSBkLmdldFZhcign
VEFSR0VUX09TJywgVHJ1ZSkKCiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVl
KQoKICAgIHZlciA9IGQuZ2V0VmFyKCdQS0dWJywgVHJ1ZSkKICAgIGlmIG5vdCB2ZXI6CiAgICAg
ICAgYmIuZXJyb3IoIlBLR1Ygbm90IGRlZmluZWQiKQogICAgICAgIHJldHVybgoKICAgIHBrZ2Rl
c3QgPSBkLmdldFZhcignUEtHREVTVCcsIFRydWUpCgogICAgc2hsaWJzX2RpciA9IGQuZ2V0VmFy
KCdTSExJQlNESVInLCBUcnVlKQogICAgc2hsaWJzd29ya19kaXIgPSBkLmdldFZhcignU0hMSUJT
V09SS0RJUicsIFRydWUpCgogICAgIyBUYWtlIHNoYXJlZCBsb2NrIHNpbmNlIHdlJ3JlIG9ubHkg
cmVhZGluZywgbm90IHdyaXRpbmcKICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQo
Ii9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N5c3Jvb3RzL3BhY2thZ2Utb3V0
cHV0LmxvY2siKSkKCiAgICBkZWYgbGludXhfc28ocm9vdCwgcGF0aCwgZmlsZSk6CiAgICAgICAg
bmVlZHNfbGRjb25maWcgPSBGYWxzZQogICAgICAgIGNtZCA9IGQuZ2V0VmFyKCdPQkpEVU1QJywg
VHJ1ZSkgKyAiIC1wICIgKyBwaXBlcy5xdW90ZShvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkpICsg
IiAyPi9kZXYvbnVsbCIKICAgICAgICBjbWQgPSAiUEFUSD1cIiVzXCIgJXMiICUgKGQuZ2V0VmFy
KCdQQVRIJywgVHJ1ZSksIGNtZCkKICAgICAgICBmZCA9IG9zLnBvcGVuKGNtZCkKICAgICAgICBs
aW5lcyA9IGZkLnJlYWRsaW5lcygpCiAgICAgICAgZmQuY2xvc2UoKQogICAgICAgIGZvciBsIGlu
IGxpbmVzOgogICAgICAgICAgICBtID0gcmUubWF0Y2goIlxzK05FRURFRFxzKyhbXlxzXSopIiwg
bCkKICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgIGlmIG0uZ3JvdXAoMSkgbm90IGlu
IG5lZWRlZFtwa2ddOgogICAgICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddLmFwcGVuZChtLmdy
b3VwKDEpKQogICAgICAgICAgICBtID0gcmUubWF0Y2goIlxzK1NPTkFNRVxzKyhbXlxzXSopIiwg
bCkKICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgIHRoaXNfc29uYW1lID0gbS5ncm91
cCgxKQogICAgICAgICAgICAgICAgaWYgbm90IHRoaXNfc29uYW1lIGluIHNvbmFtZXM6CiAgICAg
ICAgICAgICAgICAgICAgIyBpZiBsaWJyYXJ5IGlzIHByaXZhdGUgKG9ubHkgdXNlZCBieSBwYWNr
YWdlKSB0aGVuIGRvIG5vdCBidWlsZCBzaGxpYiBmb3IgaXQKICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgcHJpdmF0ZV9saWJzIG9yIC0xID09IHByaXZhdGVfbGlicy5maW5kKHRoaXNfc29uYW1l
KToKICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQodGhpc19zb25hbWUpCiAg
ICAgICAgICAgICAgICBpZiBsaWJkaXJfcmUubWF0Y2gocm9vdCk6CiAgICAgICAgICAgICAgICAg
ICAgbmVlZHNfbGRjb25maWcgPSBUcnVlCiAgICAgICAgICAgICAgICBpZiBzbmFwX3N5bWxpbmtz
IGFuZCAoZmlsZSAhPSB0aGlzX3NvbmFtZSk6CiAgICAgICAgICAgICAgICAgICAgcmVuYW1lcy5h
cHBlbmQoKG9zLnBhdGguam9pbihyb290LCBmaWxlKSwgb3MucGF0aC5qb2luKHJvb3QsIHRoaXNf
c29uYW1lKSkpCiAgICAgICAgcmV0dXJuIG5lZWRzX2xkY29uZmlnCgogICAgZGVmIGRhcndpbl9z
byhyb290LCBwYXRoLCBmaWxlKToKICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290
LCBmaWxlKQogICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmdWxscGF0aCk6CiAgICAgICAg
ICAgIHJldHVybgoKICAgICAgICBkZWYgZ2V0X2NvbWJpbmF0aW9ucyhiYXNlKToKICAgICAgICAg
ICAgIwogICAgICAgICAgICAjIEdpdmVuIGEgYmFzZSBsaWJyYXJ5IG5hbWUsIGZpbmQgYWxsIGNv
bWJpbmF0aW9ucyBvZiB0aGlzIHNwbGl0IGJ5ICIuIiBhbmQgIi0iCiAgICAgICAgICAgICMKICAg
ICAgICAgICAgY29tYm9zID0gW10KICAgICAgICAgICAgb3B0aW9ucyA9IGJhc2Uuc3BsaXQoIi4i
KQogICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4ob3B0aW9ucykgKyAxKToKICAgICAg
ICAgICAgICAgIGNvbWJvcy5hcHBlbmQoIi4iLmpvaW4ob3B0aW9uc1swOmldKSkKICAgICAgICAg
ICAgb3B0aW9ucyA9IGJhc2Uuc3BsaXQoIi0iKQogICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgx
LCBsZW4ob3B0aW9ucykgKyAxKToKICAgICAgICAgICAgICAgIGNvbWJvcy5hcHBlbmQoIi0iLmpv
aW4ob3B0aW9uc1swOmldKSkKICAgICAgICAgICAgcmV0dXJuIGNvbWJvcwoKICAgICAgICBpZiAo
ZmlsZS5lbmRzd2l0aCgnLmR5bGliJykgb3IgZmlsZS5lbmRzd2l0aCgnLnNvJykpIGFuZCBub3Qg
cGtnLmVuZHN3aXRoKCctZGV2JykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kYmcnKToKICAgICAg
ICAgICAgIyBEcm9wIHN1ZmZpeAogICAgICAgICAgICBuYW1lID0gZmlsZS5yc3BsaXQoIi4iLDEp
WzBdCiAgICAgICAgICAgICMgRmluZCBhbGwgY29tYmluYXRpb25zCiAgICAgICAgICAgIGNvbWJv
cyA9IGdldF9jb21iaW5hdGlvbnMobmFtZSkKICAgICAgICAgICAgZm9yIGNvbWJvIGluIGNvbWJv
czoKICAgICAgICAgICAgICAgIGlmIG5vdCBjb21ibyBpbiBzb25hbWVzOgogICAgICAgICAgICAg
ICAgICAgIHNvbmFtZXMuYXBwZW5kKGNvbWJvKQogICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy5k
eWxpYicpIG9yIGZpbGUuZW5kc3dpdGgoJy5zbycpOgogICAgICAgICAgICBsYWZpbGUgPSBmdWxs
cGF0aC5yZXBsYWNlKG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpLCBkLmdldFZhcignUEtHRCcs
IFRydWUpKQogICAgICAgICAgICAjIERyb3Agc3VmZml4CiAgICAgICAgICAgIGxhZmlsZSA9IGxh
ZmlsZS5yc3BsaXQoIi4iLDEpWzBdCiAgICAgICAgICAgIGxhcGF0aCA9IG9zLnBhdGguZGlybmFt
ZShsYWZpbGUpCiAgICAgICAgICAgIGxhZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUobGFmaWxlKQog
ICAgICAgICAgICAjIEZpbmQgYWxsIGNvbWJpbmF0aW9ucwogICAgICAgICAgICBjb21ib3MgPSBn
ZXRfY29tYmluYXRpb25zKGxhZmlsZSkKICAgICAgICAgICAgZm9yIGNvbWJvIGluIGNvbWJvczoK
ICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxhcGF0aCArICcvJyArIGNvbWJvICsg
Jy5sYScpOgogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGxhZmlsZSA9IGxh
cGF0aCArICcvJyArIGNvbWJvICsgJy5sYScKCiAgICAgICAgICAgICNiYi5ub3RlKCJGb28yOiAl
cyIgJSBsYWZpbGUpCiAgICAgICAgICAgICNiYi5ub3RlKCJGb28gJXMgJXMiICUgKGZpbGUsIGZ1
bGxwYXRoKSkKICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGFmaWxlKToKICAgICAgICAg
ICAgICAgIGZkID0gb3BlbihsYWZpbGUsICdyJykKICAgICAgICAgICAgICAgIGxpbmVzID0gZmQu
cmVhZGxpbmVzKCkKICAgICAgICAgICAgICAgIGZkLmNsb3NlKCkKICAgICAgICAgICAgICAgIGZv
ciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXHMqZGVwZW5k
ZW5jeV9saWJzPVxzKicoLiopJyIsIGwpCiAgICAgICAgICAgICAgICAgICAgaWYgbToKICAgICAg
ICAgICAgICAgICAgICAgICAgZGVwcyA9IG0uZ3JvdXAoMSkuc3BsaXQoIiAiKQogICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjYmIubm90ZSgiVHJ5aW5nICVzIGZvciAlcyIgJSAoZGVwLCBwa2cpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IGRlcC5lbmRzd2l0aCgiLmxhIik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZSA9IG9zLnBhdGguYmFzZW5hbWUoZGVwKS5yZXBsYWNlKCIubGEiLCAiIikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsaWYgZGVwLnN0YXJ0c3dpdGgoIi1sIik6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZSA9IGRlcC5yZXBsYWNlKCItbCIsICJsaWIiKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgcGtnIG5vdCBpbiBuZWVkZWQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmVlZGVkW3BrZ10gPSBbXQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbmFtZSBhbmQgbmFtZSBub3QgaW4gbmVlZGVkW3BrZ106CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmVlZGVkW3BrZ10uYXBwZW5kKG5hbWUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgI2JiLm5vdGUoIkFkZGluZyAlcyBmb3IgJXMiICUgKG5hbWUsIHBr
ZykpCgogICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfU05BUF9MSUJfU1lNTElOS1MnLCBUcnVlKSA9
PSAiMSI6CiAgICAgICAgc25hcF9zeW1saW5rcyA9IFRydWUKICAgIGVsc2U6CiAgICAgICAgc25h
cF9zeW1saW5rcyA9IEZhbHNlCgogICAgaWYgKGQuZ2V0VmFyKCdVU0VfTERDT05GSUcnLCBUcnVl
KSBvciAiMSIpID09ICIxIjoKICAgICAgICB1c2VfbGRjb25maWcgPSBUcnVlCiAgICBlbHNlOgog
ICAgICAgIHVzZV9sZGNvbmZpZyA9IEZhbHNlCgogICAgbmVlZGVkID0ge30KICAgIHNobGliX3By
b3ZpZGVyID0ge30KICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICBwcml2
YXRlX2xpYnMgPSBkLmdldFZhcignUFJJVkFURV9MSUJTXycgKyBwa2csIFRydWUpIG9yIGQuZ2V0
VmFyKCdQUklWQVRFX0xJQlMnLCBUcnVlKQogICAgICAgIG5lZWRzX2xkY29uZmlnID0gRmFsc2UK
ICAgICAgICBiYi5kZWJ1ZygyLCAiY2FsY3VsYXRpbmcgc2hsaWIgcHJvdmlkZXMgZm9yICVzIiAl
IHBrZykKCiAgICAgICAgcGtndmVyID0gZC5nZXRWYXIoJ1BLR1ZfJyArIHBrZywgVHJ1ZSkKICAg
ICAgICBpZiBub3QgcGtndmVyOgogICAgICAgICAgICBwa2d2ZXIgPSBkLmdldFZhcignUFZfJyAr
IHBrZywgVHJ1ZSkKICAgICAgICBpZiBub3QgcGtndmVyOgogICAgICAgICAgICBwa2d2ZXIgPSB2
ZXIKCiAgICAgICAgbmVlZGVkW3BrZ10gPSBbXQogICAgICAgIHNvbmFtZXMgPSBsaXN0KCkKICAg
ICAgICByZW5hbWVzID0gbGlzdCgpCiAgICAgICAgdG9wID0gb3MucGF0aC5qb2luKHBrZ2Rlc3Qs
IHBrZykKICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh0b3ApOgogICAg
ICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIHNvbmFtZSA9IE5vbmUK
ICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkKICAgICAgICAg
ICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgogICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAgICAgICAgICAgICAgICBpZiB0YXJnZXRvcyA9PSAiZGFyd2luIiBvciB0YXJnZXRvcyA9
PSAiZGFyd2luOCI6CiAgICAgICAgICAgICAgICAgICAgZGFyd2luX3NvKHJvb3QsIGRpcnMsIGZp
bGUpCiAgICAgICAgICAgICAgICBlbGlmIG9zLmFjY2VzcyhwYXRoLCBvcy5YX09LKSBvciBsaWJf
cmUubWF0Y2goZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgbGRjb25maWcgPSBsaW51eF9zbyhy
b290LCBkaXJzLCBmaWxlKQogICAgICAgICAgICAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gbmVl
ZHNfbGRjb25maWcgb3IgbGRjb25maWcKICAgICAgICBmb3IgKG9sZCwgbmV3KSBpbiByZW5hbWVz
OgogICAgICAgICAgICBiYi5ub3RlKCJSZW5hbWluZyAlcyB0byAlcyIgJSAob2xkLCBuZXcpKQog
ICAgICAgICAgICBvcy5yZW5hbWUob2xkLCBuZXcpCiAgICAgICAgc2hsaWJzX2ZpbGUgPSBvcy5w
YXRoLmpvaW4oc2hsaWJzd29ya19kaXIsIHBrZyArICIubGlzdCIpCiAgICAgICAgc2h2ZXJfZmls
ZSA9IG9zLnBhdGguam9pbihzaGxpYnN3b3JrX2RpciwgcGtnICsgIi52ZXIiKQogICAgICAgIGlm
IGxlbihzb25hbWVzKToKICAgICAgICAgICAgZmQgPSBvcGVuKHNobGlic19maWxlLCAndycpCiAg
ICAgICAgICAgIGZvciBzIGluIHNvbmFtZXM6CiAgICAgICAgICAgICAgICBmZC53cml0ZShzICsg
J1xuJykKICAgICAgICAgICAgICAgIHNobGliX3Byb3ZpZGVyW3NdID0gKHBrZywgcGtndmVyKQog
ICAgICAgICAgICBmZC5jbG9zZSgpCiAgICAgICAgICAgIGZkID0gb3BlbihzaHZlcl9maWxlLCAn
dycpCiAgICAgICAgICAgIGZkLndyaXRlKHBrZ3ZlciArICdcbicpCiAgICAgICAgICAgIGZkLmNs
b3NlKCkKICAgICAgICBpZiBuZWVkc19sZGNvbmZpZyBhbmQgdXNlX2xkY29uZmlnOgogICAgICAg
ICAgICBiYi5kZWJ1ZygxLCAnYWRkaW5nIGxkY29uZmlnIGNhbGwgdG8gcG9zdGluc3QgZm9yICVz
JyAlIHBrZykKICAgICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVz
JyAlIHBrZywgVHJ1ZSkgb3IgZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdCcsIFRydWUpCiAgICAgICAg
ICAgIGlmIG5vdCBwb3N0aW5zdDoKICAgICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9z
aFxuJwogICAgICAgICAgICBwb3N0aW5zdCArPSBkLmdldFZhcignbGRjb25maWdfcG9zdGluc3Rf
ZnJhZ21lbnQnLCBUcnVlKQogICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAl
IHBrZywgcG9zdGluc3QpCgogICAgbGlzdF9yZSA9IHJlLmNvbXBpbGUoJ14oLiopXC5saXN0JCcp
CiAgICBmb3IgZGlyIGluIFtzaGxpYnNfZGlyXToKICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlz
dHMoZGlyKToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBmb3IgZmlsZSBpbiBvcy5saXN0
ZGlyKGRpcik6CiAgICAgICAgICAgIG0gPSBsaXN0X3JlLm1hdGNoKGZpbGUpCiAgICAgICAgICAg
IGlmIG06CiAgICAgICAgICAgICAgICBkZXBfcGtnID0gbS5ncm91cCgxKQogICAgICAgICAgICAg
ICAgZmQgPSBvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKQogICAgICAgICAgICAgICAgbGlu
ZXMgPSBmZC5yZWFkbGluZXMoKQogICAgICAgICAgICAgICAgZmQuY2xvc2UoKQogICAgICAgICAg
ICAgICAgdmVyX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGlyLCBkZXBfcGtnICsgJy52ZXInKQogICAg
ICAgICAgICAgICAgbGliX3ZlciA9IE5vbmUKICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKHZlcl9maWxlKToKICAgICAgICAgICAgICAgICAgICBmZCA9IG9wZW4odmVyX2ZpbGUpCiAg
ICAgICAgICAgICAgICAgICAgbGliX3ZlciA9IGZkLnJlYWRsaW5lKCkucnN0cmlwKCkKICAgICAg
ICAgICAgICAgICAgICBmZC5jbG9zZSgpCiAgICAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoK
ICAgICAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcltsLnJzdHJpcCgpXSA9IChkZXBfcGtn
LCBsaWJfdmVyKQoKICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCgogICAgYXNzdW1lZF9saWJz
ID0gZC5nZXRWYXIoJ0FTU1VNRV9TSExJQlMnLCBUcnVlKQogICAgaWYgYXNzdW1lZF9saWJzOgog
ICAgICAgIGZvciBlIGluIGFzc3VtZWRfbGlicy5zcGxpdCgpOgogICAgICAgICAgICBsLCBkZXBf
cGtnID0gZS5zcGxpdCgiOiIpCiAgICAgICAgICAgIGxpYl92ZXIgPSBOb25lCiAgICAgICAgICAg
IGRlcF9wa2cgPSBkZXBfcGtnLnJzcGxpdCgiXyIsIDEpCiAgICAgICAgICAgIGlmIGxlbihkZXBf
cGtnKSA9PSAyOgogICAgICAgICAgICAgICAgbGliX3ZlciA9IGRlcF9wa2dbMV0KICAgICAgICAg
ICAgZGVwX3BrZyA9IGRlcF9wa2dbMF0KICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJbbF0gPSAo
ZGVwX3BrZywgbGliX3ZlcikKCiAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAg
ICAgYmIuZGVidWcoMiwgImNhbGN1bGF0aW5nIHNobGliIHJlcXVpcmVtZW50cyBmb3IgJXMiICUg
cGtnKQoKICAgICAgICBkZXBzID0gbGlzdCgpCiAgICAgICAgZm9yIG4gaW4gbmVlZGVkW3BrZ106
CiAgICAgICAgICAgIGlmIG4gaW4gc2hsaWJfcHJvdmlkZXIua2V5cygpOgogICAgICAgICAgICAg
ICAgKGRlcF9wa2csIHZlcl9uZWVkZWQpID0gc2hsaWJfcHJvdmlkZXJbbl0KCiAgICAgICAgICAg
ICAgICBiYi5kZWJ1ZygyLCAnJXM6IERlcGVuZGVuY3kgJXMgcmVxdWlyZXMgcGFja2FnZSAlcycg
JSAocGtnLCBuLCBkZXBfcGtnKSkKCiAgICAgICAgICAgICAgICBpZiBkZXBfcGtnID09IHBrZzoK
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIGlmIHZlcl9uZWVk
ZWQ6CiAgICAgICAgICAgICAgICAgICAgZGVwID0gIiVzICg+PSAlcykiICUgKGRlcF9wa2csIHZl
cl9uZWVkZWQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGRlcCA9
IGRlcF9wa2cKICAgICAgICAgICAgICAgIGlmIG5vdCBkZXAgaW4gZGVwczoKICAgICAgICAgICAg
ICAgICAgICBkZXBzLmFwcGVuZChkZXApCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICBiYi5ub3RlKCJDb3VsZG4ndCBmaW5kIHNoYXJlZCBsaWJyYXJ5IHByb3ZpZGVyIGZvciAlcyIg
JSBuKQoKICAgICAgICBkZXBzX2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnICsgIi5z
aGxpYmRlcHMiKQogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlcHNfZmlsZSk6CiAgICAgICAg
ICAgIG9zLnJlbW92ZShkZXBzX2ZpbGUpCiAgICAgICAgaWYgbGVuKGRlcHMpOgogICAgICAgICAg
ICBmZCA9IG9wZW4oZGVwc19maWxlLCAndycpCiAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwczoK
ICAgICAgICAgICAgICAgIGZkLndyaXRlKGRlcCArICdcbicpCiAgICAgICAgICAgIGZkLmNsb3Nl
KCkKfQoKCnB5dGhvbiBwYWNrYWdlX3FhX2NoZWNrX2RiZyAoKSB7CmRlZiBwYWNrYWdlX3FhX2No
ZWNrX2RiZyhwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKICAgICIiIgogICAgQ2hlY2sg
Zm9yICIuZGVidWciIGZpbGVzIG9yIGRpcmVjdG9yaWVzIG91dHNpZGUgb2YgdGhlIGRiZyBwYWNr
YWdlCiAgICAiIiIKCiAgICBpZiBub3QgIi1kYmciIGluIG5hbWU6CiAgICAgICAgaWYgJy5kZWJ1
ZycgaW4gcGF0aC5zcGxpdChvcy5wYXRoLnNlcCk6CiAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVu
ZCgibm9uIGRlYnVnIHBhY2thZ2UgY29udGFpbnMgLmRlYnVnIGRpcmVjdG9yeTogJXMgcGF0aCAl
cyIgJSBcCiAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgo
cGF0aCxkKSkpCn0KCgpweXRob24gcGFja2FnZV9kb19maWxlZGVwcyAoKSB7CiAgICBpbXBvcnQg
cmUKCiAgICBpZiBkLmdldFZhcignU0tJUF9GSUxFREVQUycsIFRydWUpID09ICcxJzoKICAgICAg
ICByZXR1cm4KCiAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnLCBUcnVlKQogICAgcGFj
a2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKQoKICAgIHJwbWRlcHMgPSBkLmV4cGFu
ZCgiL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxp
bnV4L3Vzci9saWIvcnBtL2Jpbi9ycG1kZXBzLW9lY29yZSAtLW1hY3JvcyAvaG9tZS9sc2VyYmFu
L3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYi9ycG0v
bWFjcm9zIC0tZGVmaW5lICdfcnBtZmNfbWFnaWNfcGF0aCAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL21pc2MvbWFnaWMu
bWdjJyAtLXJwbXBvcHQgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9v
dHMveDg2XzY0LWxpbnV4L3Vzci9saWIvcnBtL3JwbXBvcHQiKQogICAgciA9IHJlLmNvbXBpbGUo
cidbPD49XSsgK1teIF0qJykKCiAgICBkZWYgZmlsZV90cmFuc2xhdGUoZmlsZSk6CiAgICAgICAg
ZnQgPSBmaWxlLnJlcGxhY2UoIkAiLCAiQGF0QCIpCiAgICAgICAgZnQgPSBmdC5yZXBsYWNlKCIg
IiwgIkBzcGFjZUAiKQogICAgICAgIGZ0ID0gZnQucmVwbGFjZSgiXHQiLCAiQHRhYkAiKQogICAg
ICAgIGZ0ID0gZnQucmVwbGFjZSgiWyIsICJAb3BlbmJyYWNlQCIpCiAgICAgICAgZnQgPSBmdC5y
ZXBsYWNlKCJdIiwgIkBjbG9zZWJyYWNlQCIpCiAgICAgICAgZnQgPSBmdC5yZXBsYWNlKCJfIiwg
IkB1bmRlcnNjb3JlQCIpCiAgICAgICAgcmV0dXJuIGZ0CgogICAgIyBRdWljayByb3V0aW5lIHRv
IHByb2Nlc3MgdGhlIHJlc3VsdHMgb2YgdGhlIHJwbWRlcHMgY2FsbC4uLgogICAgZGVmIHByb2Nl
c3NfZGVwcyhwaXBlLCBwa2csIHByb3ZpZGVzX2ZpbGVzLCByZXF1aXJlc19maWxlcyk6CiAgICAg
ICAgcHJvdmlkZXMgPSB7fQogICAgICAgIHJlcXVpcmVzID0ge30KCiAgICAgICAgZm9yIGxpbmUg
aW4gcGlwZToKICAgICAgICAgICAgZiA9IGxpbmUuc3BsaXQoIiAiLCAxKVswXS5zdHJpcCgpCiAg
ICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCIgIiwgMSlbMV0uc3RyaXAoKQoKICAgICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKCJSZXF1aXJlczoiKToKICAgICAgICAgICAgICAgIGkgPSBy
ZXF1aXJlcwogICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiUHJvdmlkZXM6Iik6CiAg
ICAgICAgICAgICAgICBpID0gcHJvdmlkZXMKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCgogICAgICAgICAgICBmaWxlID0gZi5yZXBsYWNlKHBrZ2Rlc3QgKyAiLyIg
KyBwa2csICIiKQogICAgICAgICAgICBmaWxlID0gZmlsZV90cmFuc2xhdGUoZmlsZSkKICAgICAg
ICAgICAgdmFsdWUgPSBsaW5lLnNwbGl0KCI6IiwgMSlbMV0uc3RyaXAoKQogICAgICAgICAgICB2
YWx1ZSA9IHIuc3ViKHInKFxnPDA+KScsIHZhbHVlKQoKICAgICAgICAgICAgaWYgdmFsdWUuc3Rh
cnRzd2l0aCgicnBtbGliKCIpOgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAg
aWYgdmFsdWUgPT0gInB5dGhvbiI6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICBpZiBmaWxlIG5vdCBpbiBpOgogICAgICAgICAgICAgICAgaVtmaWxlXSA9IFtdCiAgICAgICAg
ICAgIGlbZmlsZV0uYXBwZW5kKHZhbHVlKQoKICAgICAgICBmb3IgZmlsZSBpbiBwcm92aWRlczoK
ICAgICAgICAgICAgcHJvdmlkZXNfZmlsZXMuYXBwZW5kKGZpbGUpCiAgICAgICAgICAgIGtleSA9
ICJGSUxFUlBST1ZJREVTXyIgKyBmaWxlICsgIl8iICsgcGtnCiAgICAgICAgICAgIGQuc2V0VmFy
KGtleSwgIiAiLmpvaW4ocHJvdmlkZXNbZmlsZV0pKQoKICAgICAgICBmb3IgZmlsZSBpbiByZXF1
aXJlczoKICAgICAgICAgICAgcmVxdWlyZXNfZmlsZXMuYXBwZW5kKGZpbGUpCiAgICAgICAgICAg
IGtleSA9ICJGSUxFUkRFUEVORFNfIiArIGZpbGUgKyAiXyIgKyBwa2cKICAgICAgICAgICAgZC5z
ZXRWYXIoa2V5LCAiICIuam9pbihyZXF1aXJlc1tmaWxlXSkpCgogICAgZGVmIGNodW5rcyhmaWxl
cywgbik6CiAgICAgICAgcmV0dXJuIFtmaWxlc1tpOmkrbl0gZm9yIGkgaW4gcmFuZ2UoMCwgbGVu
KGZpbGVzKSwgbildCgogICAgIyBEZXRlcm1pbmUgZGVwZW5kZW5jaWVzCiAgICBmb3IgcGtnIGlu
IHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgaWYgcGtnLmVuZHN3aXRoKCctZGJnJykgb3IgcGtn
LmVuZHN3aXRoKCctZG9jJykgb3IgcGtnLmZpbmQoJy1sb2NhbGUtJykgIT0gLTEgb3IgcGtnLmZp
bmQoJy1sb2NhbGVkYXRhLScpICE9IC0xIG9yIHBrZy5maW5kKCctZ2NvbnYtJykgIT0gLTEgb3Ig
cGtnLmZpbmQoJy1jaGFybWFwLScpICE9IC0xIG9yIHBrZy5zdGFydHN3aXRoKCdrZXJuZWwtbW9k
dWxlLScpOgogICAgICAgICAgICBjb250aW51ZQoKICAgICAgICBwcm92aWRlc19maWxlcyA9IFtd
CiAgICAgICAgcmVxdWlyZXNfZmlsZXMgPSBbXQogICAgICAgIHJwZmlsZXMgPSBbXQogICAgICAg
IGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBrZ2Rlc3QgKyAiLyIgKyBwa2cpOgog
ICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgIHJwZmlsZXMuYXBw
ZW5kKG9zLnBhdGguam9pbihyb290LCBmaWxlKSkKCiAgICAgICAgZm9yIGZpbGVzIGluIGNodW5r
cyhycGZpbGVzLCAxMDApOgogICAgICAgICAgICBkZXBfcGlwZSA9IG9zLnBvcGVuKHJwbWRlcHMg
KyAiICIgKyAiICIuam9pbihmaWxlcykpCgogICAgICAgICAgICBwcm9jZXNzX2RlcHMoZGVwX3Bp
cGUsIHBrZywgcHJvdmlkZXNfZmlsZXMsIHJlcXVpcmVzX2ZpbGVzKQoKICAgICAgICBkLnNldFZh
cigiRklMRVJERVBFTkRTRkxJU1RfIiArIHBrZywgIiAiLmpvaW4ocmVxdWlyZXNfZmlsZXMpKQog
ICAgICAgIGQuc2V0VmFyKCJGSUxFUlBST1ZJREVTRkxJU1RfIiArIHBrZywgIiAiLmpvaW4ocHJv
dmlkZXNfZmlsZXMpKQp9CgoKcHl0aG9uIGJhc2VfZGV0ZWN0X3JldmlzaW9uICgpIHsKZGVmIGJh
c2VfZGV0ZWN0X3JldmlzaW9uKGQpOgogICAgcGF0aCA9IGJhc2VfZ2V0X3NjbWJhc2VwYXRoKGQp
CgogICAgc2NtcyA9IFtiYXNlX2dldF9tZXRhZGF0YV9naXRfcmV2aXNpb24sIFwKICAgICAgICAg
ICAgYmFzZV9nZXRfbWV0YWRhdGFfc3ZuX3JldmlzaW9uXQoKICAgIGZvciBzY20gaW4gc2NtczoK
ICAgICAgICByZXYgPSBzY20ocGF0aCwgZCkKICAgICAgICBpZiByZXYgPD4gIjx1bmtub3duPiI6
CiAgICAgICAgICAgIHJldHVybiByZXYKCiAgICByZXR1cm4gIjx1bmtub3duPiIKfQoKCnB5dGhv
biBjb3B5X2RhdGEgKCkgewpkZWYgY29weV9kYXRhKGUpOgogICAgc2FuaXR5X2RhdGEgPSBiYi5k
YXRhLmNyZWF0ZUNvcHkoZS5kYXRhKQogICAgc2FuaXR5X2RhdGEuZmluYWxpemUoKQogICAgcmV0
dXJuIHNhbml0eV9kYXRhCn0KCgpweXRob24gc3N0YXRlX2luc3RhbGxwa2cgKCkgewpkZWYgc3N0
YXRlX2luc3RhbGxwa2coc3MsIGQpOgogICAgaW1wb3J0IG9lLnBhdGgKICAgIGltcG9ydCBzdWJw
cm9jZXNzCgogICAgZGVmIHByZXBkaXIoZGlyKToKICAgICAgICAjIHJlbW92ZSBkaXIgaWYgaXQg
ZXhpc3RzLCBlbnN1cmUgYW55IHBhcmVudCBkaXJlY3RvcmllcyBkbyBleGlzdAogICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKGRpcikKICAg
ICAgICBiYi5ta2RpcmhpZXIoZGlyKQogICAgICAgIG9lLnBhdGgucmVtb3ZlKGRpcikKCiAgICBz
c3RhdGVpbnN0ID0gZC5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1w
L3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkvYmJsYXllcnMtMS4wLXIwL3NzdGF0ZS1p
bnN0YWxsLSVzLyIgJSBzc1snbmFtZSddKQogICAgc3N0YXRlZmV0Y2ggPSBkLmdldFZhcignU1NU
QVRFX1BLR05BTUUnLCBUcnVlKSArICdfJyArIHNzWyduYW1lJ10gKyAiLnRneiIKICAgIHNzdGF0
ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJywgVHJ1ZSkgKyAnXycgKyBzc1snbmFtZSddICsg
Ii50Z3oiCgogICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNzdGF0ZXBrZyk6CiAgICAgICBwc3Rh
Z2luZ19mZXRjaChzc3RhdGVmZXRjaCwgc3N0YXRlcGtnLCBkKQoKICAgIGlmIG5vdCBvcy5wYXRo
LmlzZmlsZShzc3RhdGVwa2cpOgogICAgICAgIGJiLm5vdGUoIlN0YWdpbmcgcGFja2FnZSAlcyBk
b2VzIG5vdCBleGlzdCIgJSBzc3RhdGVwa2cpCiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgc3N0
YXRlX2NsZWFuKHNzLCBkKQoKICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWlu
c3QpCiAgICBkLnNldFZhcignU1NUQVRFX1BLRycsIHNzdGF0ZXBrZykKCiAgICBmb3IgcHJlaW5z
dCBpbiAoZC5nZXRWYXIoJ1NTVEFURVBSRUlOU1RGVU5DUycsIFRydWUpIG9yICcnKS5zcGxpdCgp
OgogICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhwcmVpbnN0LCBkKQoKICAgIGJiLmJ1aWxkLmV4
ZWNfZnVuYygnc3N0YXRlX3VucGFja19wYWNrYWdlJywgZCkKCiAgICAjIEZpeHVwIGhhcmRjb2Rl
ZCBwYXRocwogICAgIwogICAgIyBOb3RlOiBUaGUgbG9naWMgYmVsb3cgbXVzdCBtYXRjaCB0aGUg
cmV2ZXJzZSBsb2dpYyBpbgogICAgIyBzc3RhdGVfaGFyZGNvZGVfcGF0aChkKQoKICAgIGZpeG1l
Zm4gPSAgc3N0YXRlaW5zdCArICJmaXhtZXBhdGgiCiAgICBpZiBvcy5wYXRoLmlzZmlsZShmaXht
ZWZuKToKICAgICAgICBzdGFnaW5nID0gZC5nZXRWYXIoJ1NUQUdJTkdfRElSJywgVHJ1ZSkKICAg
ICAgICBzdGFnaW5nX3RhcmdldCA9IGQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9UQVJHRVQnLCBUcnVl
KQogICAgICAgIHN0YWdpbmdfaG9zdCA9IGQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9IT1NUJywgVHJ1
ZSkKCiAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIu
ZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19j
bGFzcygnY3Jvc3NzZGsnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5h
ZGlhbicsIGQpOgogICAgICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6RklY
TUVTVEFHSU5HRElSOiVzOmcnIiAlIChzdGFnaW5nKQogICAgICAgIGVsaWYgYmIuZGF0YS5pbmhl
cml0c19jbGFzcygnY3Jvc3MnLCBkKToKICAgICAgICAgICAgc3N0YXRlX3NlZF9jbWQgPSAic2Vk
IC1pIC1lICdzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDolczpnOyBzOkZJWE1FU1RBR0lOR0RJUjol
czpnJyIgJSAoc3RhZ2luZ190YXJnZXQsIHN0YWdpbmcpCiAgICAgICAgZWxzZToKICAgICAgICAg
ICAgc3N0YXRlX3NlZF9jbWQgPSAic2VkIC1pIC1lICdzOkZJWE1FU1RBR0lOR0RJUkhPU1Q6JXM6
ZyciICUgKHN0YWdpbmdfaG9zdCkKCiAgICAgICAgIyBBZGQgc3N0YXRlaW5zdCB0byBlYWNoIGZp
bGVuYW1lIGluIGZpeG1lcGF0aCwgdXNlIHhhcmdzIHRvIGVmZmljaWVudGx5IGNhbGwgc2VkCiAg
ICAgICAgc3N0YXRlX2hhcmRjb2RlX2NtZCA9ICJzZWQgLWUgJ3M6XjolczpnJyAlcyB8IHhhcmdz
ICVzIiAlIChzc3RhdGVpbnN0LCBmaXhtZWZuLCBzc3RhdGVfc2VkX2NtZCkKCiAgICAgICAgcHJp
bnQgIlJlcGxhY2luZyBmaXhtZSBwYXRocyBpbiBzc3RhdGUgcGFja2FnZTogJXMiICUgKHNzdGF0
ZV9oYXJkY29kZV9jbWQpCiAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNzdGF0ZV9oYXJkY29kZV9j
bWQsIHNoZWxsPVRydWUpCgogICAgICAgICMgTmVlZCB0byByZW1vdmUgdGhpcyBvciB3ZSdkIGNv
cHkgaXQgaW50byB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgbWF5CiAgICAgICAgIyBjb25mbGlj
dCB3aXRoIGFub3RoZXIgd3JpdGVyCiAgICAgICAgb3MucmVtb3ZlKGZpeG1lZm4pCgogICAgZm9y
IHN0YXRlIGluIHNzWydkaXJzJ106CiAgICAgICAgcHJlcGRpcihzdGF0ZVsxXSkKICAgICAgICBv
cy5yZW5hbWUoc3N0YXRlaW5zdCArIHN0YXRlWzBdLCBzdGF0ZVsxXSkKICAgIHNzdGF0ZV9pbnN0
YWxsKHNzLCBkKQoKICAgIGZvciBwbGFpbiBpbiBzc1sncGxhaW5kaXJzJ106CiAgICAgICAgd29y
a2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJywgVHJ1ZSkKICAgICAgICBzcmMgPSBzc3RhdGVpbnN0
ICsgIi8iICsgcGxhaW4ucmVwbGFjZSh3b3JrZGlyLCAnJykKICAgICAgICBkZXN0ID0gcGxhaW4K
ICAgICAgICBiYi5ta2RpcmhpZXIoc3JjKQogICAgICAgIHByZXBkaXIoZGVzdCkKICAgICAgICBv
cy5yZW5hbWUoc3JjLCBkZXN0KQoKICAgIHJldHVybiBUcnVlCn0KCgpweXRob24gZ2V0X3Byb2Nl
c3NfY3B1dGltZSAoKSB7CmRlZiBnZXRfcHJvY2Vzc19jcHV0aW1lKHBpZCk6CiAgICBmaWVsZHMg
PSBvcGVuKCIvcHJvYy8lZC9zdGF0IiAlIHBpZCwgInIiKS5yZWFkbGluZSgpLnJzdHJpcCgpLnNw
bGl0KCkKICAgICMgMTM6IHV0aW1lLCAxNDogc3RpbWUsIDE1OiBjdXRpbWUsIDE2OiBjc3RpbWUK
ICAgIHJldHVybiBzdW0oaW50KGZpZWxkKSBmb3IgZmllbGQgaW4gZmllbGRzWzEzOjE2XSkKfQoK
CnB5dGhvbiBiYXNlX2dldF9tZXRhZGF0YV9naXRfcmV2aXNpb24gKCkgewpkZWYgYmFzZV9nZXRf
bWV0YWRhdGFfZ2l0X3JldmlzaW9uKHBhdGgsIGQpOgogICAgZiA9IG9zLnBvcGVuKCJjZCAlczsg
Z2l0IGxvZyAtbiAxIC0tcHJldHR5PW9uZWxpbmUgLS0gMj4mMSIgJSBwYXRoKQogICAgZGF0YSA9
IGYucmVhZCgpCiAgICBpZiBmLmNsb3NlKCkgaXMgTm9uZToKICAgICAgICByZXYgPSBkYXRhLnNw
bGl0KCIgIilbMF0KICAgICAgICBpZiBsZW4ocmV2KSAhPSAwOgogICAgICAgICAgICByZXR1cm4g
cmV2CiAgICByZXR1cm4gIjx1bmtub3duPiIKfQoKCnB5dGhvbiByYWlzZV9zYW5pdHlfZXJyb3Ig
KCkgewpkZWYgcmFpc2Vfc2FuaXR5X2Vycm9yKG1zZywgZCk6CiAgICBpZiBkLmdldFZhcigiU0FO
SVRZX1VTRV9FVkVOVFMiLCBUcnVlKSA9PSAiMSI6CiAgICAgICAgIyBGSVhNRTogaGFuZGxlIHdo
ZW4gQml0QmFrZSB2ZXJzaW9uIGlzIHRvbyBvbGQgdG8gc3VwcG9ydCBiYi5ldmVudC5TYW5pdHlD
aGVja0ZhaWxlZAogICAgICAgICMgV2UgY2FuIGp1c3QgZmlyZSB0aGUgZXZlbnQgZGlyZWN0bHkg
b25jZSB0aGUgbWluaW11bSB2ZXJzaW9uIGlzIGJ1bXBlZCBiZXlvbmQgMS4xNS4xCiAgICAgICAg
dHJ5OgogICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlNhbml0eUNoZWNrRmFpbGVk
KG1zZyksIGQpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJv
cjoKICAgICAgICAgICAgcGFzcwoKICAgIGJiLmZhdGFsKCIiIiBPRS1jb3JlJ3MgY29uZmlnIHNh
bml0eSBjaGVja2VyIGRldGVjdGVkIGEgcG90ZW50aWFsIG1pc2NvbmZpZ3VyYXRpb24uCiAgICBF
aXRoZXIgZml4IHRoZSBjYXVzZSBvZiB0aGlzIGVycm9yIG9yIGF0IHlvdXIgb3duIHJpc2sgZGlz
YWJsZSB0aGUgY2hlY2tlciAoc2VlIHNhbml0eS5jb25mKS4KICAgIEZvbGxvd2luZyBpcyB0aGUg
bGlzdCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMgLyBhZHZpc29yaWVzOgoKICAgICVzIiIiICUgbXNn
KQp9CgoKcHl0aG9uIGJhc2VfcmVhZF9maWxlICgpIHsKZGVmIGJhc2VfcmVhZF9maWxlKGZpbGVu
YW1lKToKICAgIHJldHVybiBvZS51dGlscy5yZWFkX2ZpbGUoZmlsZW5hbWUpCn0KCgpweXRob24g
cGFja2FnZV9kb19zcGxpdF9sb2NhbGVzICgpIHsKICAgIGlmIChkLmdldFZhcignUEFDS0FHRV9O
T19MT0NBTEUnLCBUcnVlKSA9PSAnMScpOgogICAgICAgIGJiLmRlYnVnKDEsICJwYWNrYWdlIHJl
cXVlc3RlZCBub3Qgc3BsaXR0aW5nIGxvY2FsZXMiKQogICAgICAgIHJldHVybgoKICAgIHBhY2th
Z2VzID0gKGQuZ2V0VmFyKCdQQUNLQUdFUycsIFRydWUpIG9yICIiKS5zcGxpdCgpCgogICAgZGF0
YWRpciA9IGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSkKICAgIGlmIG5vdCBkYXRhZGlyOgogICAg
ICAgIGJiLm5vdGUoImRhdGFkaXIgbm90IGRlZmluZWQiKQogICAgICAgIHJldHVybgoKICAgIGR2
YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCiAgICBwbiA9IGQuZ2V0VmFyKCdMT0NBTEVCQVNF
UE4nLCBUcnVlKQoKICAgIGlmIHBuICsgJy1sb2NhbGUnIGluIHBhY2thZ2VzOgogICAgICAgIHBh
Y2thZ2VzLnJlbW92ZShwbiArICctbG9jYWxlJykKCiAgICBsb2NhbGVkaXIgPSBvcy5wYXRoLmpv
aW4oZHZhciArIGRhdGFkaXIsICdsb2NhbGUnKQoKICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGxv
Y2FsZWRpcik6CiAgICAgICAgYmIuZGVidWcoMSwgIk5vIGxvY2FsZSBmaWxlcyBpbiB0aGlzIHBh
Y2thZ2UiKQogICAgICAgIHJldHVybgoKICAgIGxvY2FsZXMgPSBvcy5saXN0ZGlyKGxvY2FsZWRp
cikKCiAgICBzdW1tYXJ5ID0gZC5nZXRWYXIoJ1NVTU1BUlknLCBUcnVlKSBvciBwbgogICAgZGVz
Y3JpcHRpb24gPSBkLmdldFZhcignREVTQ1JJUFRJT04nLCBUcnVlKSBvciAiIgogICAgbG9jYWxl
X3NlY3Rpb24gPSBkLmdldFZhcignTE9DQUxFX1NFQ1RJT04nLCBUcnVlKQogICAgbWxwcmVmaXgg
PSBkLmdldFZhcignTUxQUkVGSVgnLCBUcnVlKSBvciAiIgogICAgcG5kZXAgPSBiYXNlX2NvbnRh
aW5zKCdQQUNLQUdFUycsIHBuLCAnJXMgJyAlIHBuLCAnJywgZCkKICAgIGZvciBsIGluIHNvcnRl
ZChsb2NhbGVzKToKICAgICAgICBsbiA9IGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKGwpCiAgICAg
ICAgcGtnID0gcG4gKyAnLWxvY2FsZS0nICsgbG4KICAgICAgICBwYWNrYWdlcy5hcHBlbmQocGtn
KQogICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcGtnLCBvcy5wYXRoLmpvaW4oZGF0YWRpciwg
J2xvY2FsZScsIGwpKQogICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcGtnLCAnJXMlc3Zp
cnR1YWwtbG9jYWxlLSVzJyAlIChwbmRlcCwgbWxwcmVmaXgsIGxuKSkKICAgICAgICBkLnNldFZh
cignUlBST1ZJREVTXycgKyBwa2csICclcy1sb2NhbGUgJXMlcy10cmFuc2xhdGlvbicgJSAocG4s
IG1scHJlZml4LCBsbikpCiAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHBrZywgJyVzIC0g
JXMgdHJhbnNsYXRpb25zJyAlIChzdW1tYXJ5LCBsKSkKICAgICAgICBkLnNldFZhcignREVTQ1JJ
UFRJT05fJyArIHBrZywgJyVzICBUaGlzIHBhY2thZ2UgY29udGFpbnMgbGFuZ3VhZ2UgdHJhbnNs
YXRpb24gZmlsZXMgZm9yIHRoZSAlcyBsb2NhbGUuJyAlIChkZXNjcmlwdGlvbiwgbCkpCiAgICAg
ICAgaWYgbG9jYWxlX3NlY3Rpb246CiAgICAgICAgICAgIGQuc2V0VmFyKCdTRUNUSU9OXycgKyBw
a2csIGxvY2FsZV9zZWN0aW9uKQoKICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBh
Y2thZ2VzKSkKCiAgICAjIERpc2FibGVkIGJ5IFJQIDE4LzA2LzA3CiAgICAjIFdpbGRjYXJkcyBh
cmVuJ3Qgc3VwcG9ydGVkIGluIGRlYmlhbgogICAgIyBUaGV5IGJyZWFrIHdpdGggaXBrZyBzaW5j
ZSBnbGliYy1sb2NhbGUqIHdpbGwgbWVhbiB0aGF0CiAgICAjIGdsaWJjLWxvY2FsZWRhdGEtdHJh
bnNsaXQqIHdvbid0IGluc3RhbGwgYXMgYSBkZXBlbmRlbmN5CiAgICAjIGZvciBzb21lIG90aGVy
IHBhY2thZ2Ugd2hpY2ggYnJlYWtzIG1ldGEtdG9vbGNoYWluCiAgICAjIFByb2JhYmx5IGJyZWFr
cyBzaW5jZSB2aXJ0dWFsLWxvY2FsZS0gaXNuJ3QgcHJvdmlkZWQgYW55d2hlcmUKICAgICNyZGVw
ID0gKGQuZ2V0VmFyKCdSREVQRU5EU18lcycgJSBwbiwgVHJ1ZSkgb3IgZC5nZXRWYXIoJ1JERVBF
TkRTJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgICNyZGVwLmFwcGVuZCgnJXMtbG9jYWxlKicg
JSBwbikKICAgICNkLnNldFZhcignUkRFUEVORFNfJXMnICUgcG4sICcgJy5qb2luKHJkZXApKQp9
CgoKcHl0aG9uIGJhc2VfYm90aF9jb250YWluICgpIHsKZGVmIGJhc2VfYm90aF9jb250YWluKHZh
cmlhYmxlMSwgdmFyaWFibGUyLCBjaGVja3ZhbHVlLCBkKToKICAgIHJldHVybiBvZS51dGlscy5i
b3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpCn0KCgpweXRo
b24gZGViaWFuX3BhY2thZ2VfbmFtZV9ob29rICgpIHsKICAgIGltcG9ydCBnbG9iLCBjb3B5LCBz
dGF0LCBlcnJubywgcmUKCiAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnLCBUcnVlKQog
ICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnLCBUcnVlKQogICAgYmluX3JlID0gcmUu
Y29tcGlsZSgiLiovcz8iICsgb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcigiYmluZGlyIiwgVHJ1
ZSkpICsgIiQiKQogICAgbGliX3JlID0gcmUuY29tcGlsZSgiLiovIiArIG9zLnBhdGguYmFzZW5h
bWUoZC5nZXRWYXIoImxpYmRpciIsIFRydWUpKSArICIkIikKICAgIHNvX3JlID0gcmUuY29tcGls
ZSgibGliLipcLnNvIikKCiAgICBkZWYgc29jcnVuY2gocyk6CiAgICAgICAgcyA9IHMubG93ZXIo
KS5yZXBsYWNlKCdfJywgJy0nKQogICAgICAgIG0gPSByZS5tYXRjaCgiXiguKikoLilcLnNvXC4o
LiopJCIsIHMpCiAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQog
ICAgICAgIGlmIG0uZ3JvdXAoMikgaW4gJzAxMjM0NTY3ODknOgogICAgICAgICAgICBiaW4gPSAn
JXMlcy0lcycgJSAobS5ncm91cCgxKSwgbS5ncm91cCgyKSwgbS5ncm91cCgzKSkKICAgICAgICBl
bHNlOgogICAgICAgICAgICBiaW4gPSBtLmdyb3VwKDEpICsgbS5ncm91cCgyKSArIG0uZ3JvdXAo
MykKICAgICAgICBkZXYgPSBtLmdyb3VwKDEpICsgbS5ncm91cCgyKQogICAgICAgIHJldHVybiAo
YmluLCBkZXYpCgogICAgZGVmIGlzZXhlYyhwYXRoKToKICAgICAgICB0cnk6CiAgICAgICAgICAg
IHMgPSBvcy5zdGF0KHBhdGgpCiAgICAgICAgZXhjZXB0IChvcy5lcnJvciwgQXR0cmlidXRlRXJy
b3IpOgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIHJldHVybiAoc1tzdGF0LlNUX01PREVd
ICYgc3RhdC5TX0lFWEVDKQoKICAgIGRlZiBhdXRvX2xpYm5hbWUocGFja2FnZXMsIG9yaWdfcGtn
KToKICAgICAgICBzb25hbWVzID0gW10KICAgICAgICBoYXNfYmlucyA9IDAKICAgICAgICBoYXNf
bGlicyA9IDAKICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHBrZ2Rlc3QsIG9yaWdfcGtn
KQogICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBrZ19kaXIpOgogICAg
ICAgICAgICBpZiBiaW5fcmUubWF0Y2gocm9vdCkgYW5kIGZpbGVzOgogICAgICAgICAgICAgICAg
aGFzX2JpbnMgPSAxCiAgICAgICAgICAgIGlmIGxpYl9yZS5tYXRjaChyb290KSBhbmQgZmlsZXM6
CiAgICAgICAgICAgICAgICBoYXNfbGlicyA9IDEKICAgICAgICAgICAgICAgIGZvciBmIGluIGZp
bGVzOgogICAgICAgICAgICAgICAgICAgIGlmIHNvX3JlLm1hdGNoKGYpOgogICAgICAgICAgICAg
ICAgICAgICAgICBmcCA9IG9zLnBhdGguam9pbihyb290LCBmKQogICAgICAgICAgICAgICAgICAg
ICAgICBjbWQgPSAoZC5nZXRWYXIoJ1RBUkdFVF9QUkVGSVgnLCBUcnVlKSBvciAiIikgKyAib2Jq
ZHVtcCAtcCAiICsgZnAgKyAiIDI+L2Rldi9udWxsIgogICAgICAgICAgICAgICAgICAgICAgICBm
ZCA9IG9zLnBvcGVuKGNtZCkKICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmZC5yZWFk
bGluZXMoKQogICAgICAgICAgICAgICAgICAgICAgICBmZC5jbG9zZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKCJccytTT05BTUVccysoW15cc10qKSIsIGwpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBtIGFuZCBub3QgbS5ncm91cCgxKSBpbiBzb25hbWVzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKG0uZ3JvdXAoMSkpCgogICAgICAgIGJi
LmRlYnVnKDEsICdMSUJOQU1FUzogcGtnICVzIGxpYnMgJWQgYmlucyAlZCBzb25hbWVzICVzJyAl
IChvcmlnX3BrZywgaGFzX2xpYnMsIGhhc19iaW5zLCBzb25hbWVzKSkKICAgICAgICBzb25hbWUg
PSBOb25lCiAgICAgICAgaWYgbGVuKHNvbmFtZXMpID09IDE6CiAgICAgICAgICAgIHNvbmFtZSA9
IHNvbmFtZXNbMF0KICAgICAgICBlbGlmIGxlbihzb25hbWVzKSA+IDE6CiAgICAgICAgICAgIGxl
YWQgPSBkLmdldFZhcignTEVBRF9TT05BTUUnLCBUcnVlKQogICAgICAgICAgICBpZiBsZWFkOgog
ICAgICAgICAgICAgICAgciA9IHJlLmNvbXBpbGUobGVhZCkKICAgICAgICAgICAgICAgIGZpbHRl
cmVkID0gW10KICAgICAgICAgICAgICAgIGZvciBzIGluIHNvbmFtZXM6CiAgICAgICAgICAgICAg
ICAgICAgaWYgci5tYXRjaChzKToKICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBw
ZW5kKHMpCiAgICAgICAgICAgICAgICBpZiBsZW4oZmlsdGVyZWQpID09IDE6CiAgICAgICAgICAg
ICAgICAgICAgc29uYW1lID0gZmlsdGVyZWRbMF0KICAgICAgICAgICAgICAgIGVsaWYgbGVuKGZp
bHRlcmVkKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiTXVsdGlwbGUgbWF0Y2hl
cyAoJXMpIGZvciBMRUFEX1NPTkFNRSAnJXMnIiAlICgiLCAiLmpvaW4oZmlsdGVyZWQpLCBsZWFk
KSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiTXVs
dGlwbGUgbGlicmFyaWVzICglcykgZm91bmQsIGJ1dCBMRUFEX1NPTkFNRSAnJXMnIGRvZXNuJ3Qg
bWF0Y2ggYW55IG9mIHRoZW0iICUgKCIsICIuam9pbihzb25hbWVzKSwgbGVhZCkpCiAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICBiYi5ub3RlKCJNdWx0aXBsZSBsaWJyYXJpZXMgKCVz
KSBmb3VuZCBhbmQgTEVBRF9TT05BTUUgbm90IGRlZmluZWQiICUgIiwgIi5qb2luKHNvbmFtZXMp
KQoKICAgICAgICBpZiBoYXNfbGlicyBhbmQgbm90IGhhc19iaW5zIGFuZCBzb25hbWU6CiAgICAg
ICAgICAgIHNvbmFtZV9yZXN1bHQgPSBzb2NydW5jaChzb25hbWUpCiAgICAgICAgICAgIGlmIHNv
bmFtZV9yZXN1bHQ6CiAgICAgICAgICAgICAgICAocGtnbmFtZSwgZGV2bmFtZSkgPSBzb25hbWVf
cmVzdWx0CiAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAg
ICAgICAgICAgICAgICAgaWYgKGQuZ2V0VmFyKCdQS0dfJyArIHBrZykgb3IgZC5nZXRWYXIoJ0RF
QklBTl9OT0FVVE9OQU1FXycgKyBwa2cpKToKICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKICAgICAgICAgICAgICAgICAgICBkZWJpYW5fcG4gPSBkLmdldFZhcignREVCSUFOTkFNRV8n
ICsgcGtnKQogICAgICAgICAgICAgICAgICAgIGlmIGRlYmlhbl9wbjoKICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3cGtnID0gZGViaWFuX3BuCiAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cg
PT0gb3JpZ19wa2c6CiAgICAgICAgICAgICAgICAgICAgICAgIG5ld3BrZyA9IHBrZ25hbWUKICAg
ICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBuZXdwa2cgPSBw
a2cucmVwbGFjZShvcmlnX3BrZywgZGV2bmFtZSwgMSkKICAgICAgICAgICAgICAgICAgICBtbHBy
ZT1kLmdldFZhcignTUxQUkVGSVgnLCBUcnVlKQogICAgICAgICAgICAgICAgICAgIGlmIG1scHJl
OgogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmV3cGtnLmZpbmQobWxwcmUpID09IDA6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwa2cgPSBtbHByZSArIG5ld3BrZwogICAg
ICAgICAgICAgICAgICAgIGlmIG5ld3BrZyAhPSBwa2c6CiAgICAgICAgICAgICAgICAgICAgICAg
IGQuc2V0VmFyKCdQS0dfJyArIHBrZywgbmV3cGtnKQoKICAgICMgcmV2ZXJzZWQgc29ydCBpcyBu
ZWVkZWQgd2hlbiBzb21lIHBhY2thZ2UgaXMgc3Vic3RyaW5nIG9mIGFub3RoZXIKICAgICMgaWUg
aW4gbmN1cnNlcyB3ZSBnZXQgd2l0aG91dCByZXZlcnNlIHNvcnQ6CiAgICAjIERFQlVHOiBMSUJO
QU1FUzogcGtnbmFtZSBsaWJ0aWM1IGRldm5hbWUgbGlidGljIHBrZyBuY3Vyc2VzLWxpYnRpYyBv
cmlnX3BrZyBuY3Vyc2VzLWxpYnRpYyBkZWJpYW5fcG4gTm9uZSBuZXdwa2cgbGlidGljNQogICAg
IyBhbmQgbGF0ZXIKICAgICMgREVCVUc6IExJQk5BTUVTOiBwa2duYW1lIGxpYnRpYzUgZGV2bmFt
ZSBsaWJ0aWMgcGtnIG5jdXJzZXMtbGlidGljdyBvcmlnX3BrZyBuY3Vyc2VzLWxpYnRpYyBkZWJp
YW5fcG4gTm9uZSBuZXdwa2cgbGlidGljdwogICAgIyBzbyB3ZSBuZWVkIHRvIGhhbmRsZSBuY3Vy
c2VzLWxpYnRpY3ctPmxpYnRpY3c1IGJlZm9yZSBuY3Vyc2VzLWxpYnRpYy0+bGlidGljNQogICAg
Zm9yIHBrZyBpbiBzb3J0ZWQoKGQuZ2V0VmFyKCdBVVRPX0xJQk5BTUVfUEtHUycsIFRydWUpIG9y
ICIiKS5zcGxpdCgpLCByZXZlcnNlPVRydWUpOgogICAgICAgIGF1dG9fbGlibmFtZShwYWNrYWdl
cywgcGtnKQp9CgoKcHl0aG9uIHBhY2thZ2VfcnBtX2luc3RhbGwgKCkgewogICAgYmIuZmF0YWwo
InBhY2thZ2VfcnBtX2luc3RhbGwgbm90IGltcGxlbWVudGVkISIpCn0KCgpweXRob24gY2hlY2tf
dG9vbGNoYWluX3R1bmUgKCkgewpkZWYgY2hlY2tfdG9vbGNoYWluX3R1bmUoZGF0YSwgdHVuZSwg
bXVsdGlsaWIpOgogICAgdHVuZV9lcnJvcnMgPSBbXQogICAgaWYgbm90IHR1bmU6CiAgICAgICAg
cmV0dXJuICJObyB0dW5pbmcgZm91bmQgZm9yICVzIG11bHRpbGliLiIgJSBtdWx0aWxpYgogICAg
YmIuZGVidWcoMiwgIlNhbml0eS1jaGVja2luZyB0dW5pbmcgJyVzJyAoJXMpIGZlYXR1cmVzOiIg
JSAodHVuZSwgbXVsdGlsaWIpKQogICAgZmVhdHVyZXMgPSAoZGF0YS5nZXRWYXIoIlRVTkVfRkVB
VFVSRVNfdHVuZS0lcyIgJSB0dW5lLCBUcnVlKSBvciAiIikuc3BsaXQoKQogICAgaWYgbm90IGZl
YXR1cmVzOgogICAgICAgIHJldHVybiAiVHVuaW5nICclcycgaGFzIG5vIGRlZmluZWQgZmVhdHVy
ZXMsIGFuZCBjYW5ub3QgYmUgdXNlZC4iICUgdHVuZQogICAgdmFsaWRfdHVuZXMgPSBkYXRhLmdl
dFZhckZsYWdzKCdUVU5FVkFMSUQnKSBvciB7fQogICAgY29uZmxpY3RzID0gZGF0YS5nZXRWYXJG
bGFncygnVFVORUNPTkZMSUNUUycpIG9yIHt9CiAgICAjIFtkb2NdIGlzIHRoZSBkb2N1bWVudGF0
aW9uIGZvciB0aGUgdmFyaWFibGUsIG5vdCBhIHJlYWwgZmVhdHVyZQogICAgaWYgJ2RvYycgaW4g
dmFsaWRfdHVuZXM6CiAgICAgICAgZGVsIHZhbGlkX3R1bmVzWydkb2MnXQogICAgaWYgJ2RvYycg
aW4gY29uZmxpY3RzOgogICAgICAgIGRlbCBjb25mbGljdHNbJ2RvYyddCiAgICBmb3IgZmVhdHVy
ZSBpbiBmZWF0dXJlczoKICAgICAgICBpZiBmZWF0dXJlIGluIGNvbmZsaWN0czoKICAgICAgICAg
ICAgZm9yIGNvbmZsaWN0IGluIGNvbmZsaWN0c1tmZWF0dXJlXS5zcGxpdCgpOgogICAgICAgICAg
ICAgICAgaWYgY29uZmxpY3QgaW4gZmVhdHVyZXM6CiAgICAgICAgICAgICAgICAgICAgdHVuZV9l
cnJvcnMuYXBwZW5kKCJGZWF0dXJlICclcycgY29uZmxpY3RzIHdpdGggJyVzJy4iICUKICAgICAg
ICAgICAgICAgICAgICAgICAgKGZlYXR1cmUsIGNvbmZsaWN0KSkKICAgICAgICBpZiBmZWF0dXJl
IGluIHZhbGlkX3R1bmVzOgogICAgICAgICAgICBiYi5kZWJ1ZygyLCAiICAlczogJXMiICUgKGZl
YXR1cmUsIHZhbGlkX3R1bmVzW2ZlYXR1cmVdKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICB0
dW5lX2Vycm9ycy5hcHBlbmQoIkZlYXR1cmUgJyVzJyBpcyBub3QgZGVmaW5lZC4iICUgZmVhdHVy
ZSkKICAgIHdoaXRlbGlzdCA9IGRhdGEuZ2V0VmFyKCJUVU5FQUJJX1dISVRFTElTVCIsIFRydWUp
IG9yICcnCiAgICBvdmVycmlkZSA9IGRhdGEuZ2V0VmFyKCJUVU5FQUJJX09WRVJSSURFIiwgVHJ1
ZSkgb3IgJycKICAgIGlmIHdoaXRlbGlzdDoKICAgICAgICB0dW5lYWJpID0gZGF0YS5nZXRWYXIo
IlRVTkVBQklfdHVuZS0lcyIgJSB0dW5lLCBUcnVlKSBvciAnJwogICAgICAgIGlmIG5vdCB0dW5l
YWJpOgogICAgICAgICAgICB0dW5lYWJpID0gdHVuZQogICAgICAgIGlmIFRydWUgbm90IGluIFt4
IGluIHdoaXRlbGlzdC5zcGxpdCgpIGZvciB4IGluIHR1bmVhYmkuc3BsaXQoKV06CiAgICAgICAg
ICAgIHR1bmVfZXJyb3JzLmFwcGVuZCgiVHVuaW5nICclcycgKCVzKSBjYW5ub3QgYmUgdXNlZCB3
aXRoIGFueSBzdXBwb3J0ZWQgdHVuaW5nL0FCSS4iICUKICAgICAgICAgICAgICAgICh0dW5lLCB0
dW5lYWJpKSkKICAgIGlmIHR1bmVfZXJyb3JzOgogICAgICAgIHJldHVybiAiVHVuaW5nICclcycg
aGFzIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuIiArICdcbicuam9pbih0dW5lX2Vycm9ycykKfQoK
CnB5dGhvbiBvZV9maWx0ZXIgKCkgewpkZWYgb2VfZmlsdGVyKGYsIHN0ciwgZCk6CiAgICByZXR1
cm4gb2UudXRpbHMuc3RyX2ZpbHRlcihmLCBzdHIsIGQpCn0KCgpweXRob24gc3N0YXRlX2NoZWNr
aGFzaGVzICgpIHsKZGVmIHNzdGF0ZV9jaGVja2hhc2hlcyhzcV9mbiwgc3FfdGFzaywgc3FfaGFz
aCwgc3FfaGFzaGZuLCBkKToKCiAgICByZXQgPSBbXQogICAgIyBUaGlzIG5lZWRzIHRvIGdvIGF3
YXksIEZJWE1FCiAgICBtYXBwaW5nID0gewogICAgICAgICJkb19wb3B1bGF0ZV9zeXNyb290IiA6
ICJwb3B1bGF0ZS1zeXNyb290IiwKICAgICAgICAiZG9fcG9wdWxhdGVfbGljIiA6ICJwb3B1bGF0
ZS1saWMiLAogICAgICAgICJkb19wYWNrYWdlX3dyaXRlX2lwayIgOiAiZGVwbG95LWlwayIsCiAg
ICAgICAgImRvX3BhY2thZ2Vfd3JpdGVfZGViIiA6ICJkZXBsb3ktZGViIiwKICAgICAgICAiZG9f
cGFja2FnZV93cml0ZV9ycG0iIDogImRlcGxveS1ycG0iLAogICAgICAgICJkb19wYWNrYWdlIiA6
ICJwYWNrYWdlIiwKICAgICAgICAiZG9fZGVwbG95IiA6ICJkZXBsb3kiLAogICAgfQoKICAgIGZv
ciB0YXNrIGluIHJhbmdlKGxlbihzcV9mbikpOgogICAgICAgIHNwZWMgPSBzcV9oYXNoZm5bdGFz
a10uc3BsaXQoIiAiKVsxXQogICAgICAgIGV4dHJhcGF0aCA9IHNxX2hhc2hmblt0YXNrXS5zcGxp
dCgiICIpWzBdCgogICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZCgiL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC9zc3RhdGUtY2FjaGUvIiArIGV4dHJhcGF0aCArIGdlbmVyYXRlX3Nz
dGF0ZWZuKHNwZWMsIHNxX2hhc2hbdGFza10sIGQpICsgIl8iICsgbWFwcGluZ1tzcV90YXNrW3Rh
c2tdXSArICIudGd6IikKICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzc3RhdGVmaWxlKToKICAg
ICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTogRm91bmQgdmFsaWQgc3N0YXRlIGZpbGUgJXMi
ICUgc3N0YXRlZmlsZSkKICAgICAgICAgICAgcmV0LmFwcGVuZCh0YXNrKQogICAgICAgICAgICBj
b250aW51ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IExv
b2tlZCBmb3IgYnV0IGRpZG4ndCBmaW5kIGZpbGUgJXMiICUgc3N0YXRlZmlsZSkKCiAgICBtaXJy
b3JzID0gZC5nZXRWYXIoIlNTVEFURV9NSVJST1JTIiwgVHJ1ZSkKICAgIGlmIG1pcnJvcnM6CiAg
ICAgICAgIyBDb3B5IHRoZSBkYXRhIG9iamVjdCBhbmQgb3ZlcnJpZGUgRExfRElSIGFuZCBTUkNf
VVJJCiAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgICAgYmIu
ZGF0YS51cGRhdGVfZGF0YShsb2NhbGRhdGEpCgogICAgICAgIGRsZGlyID0gbG9jYWxkYXRhLmV4
cGFuZCgiL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC9zc3RhdGUtY2FjaGUiKQogICAg
ICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0RMX0RJUicsIGRsZGlyKQogICAgICAgIGxvY2FsZGF0YS5z
ZXRWYXIoJ1BSRU1JUlJPUlMnLCBtaXJyb3JzKQoKICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRl
IHVzaW5nIHByZW1pcnJvciBvZjogJXMiICUgbWlycm9ycykKCiAgICAgICAgZm9yIHRhc2sgaW4g
cmFuZ2UobGVuKHNxX2ZuKSk6CiAgICAgICAgICAgIGlmIHRhc2sgaW4gcmV0OgogICAgICAgICAg
ICAgICAgY29udGludWUKCiAgICAgICAgICAgIHNwZWMgPSBzcV9oYXNoZm5bdGFza10uc3BsaXQo
IiAiKVsxXQogICAgICAgICAgICBleHRyYXBhdGggPSBzcV9oYXNoZm5bdGFza10uc3BsaXQoIiAi
KVswXQogICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJh
dGVfc3N0YXRlZm4oc3BlYywgc3FfaGFzaFt0YXNrXSwgZCkgKyAiXyIgKyBtYXBwaW5nW3NxX3Rh
c2tbdGFza11dICsgIi50Z3oiKQoKICAgICAgICAgICAgc3JjdXJpID0gImZpbGU6Ly8iICsgc3N0
YXRlZmlsZQogICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdTUkNfVVJJJywgc3JjdXJpKQog
ICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBBdHRlbXB0aW5nIHRvIGZldGNoICVzIiAl
IHNyY3VyaSkKCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGZldGNoZXIgPSBiYi5m
ZXRjaDIuRmV0Y2goc3JjdXJpLnNwbGl0KCksIGxvY2FsZGF0YSkKICAgICAgICAgICAgICAgIGZl
dGNoZXIuY2hlY2tzdGF0dXMoKQogICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTog
U3VjY2Vzc2Z1bCBmZXRjaCB0ZXN0IGZvciAlcyIgJSBzcmN1cmkpCiAgICAgICAgICAgICAgICBy
ZXQuYXBwZW5kKHRhc2spCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIGJiLmRl
YnVnKDIsICJTU3RhdGU6IFVuc3VjY2Vzc2Z1bCBmZXRjaCB0ZXN0IGZvciAlcyIgJSBzcmN1cmkp
CiAgICAgICAgICAgICAgICBwYXNzCgogICAgcmV0dXJuIHJldAp9CgoKcHl0aG9uIGNoZWNrX3Bz
ZXVkb193cmFwcGVyICgpIHsKZGVmIGNoZWNrX3BzZXVkb193cmFwcGVyKCk6CiAgICBpbXBvcnQg
c3lzCiAgICBpZiBub3Qgc3lzLmFyZ3ZbMF0uZW5kc3dpdGgoJy9iaXRiYWtlJyk6CiAgICAgICAg
cmV0dXJuICIiCgogICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCiAgICAjIENoZWNrIGlmIGJp
dGJha2Ugd3JhcHBlciBpcyBiZWluZyB1c2VkCiAgICBwc2V1ZG9fYnVpbGQgPSBvcy5lbnZpcm9u
LmdldCggJ1BTRVVET19CVUlMRCcgKQogICAgaWYgbm90IHBzZXVkb19idWlsZDoKICAgICAgICBi
Yi53YXJuKCJCaXRiYWtlIGhhcyBub3QgYmVlbiBydW4gdXNpbmcgdGhlIGJpdGJha2Ugd3JhcHBl
ciAoc2NyaXB0cy9iaXRiYWtlKTsgdGhpcyBpcyBsaWtlbHkgYmVjYXVzZSB5b3VyIFBBVEggaGFz
IGJlZW4gYWx0ZXJlZCBmcm9tIHRoYXQgbm9ybWFsbHkgc2V0IHVwIGJ5IHRoZSBvZS1pbml0LWJ1
aWxkLWVudiBzY3JpcHQuIE5vdCB1c2luZyB0aGUgd3JhcHBlciBtYXkgcmVzdWx0IGluIGZhaWx1
cmVzIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbiwgc28gaXQgaXMgaGlnaGx5IHJlY29tbWVu
ZGVkIHRoYXQgeW91IHNldCB5b3VyIFBBVEggYmFjayBzbyB0aGF0IHRoZSB3cmFwcGVyIHNjcmlw
dCBpcyBiZWluZyBleGVjdXRlZC4iKQoKICAgIGlmIChub3QgcHNldWRvX2J1aWxkKSBvciBwc2V1
ZG9fYnVpbGQgPT0gJzInOgogICAgICAgICMgcHNldWRvIG91Z2h0IHRvIGJlIHdvcmtpbmcsIGxl
dCdzIHNlZSBpZiBpdCBpcy4uLgogICAgICAgIHAgPSBzdWIuUG9wZW4oWydzaCcsICctYycsICdQ
U0VVRE9fRElTQUJMRUQ9MCBpZCAtdSddLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUp
CiAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICBpZiBvdXQucnN0cmlw
KCkgIT0gJzAnOgogICAgICAgICAgICBtc2cgPSAiUHNldWRvIGlzIG5vdCBmdW5jdGlvbmluZyBj
b3JyZWN0bHksIHdoaWNoIHdpbGwgY2F1c2UgZmFpbHVyZXMgZHVyaW5nIHBhY2thZ2UgaW5zdGFs
bGF0aW9uLiBQbGVhc2UgY2hlY2sgeW91ciBjb25maWd1cmF0aW9uLiIKICAgICAgICAgICAgaWYg
cHNldWRvX2J1aWxkID09ICcyJzoKICAgICAgICAgICAgICAgIHJldHVybiBtc2cKICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgIGJiLndhcm4obXNnKQogICAgcmV0dXJuICIiCn0KCgpw
eXRob24gZG9fcWFfc3RhZ2luZyAoKSB7CiAgICBiYi5ub3RlKCJRQSBjaGVja2luZyBzdGFnaW5n
IikKCiAgICBpZiBub3QgcGFja2FnZV9xYV9jaGVja19zdGFnZWQoZC5leHBhbmQoJy9ob21lL2xz
ZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVh
YmkvYmJsYXllcnMtMS4wLXIwL3N5c3Jvb3QtZGVzdGRpci8vL2hvbWUvbHNlcmJhbi93b3JrL21h
c3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtL3Vzci9saWInKSwgZCk6CiAgICAgICAg
YmIuZmF0YWwoIlFBIHN0YWdpbmcgd2FzIGJyb2tlbiBieSB0aGUgcGFja2FnZSBidWlsdCBhYm92
ZSIpCn0KCgpweXRob24gZXh0cmFfcGF0aF9lbGVtZW50cyAoKSB7CmRlZiBleHRyYV9wYXRoX2Vs
ZW1lbnRzKGQpOgogICAgcGF0aCA9ICIiCiAgICBlbGVtZW50cyA9IChkLmdldFZhcignRVhUUkFO
QVRJVkVQQVRIJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkKICAgIGZvciBlIGluIGVsZW1lbnRzOgog
ICAgICAgIHBhdGggPSBwYXRoICsgIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1w
L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluLyIgKyBlICsgIjoiCiAgICByZXR1cm4gcGF0
aAp9CgoKcHl0aG9uIHNzdGF0ZV9hZGQgKCkgewpkZWYgc3N0YXRlX2FkZChzcywgc291cmNlLCBk
ZXN0LCBkKToKICAgIHNyY2Jhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkKICAgIHNzWydk
aXJzJ10uYXBwZW5kKFtzcmNiYXNlLCBzb3VyY2UsIGRlc3RdKQogICAgcmV0dXJuIHNzCn0KCgpw
eXRob24gZG9fcWFfY29uZmlndXJlICgpIHsKICAgIGltcG9ydCBzdWJwcm9jZXNzCgogICAgY29u
ZmlncyA9IFtdCiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVlKQogICAgYmIu
bm90ZSgiQ2hlY2tpbmcgYXV0b3Rvb2xzIGVudmlyb25tZW50IGZvciBjb21tb24gbWlzY29uZmln
dXJhdGlvbiIpCiAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh3b3JrZGlyKToK
ICAgICAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtZSAnQ1JPU1MgQ09NUElMRSBCYWRuZXNzOicgLWUg
J2lzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24nICVzID4gL2Rldi9udWxsIiAlIFwKICAg
ICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocm9vdCwiY29uZmlnLmxvZyIpCiAgICAgICAg
aWYgImNvbmZpZy5sb2ciIGluIGZpbGVzOgogICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwo
c3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgogICAgICAgICAgICAgICAgYmIuZmF0YWwoIiIi
VGhpcyBhdXRvY29uZiBsb2cgaW5kaWNhdGVzIGVycm9ycywgaXQgbG9va2VkIGF0IGhvc3QgaW5j
bHVkZSBhbmQvb3IgbGlicmFyeSBwYXRocyB3aGlsZSBkZXRlcm1pbmluZyBzeXN0ZW0gY2FwYWJp
bGl0aWVzLgpSZXJ1biBjb25maWd1cmUgdGFzayBhZnRlciBmaXhpbmcgdGhpcy4gVGhlIHBhdGgg
d2FzICclcyciIiIgJSByb290KQoKICAgICAgICBpZiAiY29uZmlndXJlLmFjIiBpbiBmaWxlczoK
ICAgICAgICAgICAgY29uZmlncy5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsImNvbmZpZ3VyZS5h
YyIpKQogICAgICAgIGlmICJjb25maWd1cmUuaW4iIGluIGZpbGVzOgogICAgICAgICAgICBjb25m
aWdzLmFwcGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgImNvbmZpZ3VyZS5pbiIpKQoKICAgIGNuZiA9
IGQuZ2V0VmFyKCdFWFRSQV9PRUNPTkYnLCBUcnVlKSBvciAiIgogICAgaWYgImdldHRleHQiIG5v
dCBpbiBkLmdldFZhcignUCcsIFRydWUpIGFuZCAiZ2NjLXJ1bnRpbWUiIG5vdCBpbiBkLmdldFZh
cignUCcsIFRydWUpIGFuZCAiLS1kaXNhYmxlLW5scyIgbm90IGluIGNuZjoKICAgICAgIG1sID0g
ZC5nZXRWYXIoIk1MUFJFRklYIiwgVHJ1ZSkgb3IgIiIKICAgICAgIGlmIGJiLmRhdGEuaW5oZXJp
dHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywg
ZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3NzZGsnLCBkKSBvciBiYi5kYXRhLmlu
aGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKToKICAgICAgICAgIGd0ID0gImdldHRleHQtbmF0
aXZlIgogICAgICAgZWxpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbics
IGQpOgogICAgICAgICAgZ3QgPSAiZ2V0dGV4dC1uYXRpdmVzZGsiCiAgICAgICBlbHNlOgogICAg
ICAgICAgZ3QgPSAidmlydHVhbC8iICsgbWwgKyAiZ2V0dGV4dCIKICAgICAgIGRlcHMgPSBiYi51
dGlscy5leHBsb2RlX2RlcHMoZC5nZXRWYXIoJ0RFUEVORFMnLCBUcnVlKSBvciAiIikKICAgICAg
IGlmIGd0IG5vdCBpbiBkZXBzOgogICAgICAgICAgZm9yIGNvbmZpZyBpbiBjb25maWdzOgogICAg
ICAgICAgICAgIGdudSA9ICJncmVwIFwiXltbOnNwYWNlOl1dKkFNX0dOVV9HRVRURVhUXCIgJXMg
Pi9kZXYvbnVsbCIgJSBjb25maWcKICAgICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoZ251
LCBzaGVsbD1UcnVlKSA9PSAwOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIiIiVzIHJlcXVp
cmVkIGJ1dCBub3QgaW4gREVQRU5EUyBmb3IgZmlsZSAlcy4KTWlzc2luZyBpbmhlcml0IGdldHRl
eHQ/IiIiICUgKGd0LCBjb25maWcpKQoKICAgIGlmIG5vdCBwYWNrYWdlX3FhX2NoZWNrX2xpY2Vu
c2Uod29ya2RpciwgZCk6CiAgICAgICAgYmIuZmF0YWwoIkxpY2Vuc2luZyBFcnJvcjogTElDX0ZJ
TEVTX0NIS1NVTSBkb2VzIG5vdCBtYXRjaCwgcGxlYXNlIGZpeCIpCn0KCgpweXRob24gcHJzZXJ2
X2dldF9wcl9hdXRvICgpIHsKZGVmIHByc2Vydl9nZXRfcHJfYXV0byhkKToKICAgIGltcG9ydCBv
ZS5wcnNlcnZpY2UKICAgIGlmIGQuZ2V0VmFyKCdVU0VfUFJfU0VSVicsIFRydWUpICE9ICIxIjoK
ICAgICAgICBiYi53YXJuKCJOb3QgdXNpbmcgbmV0d29yayBiYXNlZCBQUiBzZXJ2aWNlIikKICAg
ICAgICByZXR1cm4gTm9uZQoKICAgIHZlcnNpb24gPSBkLmdldFZhcigiUFJBVVRPSU5YIiwgVHJ1
ZSkKICAgIHBrZ2FyY2ggPSBkLmdldFZhcigiUEFDS0FHRV9BUkNIIiwgVHJ1ZSkKICAgIGNoZWNr
c3VtID0gZC5nZXRWYXIoIkJCX1RBU0tIQVNIIiwgVHJ1ZSkKCiAgICBpZiBkLmdldFZhcignUFJT
RVJWX0xPQ0tET1dOJywgVHJ1ZSk6CiAgICAgICAgYXV0b19yZXYgPSBkLmdldFZhcignUFJBVVRP
XycgKyB2ZXJzaW9uICsgJ18nICsgcGtnYXJjaCwgVHJ1ZSkgb3IgZC5nZXRWYXIoJ1BSQVVUT18n
ICsgdmVyc2lvbiwgVHJ1ZSkgb3IgTm9uZQogICAgZWxzZToKICAgICAgICBjb25uID0gZC5nZXRW
YXIoIl9fUFJTRVJWX0NPTk4iLCBUcnVlKQogICAgICAgIGlmIGNvbm4gaXMgTm9uZToKICAgICAg
ICAgICAgY29ubiA9IG9lLnByc2VydmljZS5wcnNlcnZfbWFrZV9jb25uKGQpCiAgICAgICAgICAg
IGlmIGNvbm4gaXMgTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgYXV0
b19yZXYgPSBjb25uLmdldFBSKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKQoKICAgIHJldHVy
biBhdXRvX3Jldn0KCgpweXRob24gYmFzZV9zZXRfZmlsZXNwYXRoICgpIHsKZGVmIGJhc2Vfc2V0
X2ZpbGVzcGF0aChwYXRoLCBkKToKICAgIGZpbGVzcGF0aCA9IFtdCiAgICBleHRyYXBhdGhzID0g
KGQuZ2V0VmFyKCJGSUxFU0VYVFJBUEFUSFMiLCBUcnVlKSBvciAiIikKICAgICMgRG9uJ3QgcHJl
cGVuZCBlbXB0eSBzdHJpbmdzIHRvIHRoZSBwYXRoIGxpc3QKICAgIGlmIGV4dHJhcGF0aHMgIT0g
IiI6CiAgICAgICAgcGF0aCA9IGV4dHJhcGF0aHMuc3BsaXQoIjoiKSArIHBhdGgKICAgICMgVGhl
ICI6IiBlbnN1cmVzIHdlIGhhdmUgYW4gJ2VtcHR5JyBvdmVycmlkZQogICAgb3ZlcnJpZGVzID0g
KGQuZ2V0VmFyKCJPVkVSUklERVMiLCBUcnVlKSBvciAiIikgKyAiOiIKICAgIGZvciBwIGluIHBh
dGg6CiAgICAgICAgaWYgcCAhPSAiIjoKICAgICAgICAgICAgZm9yIG8gaW4gb3ZlcnJpZGVzLnNw
bGl0KCI6Iik6CiAgICAgICAgICAgICAgICBmaWxlc3BhdGguYXBwZW5kKG9zLnBhdGguam9pbihw
LCBvKSkKICAgIHJldHVybiAiOiIuam9pbihmaWxlc3BhdGgpCn0KCgpweXRob24gbWFwcGluZ19y
ZW5hbWVfaG9vayAoKSB7CmRlZiBtYXBwaW5nX3JlbmFtZV9ob29rKGQpOgogICAgIiIiCiAgICBS
ZXdyaXRlIHZhcmlhYmxlcyB0byBhY2NvdW50IGZvciBwYWNrYWdlIHJlbmFtaW5nIGluIHRoaW5n
cwogICAgbGlrZSBkZWJpYW4uYmJjbGFzcyBvciBtYW51YWwgUEtHIHZhcmlhYmxlIG5hbWUgY2hh
bmdlcwogICAgIiIiCiAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSREVQRU5EUyIsIGQpCiAg
ICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSUkVDT01NRU5EUyIsIGQpCiAgICBydW50aW1lX21h
cHBpbmdfcmVuYW1lKCJSU1VHR0VTVFMiLCBkKQogICAgcnVudGltZV9tYXBwaW5nX3JlbmFtZSgi
UlBST1ZJREVTIiwgZCkKICAgIHJ1bnRpbWVfbWFwcGluZ19yZW5hbWUoIlJSRVBMQUNFUyIsIGQp
CiAgICBydW50aW1lX21hcHBpbmdfcmVuYW1lKCJSQ09ORkxJQ1RTIiwgZCkKfQoKCnB5dGhvbiBj
aGVja19zdXBwb3J0ZWRfZGlzdHJvICgpIHsKZGVmIGNoZWNrX3N1cHBvcnRlZF9kaXN0cm8oc2Fu
aXR5X2RhdGEpOgogICAgdGVzdGVkX2Rpc3Ryb3MgPSBzYW5pdHlfZGF0YS5nZXRWYXIoJ1NBTklU
WV9URVNURURfRElTVFJPUycsIFRydWUpCiAgICBpZiBub3QgdGVzdGVkX2Rpc3Ryb3M6CiAgICAg
ICAgcmV0dXJuCgogICAgaWYgb3MucGF0aC5leGlzdHMoIi9ldGMvcmVkaGF0LXJlbGVhc2UiKToK
ICAgICAgICBmID0gb3BlbigiL2V0Yy9yZWRoYXQtcmVsZWFzZSIsICJyIikKICAgICAgICB0cnk6
CiAgICAgICAgICAgIGRpc3RybyA9IGYucmVhZGxpbmUoKS5zdHJpcCgpCiAgICAgICAgZmluYWxs
eToKICAgICAgICAgICAgZi5jbG9zZSgpCiAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCIvZXRjL1N1
U0UtcmVsZWFzZSIpOgogICAgICAgIGltcG9ydCByZQogICAgICAgIGYgPSBvcGVuKCIvZXRjL1N1
U0UtcmVsZWFzZSIsICJyIikKICAgICAgICB0cnk6CiAgICAgICAgICAgIGRpc3RybyA9IGYucmVh
ZGxpbmUoKQogICAgICAgICAgICAjIFJlbW92ZSB0aGUgYXJjaGl0ZWN0dXJlIHN1ZmZpeCBlLmcu
IChpNTg2KQogICAgICAgICAgICBkaXN0cm8gPSByZS5zdWIocicgXChbYS16QS1aMC05XC1fXSpc
KSQnLCAnJywgZGlzdHJvKS5zdHJpcCgpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgZi5j
bG9zZSgpCiAgICBlbHNlOgogICAgICAgICMgVXNlIExTQiBtZXRob2QKICAgICAgICBpbXBvcnQg
c3VicHJvY2VzcyBhcyBzdWIKICAgICAgICB0cnk6CiAgICAgICAgICAgIHAgPSBzdWIuUG9wZW4o
Wydsc2JfcmVsZWFzZScsJy1kJywnLXMnXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBF
KQogICAgICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICAgICBkaXN0
cm8gPSBvdXQucnN0cmlwKCkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBk
aXN0cm8gPSBOb25lCgogICAgICAgIGlmIG5vdCBkaXN0cm86CiAgICAgICAgICAgIGlmIG9zLnBh
dGguZXhpc3RzKCIvZXRjL2xzYi1yZWxlYXNlIik6CiAgICAgICAgICAgICAgICBmID0gb3Blbigi
L2V0Yy9sc2ItcmVsZWFzZSIsICJyIikKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgICAgICAgICBsbnMgPSBsaW5l
LnNwbGl0KCc9JykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG5zWzBdID09ICJESVNUUklC
X0RFU0NSSVBUSU9OIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RybyA9IGxuc1sx
XS5zdHJpcCgnIlxuJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgaWYgZGlz
dHJvOgogICAgICAgIGlmIGRpc3RybyBub3QgaW4gW3guc3RyaXAoKSBmb3IgeCBpbiB0ZXN0ZWRf
ZGlzdHJvcy5zcGxpdCgnXFxuJyldOgogICAgICAgICAgICBiYi53YXJuKCdIb3N0IGRpc3RyaWJ1
dGlvbiAiJXMiIGhhcyBub3QgYmVlbiB2YWxpZGF0ZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgdGhl
IGJ1aWxkIHN5c3RlbTsgeW91IG1heSBwb3NzaWJseSBleHBlcmllbmNlIHVuZXhwZWN0ZWQgZmFp
bHVyZXMuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBhIHRlc3RlZCBkaXN0cmlidXRp
b24uJyAlIGRpc3RybykKICAgIGVsc2U6CiAgICAgICAgYmIud2FybignSG9zdCBkaXN0cmlidXRp
b24gY291bGQgbm90IGJlIGRldGVybWluZWQ7IHlvdSBtYXkgcG9zc2libHkgZXhwZXJpZW5jZSB1
bmV4cGVjdGVkIGZhaWx1cmVzLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgYSB0ZXN0
ZWQgZGlzdHJpYnV0aW9uLicpCn0KCgpweXRob24gZW1pdF9wa2dkYXRhICgpIHsKICAgIGZyb20g
Z2xvYiBpbXBvcnQgZ2xvYgoKICAgIGRlZiB3cml0ZV9pZl9leGlzdHMoZiwgcGtnLCB2YXIpOgog
ICAgICAgIGRlZiBlbmNvZGUoc3RyKToKICAgICAgICAgICAgaW1wb3J0IGNvZGVjcwogICAgICAg
ICAgICBjID0gY29kZWNzLmdldGVuY29kZXIoInN0cmluZ19lc2NhcGUiKQogICAgICAgICAgICBy
ZXR1cm4gYyhzdHIpWzBdCgogICAgICAgIHZhbCA9IGQuZ2V0VmFyKCclc18lcycgJSAodmFyLCBw
a2cpLCBUcnVlKQogICAgICAgIGlmIHZhbDoKICAgICAgICAgICAgZi53cml0ZSgnJXNfJXM6ICVz
XG4nICUgKHZhciwgcGtnLCBlbmNvZGUodmFsKSkpCiAgICAgICAgICAgIHJldHVybgogICAgICAg
IHZhbCA9IGQuZ2V0VmFyKCclcycgJSAodmFyKSwgVHJ1ZSkKICAgICAgICBpZiB2YWw6CiAgICAg
ICAgICAgIGYud3JpdGUoJyVzOiAlc1xuJyAlICh2YXIsIGVuY29kZSh2YWwpKSkKICAgICAgICBy
ZXR1cm4KCiAgICBkZWYgZ2V0X2RpcmVjdG9yeV9zaXplKGRpcik6CiAgICAgICAgaWYgb3MubGlz
dGRpcihkaXIpOgogICAgICAgICAgICBzaXplID0gaW50KG9zLnBvcGVuKCdkdSAtc2sgJXMnICUg
ZGlyKS5yZWFkbGluZXMoKVswXS5zcGxpdCgnXHQnKVswXSkKICAgICAgICBlbHNlOgogICAgICAg
ICAgICBzaXplID0gMAogICAgICAgIHJldHVybiBzaXplCgogICAgcGFja2FnZXMgPSBkLmdldFZh
cignUEFDS0FHRVMnLCBUcnVlKQogICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJywgVHJ1
ZSkKICAgIHBrZ2RhdGFkaXIgPSBkLmdldFZhcignUEtHREVTVFdPUksnLCBUcnVlKQoKICAgICMg
VGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCiAg
ICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGQuZXhwYW5kKCIvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9zeXNyb290cy9wYWNrYWdlLW91dHB1dC5sb2NrIiksIFRydWUpCgogICAg
ZGF0YV9maWxlID0gcGtnZGF0YWRpciArIGQuZXhwYW5kKCIvYmJsYXllcnMiICkKICAgIGYgPSBv
cGVuKGRhdGFfZmlsZSwgJ3cnKQogICAgZi53cml0ZSgiUEFDS0FHRVM6ICVzXG4iICUgcGFja2Fn
ZXMpCiAgICBmLmNsb3NlKCkKCiAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInLCBUcnVl
KQoKICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICBzdWJkYXRhX2ZpbGUg
PSBwa2dkYXRhZGlyICsgIi9ydW50aW1lLyVzIiAlIHBrZwoKICAgICAgICBzZiA9IG9wZW4oc3Vi
ZGF0YV9maWxlLCAndycpCiAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdQTicpCiAg
ICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdQVicpCiAgICAgICAgd3JpdGVfaWZfZXhp
c3RzKHNmLCBwa2csICdQUicpCiAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdQS0dW
JykKICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1BLR1InKQogICAgICAgIHdyaXRl
X2lmX2V4aXN0cyhzZiwgcGtnLCAnTElDRU5TRScpCiAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNm
LCBwa2csICdERVNDUklQVElPTicpCiAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdT
VU1NQVJZJykKICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1JERVBFTkRTJykKICAg
ICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1JQUk9WSURFUycpCiAgICAgICAgd3JpdGVf
aWZfZXhpc3RzKHNmLCBwa2csICdSUkVDT01NRU5EUycpCiAgICAgICAgd3JpdGVfaWZfZXhpc3Rz
KHNmLCBwa2csICdSU1VHR0VTVFMnKQogICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAn
UlJFUExBQ0VTJykKICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ1JDT05GTElDVFMn
KQogICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnU0VDVElPTicpCiAgICAgICAgd3Jp
dGVfaWZfZXhpc3RzKHNmLCBwa2csICdQS0cnKQogICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwg
cGtnLCAnQUxMT1dfRU1QVFknKQogICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnRklM
RVMnKQogICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAncGtnX3Bvc3RpbnN0JykKICAg
ICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wb3N0cm0nKQogICAgICAgIHdyaXRl
X2lmX2V4aXN0cyhzZiwgcGtnLCAncGtnX3ByZWluc3QnKQogICAgICAgIHdyaXRlX2lmX2V4aXN0
cyhzZiwgcGtnLCAncGtnX3ByZXJtJykKICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywg
J0ZJTEVSUFJPVklERVNGTElTVCcpCiAgICAgICAgZm9yIGRmaWxlIGluIChkLmdldFZhcignRklM
RVJQUk9WSURFU0ZMSVNUXycgKyBwa2csIFRydWUpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAg
ICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ0ZJTEVSUFJPVklERVNfJyArIGRmaWxlKQoKICAg
ICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ0ZJTEVSREVQRU5EU0ZMSVNUJykKICAgICAg
ICBmb3IgZGZpbGUgaW4gKGQuZ2V0VmFyKCdGSUxFUkRFUEVORFNGTElTVF8nICsgcGtnLCBUcnVl
KSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdG
SUxFUkRFUEVORFNfJyArIGRmaWxlKQoKICAgICAgICBzZi53cml0ZSgnJXNfJXM6ICVzXG4nICUg
KCdQS0dTSVpFJywgcGtnLCBnZXRfZGlyZWN0b3J5X3NpemUocGtnZGVzdCArICIvJXMiICUgcGtn
KSkpCiAgICAgICAgc2YuY2xvc2UoKQoKICAgICAgICAjIFN5bWxpbmtzIG5lZWRlZCBmb3IgcmV2
ZXJzZSBsb29rdXBzIChmcm9tIHRoZSBmaW5hbCBwYWNrYWdlIG5hbWUpCiAgICAgICAgcGtndmFs
ID0gZC5nZXRWYXIoJ1BLR18lcycgJSAocGtnKSwgVHJ1ZSkKICAgICAgICBzdWJkYXRhX3N5bSA9
IHBrZ2RhdGFkaXIgKyAiL3J1bnRpbWUtcmV2ZXJzZS8lcyIgJSBwa2d2YWwKICAgICAgICBvZS5w
YXRoLnN5bWxpbmsoIi4uL3J1bnRpbWUvJXMiICUgcGtnLCBzdWJkYXRhX3N5bSwgVHJ1ZSkKCiAg
ICAgICAgYWxsb3dfZW1wdHkgPSBkLmdldFZhcignQUxMT1dfRU1QVFlfJXMnICUgcGtnLCBUcnVl
KQogICAgICAgIGlmIG5vdCBhbGxvd19lbXB0eToKICAgICAgICAgICAgYWxsb3dfZW1wdHkgPSBk
LmdldFZhcignQUxMT1dfRU1QVFknLCBUcnVlKQogICAgICAgIHJvb3QgPSAiJXMvJXMiICUgKHBr
Z2Rlc3QsIHBrZykKICAgICAgICBvcy5jaGRpcihyb290KQogICAgICAgIGcgPSBnbG9iKCcqJykK
ICAgICAgICBpZiBnIG9yIGFsbG93X2VtcHR5ID09ICIxIjoKICAgICAgICAgICAgcGFja2FnZWRm
aWxlID0gcGtnZGF0YWRpciArICcvcnVudGltZS8lcy5wYWNrYWdlZCcgJSBwa2cKICAgICAgICAg
ICAgZmlsZShwYWNrYWdlZGZpbGUsICd3JykuY2xvc2UoKQoKICAgIGJiLnV0aWxzLnVubG9ja2Zp
bGUobGYpCn0KCgpweXRob24gYmFzZV9sZXNzX29yX2VxdWFsICgpIHsKZGVmIGJhc2VfbGVzc19v
cl9lcXVhbCh2YXJpYWJsZSwgY2hlY2t2YWx1ZSwgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKToK
ICAgIHJldHVybiBvZS51dGlscy5sZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0
cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCn0KCgpweXRob24gY2hlY2tfc2FuaXR5ICgpIHsKZGVm
IGNoZWNrX3Nhbml0eShzYW5pdHlfZGF0YSk6CiAgICBpbXBvcnQgc3VicHJvY2VzcwoKICAgIHRy
eToKICAgICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICBkZWYgTG9vc2VWZXJzaW9uKHYpOiBwcmludCAi
V0FSTklORzogc2FuaXR5LmJiY2xhc3MgY2FuJ3QgY29tcGFyZSB2ZXJzaW9ucyB3aXRob3V0IHB5
dGhvbi1kaXN0dXRpbHMiOyByZXR1cm4gMQogICAgaW1wb3J0IGNvbW1hbmRzCgogICAgIyBDaGVj
ayB0aGUgYml0YmFrZSB2ZXJzaW9uIG1lZXRzIG1pbmltdW0gcmVxdWlyZW1lbnRzCiAgICBtaW52
ZXJzaW9uID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdCQl9NSU5fVkVSU0lPTicsIFRydWUpCiAgICBp
ZiBub3QgbWludmVyc2lvbjoKICAgICAgICAjIEhhY2s6IEJCX01JTl9WRVJTSU9OIGhhc24ndCBi
ZWVuIHBhcnNlZCB5ZXQgc28gcmV0dXJuCiAgICAgICAgIyBhbmQgd2FpdCBmb3IgdGhlIG5leHQg
Y2FsbAogICAgICAgIHByaW50ICJGb28gJXMiICUgbWludmVyc2lvbgogICAgICAgIHJldHVybgoK
ICAgIGlmIDAgPT0gb3MuZ2V0dWlkKCk6CiAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJEbyBu
b3QgdXNlIEJpdGJha2UgYXMgcm9vdC4iLCBzYW5pdHlfZGF0YSkKCiAgICBtZXNzYWdlcyA9ICIi
CgogICAgIyBDaGVjayB0aGUgUHl0aG9uIHZlcnNpb24sIHdlIG5vdyB1c2UgUHl0aG9uIDIuNiBm
ZWF0dXJlcyBpbgogICAgIyB2YXJpb3VzIGNsYXNzZXMKICAgIGltcG9ydCBzeXMKICAgIGlmIHN5
cy5oZXh2ZXJzaW9uIDwgMHgwMjA2MDBGMDoKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsg
J1RoZSBzeXN0ZW0gcmVxdWlyZXMgYXQgbGVhc3QgUHl0aG9uIDIuNiB0byBydW4uIFBsZWFzZSB1
cGRhdGUgeW91ciBQeXRob24gaW50ZXJwcmV0ZXIuXG4nCgogICAgaWYgKExvb3NlVmVyc2lvbihi
Yi5fX3ZlcnNpb25fXykgPCBMb29zZVZlcnNpb24obWludmVyc2lvbikpOgogICAgICAgIG1lc3Nh
Z2VzID0gbWVzc2FnZXMgKyAnQml0YmFrZSB2ZXJzaW9uICVzIGlzIHJlcXVpcmVkIGFuZCB2ZXJz
aW9uICVzIHdhcyBmb3VuZFxuJyAlIChtaW52ZXJzaW9uLCBiYi5fX3ZlcnNpb25fXykKCiAgICAj
IENoZWNrIHRoYXQgdGhlIE1BQ0hJTkUgaXMgdmFsaWQsIGlmIGl0IGlzIHNldAogICAgaWYgc2Fu
aXR5X2RhdGEuZ2V0VmFyKCdNQUNISU5FJywgVHJ1ZSk6CiAgICAgICAgaWYgbm90IGNoZWNrX2Nv
bmZfZXhpc3RzKCJjb25mL21hY2hpbmUvbXlxZW11YXJtLmNvbmYiLCBzYW5pdHlfZGF0YSk6CiAg
ICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHNldCBhIHZhbGlkIE1BQ0hJ
TkUgaW4geW91ciBsb2NhbC5jb25mIG9yIGVudmlyb25tZW50XG4nCiAgICAgICAgZWxzZToKICAg
ICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArIGNoZWNrX3Nhbml0eV92YWxpZG1hY2hpbmUo
c2FuaXR5X2RhdGEpCiAgICBlbHNlOgogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxl
YXNlIHNldCBhIE1BQ0hJTkUgaW4geW91ciBsb2NhbC5jb25mIG9yIGVudmlyb25tZW50XG4nCgog
ICAgIyBDaGVjayB3ZSBhcmUgdXNpbmcgYSB2YWxpZCBsYWNhbC5jb25mCiAgICBjdXJyZW50X2Nv
bmYgID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdDT05GX1ZFUlNJT04nLCBUcnVlKQogICAgY29uZl92
ZXJzaW9uID0gIHNhbml0eV9kYXRhLmdldFZhcignTE9DQUxDT05GX1ZFUlNJT04nLCBUcnVlKQoK
ICAgIGlmIGN1cnJlbnRfY29uZiAhPSBjb25mX3ZlcnNpb246CiAgICAgICAgbWVzc2FnZXMgPSBt
ZXNzYWdlcyArICJZb3VyIHZlcnNpb24gb2YgbG9jYWwuY29uZiB3YXMgZ2VuZXJhdGVkIGZyb20g
YW4gb2xkZXIgdmVyc2lvbiBvZiBsb2NhbC5jb25mLnNhbXBsZSBhbmQgdGhlcmUgaGF2ZSBiZWVu
IHVwZGF0ZXMgbWFkZSB0byB0aGlzIGZpbGUuIFBsZWFzZSBjb21wYXJlIHRoZSB0d28gZmlsZXMg
YW5kIG1lcmdlIGFueSBjaGFuZ2VzIGJlZm9yZSBjb250aW51aW5nLlxuTWF0Y2hpbmcgdGhlIHZl
cnNpb24gbnVtYmVycyB3aWxsIHJlbW92ZSB0aGlzIG1lc3NhZ2UuXG5cIm1lbGQgY29uZi9sb2Nh
bC5jb25mIGNvbmYvbG9jYWwuY29uZi5zYW1wbGVcIiBpcyBhIGdvb2Qgd2F5IHRvIHZpc3VhbGlz
ZSB0aGUgY2hhbmdlcy5cbiIKCiAgICAjIENoZWNrIGJibGF5ZXJzLmNvbmYgaXMgdmFsaWQKICAg
IGN1cnJlbnRfbGNvbmYgPSBzYW5pdHlfZGF0YS5nZXRWYXIoJ0xDT05GX1ZFUlNJT04nLCBUcnVl
KQogICAgbGNvbmZfdmVyc2lvbiA9IHNhbml0eV9kYXRhLmdldFZhcignTEFZRVJfQ09ORl9WRVJT
SU9OJywgVHJ1ZSkKICAgIGlmIGN1cnJlbnRfbGNvbmYgIT0gbGNvbmZfdmVyc2lvbjoKICAgICAg
ICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIllvdXIgdmVyc2lvbiBvZiBiYmxheWVycy5jb25mIHdh
cyBnZW5lcmF0ZWQgZnJvbSBhbiBvbGRlciB2ZXJzaW9uIG9mIGJibGF5ZXJzLmNvbmYuc2FtcGxl
IGFuZCB0aGVyZSBoYXZlIGJlZW4gdXBkYXRlcyBtYWRlIHRvIHRoaXMgZmlsZS4gUGxlYXNlIGNv
bXBhcmUgdGhlIHR3byBmaWxlcyBhbmQgbWVyZ2UgYW55IGNoYW5nZXMgYmVmb3JlIGNvbnRpbnVp
bmcuXG5NYXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIHdpbGwgcmVtb3ZlIHRoaXMgbWVzc2Fn
ZS5cblwibWVsZCBjb25mL2JibGF5ZXJzLmNvbmYgY29uZi9iYmxheWVycy5jb25mLnNhbXBsZVwi
IGlzIGEgZ29vZCB3YXkgdG8gdmlzdWFsaXNlIHRoZSBjaGFuZ2VzLlxuIgoKICAgICMgSWYgd2Ug
aGF2ZSBhIHNpdGUuY29uZiwgY2hlY2sgaXQncyB2YWxpZAogICAgaWYgY2hlY2tfY29uZl9leGlz
dHMoImNvbmYvc2l0ZS5jb25mIiwgc2FuaXR5X2RhdGEpOgogICAgICAgIGN1cnJlbnRfc2NvbmYg
PSBzYW5pdHlfZGF0YS5nZXRWYXIoJ1NDT05GX1ZFUlNJT04nLCBUcnVlKQogICAgICAgIHNjb25m
X3ZlcnNpb24gPSBzYW5pdHlfZGF0YS5nZXRWYXIoJ1NJVEVfQ09ORl9WRVJTSU9OJywgVHJ1ZSkK
ICAgICAgICBpZiBjdXJyZW50X3Njb25mICE9IHNjb25mX3ZlcnNpb246CiAgICAgICAgICAgIG1l
c3NhZ2VzID0gbWVzc2FnZXMgKyAiWW91ciB2ZXJzaW9uIG9mIHNpdGUuY29uZiB3YXMgZ2VuZXJh
dGVkIGZyb20gYW4gb2xkZXIgdmVyc2lvbiBvZiBzaXRlLmNvbmYuc2FtcGxlIGFuZCB0aGVyZSBo
YXZlIGJlZW4gdXBkYXRlcyBtYWRlIHRvIHRoaXMgZmlsZS4gUGxlYXNlIGNvbXBhcmUgdGhlIHR3
byBmaWxlcyBhbmQgbWVyZ2UgYW55IGNoYW5nZXMgYmVmb3JlIGNvbnRpbnVpbmcuXG5NYXRjaGlu
ZyB0aGUgdmVyc2lvbiBudW1iZXJzIHdpbGwgcmVtb3ZlIHRoaXMgbWVzc2FnZS5cblwibWVsZCBj
b25mL3NpdGUuY29uZiBjb25mL3NpdGUuY29uZi5zYW1wbGVcIiBpcyBhIGdvb2Qgd2F5IHRvIHZp
c3VhbGlzZSB0aGUgY2hhbmdlcy5cbiIKCiAgICBhc3N1bWVfcHJvdmlkZWQgPSBzYW5pdHlfZGF0
YS5nZXRWYXIoJ0FTU1VNRV9QUk9WSURFRCcsIFRydWUpLnNwbGl0KCkKICAgICMgQ2hlY2sgdXNl
ciBkb2Vzbid0IGhhdmUgQVNTVU1FX1BST1ZJREVEID0gaW5zdGVhZCBvZiArPSBpbiBsb2NhbC5j
b25mCiAgICBpZiAiZGlmZnN0YXQtbmF0aXZlIiBub3QgaW4gYXNzdW1lX3Byb3ZpZGVkOgogICAg
ICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAnUGxlYXNlIHVzZSBBU1NVTUVfUFJPVklERUQgKz0s
IG5vdCBBU1NVTUVfUFJPVklERUQgPSBpbiB5b3VyIGxvY2FsLmNvbmZcbicKCiAgICAjIENoZWNr
IHRoYXQgRExfRElSIGlzIHNldCwgZXhpc3RzIGFuZCBpcyB3cml0YWJsZS4gSW4gdGhlb3J5LCB3
ZSBzaG91bGQgbmV2ZXIgZXZlbiBoaXQgdGhlIGNoZWNrIGlmIERMX0RJUiBpc24ndAogICAgIyBz
ZXQsIHNpbmNlIHNvIG11Y2ggcmVsaWVzIG9uIGl0IGJlaW5nIHNldC4KICAgIGRsZGlyID0gc2Fu
aXR5X2RhdGEuZ2V0VmFyKCdETF9ESVInLCBUcnVlKQogICAgaWYgbm90IGRsZGlyOgogICAgICAg
IG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiRExfRElSIGlzIG5vdCBzZXQuIFlvdXIgZW52aXJvbm1l
bnQgaXMgbWlzY29uZmlndXJlZCwgY2hlY2sgdGhhdCBETF9ESVIgaXMgc2V0LCBhbmQgaWYgdGhl
IGRpcmVjdG9yeSBleGlzdHMsIHRoYXQgaXQgaXMgd3JpdGFibGUuIFxuIgogICAgaWYgb3MucGF0
aC5leGlzdHMoZGxkaXIpIGFuZCBub3Qgb3MuYWNjZXNzKGRsZGlyLCBvcy5XX09LKToKICAgICAg
ICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIkRMX0RJUjogJXMgZXhpc3RzIGJ1dCB5b3UgZG8gbm90
IGFwcGVhciB0byBoYXZlIHdyaXRlIGFjY2VzcyB0byBpdC4gXG4iICUgZGxkaXIKCiAgICAjIENo
ZWNrIHRoYXQgdGhlIERJU1RSTyBpcyB2YWxpZCwgaWYgc2V0CiAgICAjIG5lZWQgdG8gdGFrZSBp
bnRvIGFjY291bnQgRElTVFJPIHJlbmFtaW5nIERJU1RSTwogICAgZGlzdHJvID0gc2FuaXR5X2Rh
dGEuZ2V0VmFyKCdESVNUUk8nLCBUcnVlKQogICAgaWYgZGlzdHJvOgogICAgICAgIGlmIG5vdCAo
IGNoZWNrX2NvbmZfZXhpc3RzKCJjb25mL2Rpc3Ryby9wb2t5LmNvbmYiLCBzYW5pdHlfZGF0YSkg
b3IgY2hlY2tfY29uZl9leGlzdHMoImNvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS5pbmMiLCBzYW5p
dHlfZGF0YSkgKToKICAgICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICJESVNUUk8gJyVz
JyBub3QgZm91bmQuIFBsZWFzZSBzZXQgYSB2YWxpZCBESVNUUk8gaW4geW91ciBsb2NhbC5jb25m
XG4iICUgc2FuaXR5X2RhdGEuZ2V0VmFyKCJESVNUUk8iLCBUcnVlICkKCiAgICBtaXNzaW5nID0g
IiIKCiAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygibWFrZSIsIHNhbml0eV9kYXRhKToKICAg
ICAgICBtaXNzaW5nID0gbWlzc2luZyArICJHTlUgbWFrZSwiCgogICAgaWYgbm90IGNoZWNrX2Fw
cF9leGlzdHMoJ2djYycsIHNhbml0eV9kYXRhKToKICAgICAgICBtaXNzaW5nID0gbWlzc2luZyAr
ICJDIENvbXBpbGVyICglc2djYyksIiAlIHNhbml0eV9kYXRhLmdldFZhcigiQlVJTERfUFJFRklY
IiwgVHJ1ZSkKCiAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygnZysrJywgc2FuaXR5X2RhdGEp
OgogICAgICAgIG1pc3NpbmcgPSBtaXNzaW5nICsgIkMrKyBDb21waWxlciAoJXNnKyspLCIgJSBz
YW5pdHlfZGF0YS5nZXRWYXIoIkJVSUxEX1BSRUZJWCIsIFRydWUpCgogICAgcmVxdWlyZWRfdXRp
bGl0aWVzID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTJywg
VHJ1ZSkKCiAgICBpZiAicWVtdS1uYXRpdmUiIGluIGFzc3VtZV9wcm92aWRlZDoKICAgICAgICBp
ZiBub3QgY2hlY2tfYXBwX2V4aXN0cygicWVtdS1hcm0iLCBzYW5pdHlfZGF0YSk6CiAgICAgICAg
ICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAicWVtdS1uYXRpdmUgd2FzIGluIEFTU1VNRV9QUk9W
SURFRCBidXQgdGhlIFFFTVUgYmluYXJpZXMgKHFlbXUtYXJtKSBjYW4ndCBiZSBmb3VuZCBpbiBQ
QVRIIgoKICAgIHBhdGhzID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdQQVRIJywgVHJ1ZSkuc3BsaXQo
IjoiKQogICAgaWYgIi4iIGluIHBhdGhzIG9yICIiIGluIHBhdGhzOgogICAgICAgIG1lc3NhZ2Vz
ID0gbWVzc2FnZXMgKyAiUEFUSCBjb250YWlucyAnLicgb3IgJycgKGVtcHR5IGVsZW1lbnQpLCB3
aGljaCB3aWxsIGJyZWFrIHRoZSBidWlsZCwgcGxlYXNlIHJlbW92ZSB0aGlzLlxuIgogICAgICAg
IG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiUGFyc2VkIFBBVEggaXMgIiArIHN0cihwYXRocykgKyAi
XG4iCgogICAgYmJwYXRocyA9IHNhbml0eV9kYXRhLmdldFZhcignQkJQQVRIJywgVHJ1ZSkuc3Bs
aXQoIjoiKQogICAgaWYgIi4iIGluIGJicGF0aHMgb3IgIiIgaW4gYmJwYXRoczoKICAgICAgICAj
IFRPRE86IGNoYW5nZSB0aGUgZm9sbG93aW5nIG1lc3NhZ2UgdG8gZmF0YWwgd2hlbiBhbGwgQkJQ
QVRIIGlzc3VlcwogICAgICAgICMgYXJlIGZpeGVkCiAgICAgICAgYmIud2FybigiQkJQQVRIIHJl
ZmVyZW5jZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBlaXRoZXIgdGhyb3VnaCAiICAgIFwKICAg
ICAgICAgICAgICAgICJhbiBlbXB0eSBlbnRyeSwgb3IgYSAnLicuXG5cdCBUaGlzIGlzIHVuc2Fm
ZSBhbmQgbWVhbnMgeW91ciAiXAogICAgICAgICAgICAgICAgImxheWVyIGNvbmZpZ3VyYXRpb24g
aXMgYWRkaW5nIGVtcHR5IGVsZW1lbnRzIHRvIEJCUEFUSC5cblx0ICJcCiAgICAgICAgICAgICAg
ICAiUGxlYXNlIGNoZWNrIHlvdXIgbGF5ZXIuY29uZiBmaWxlcyBhbmQgb3RoZXIgQkJQQVRIICIg
ICAgICAgIFwKICAgICAgICAgICAgICAgICJzZXR0aW5ncyB0byByZW1vdmUgdGhlIGN1cnJlbnQg
d29ya2luZyBkaXJlY3RvcnkgIiAgICAgICAgICAgXAogICAgICAgICAgICAgICAgInJlZmVyZW5j
ZXMuIik7CiAgICAgICAgYmIud2FybigiUGFyc2VkIEJCUEFUSCBpcyIgKyBzdHIoYmJwYXRocykp
OwoKICAgIGlmIHNhbml0eV9kYXRhLmdldFZhcignVEFSR0VUX0FSQ0gnLCBUcnVlKSA9PSAiYXJt
IjoKICAgICAgICAjIFRoaXMgcGF0aCBpcyBubyBsb25nZXIgdXNlci1yZWFkYWJsZSBpbiBtb2Rl
cm4gKHZlcnkgcmVjZW50KSBMaW51eAogICAgICAgIHRyeToKICAgICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoIi9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIik6CiAgICAgICAgICAgICAgICBm
ID0gb3BlbigiL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIiLCAiciIpCiAgICAgICAgICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAgICAgICAgaWYgKGludChmLnJlYWQoKS5zdHJpcCgpKSA+IDY1
NTM2KToKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICIvcHJv
Yy9zeXMvdm0vbW1hcF9taW5fYWRkciBpcyBub3QgPD0gNjU1MzYuIFRoaXMgd2lsbCBjYXVzZSBw
cm9ibGVtcyB3aXRoIHFlbXUgc28gcGxlYXNlIGZpeCB0aGUgdmFsdWUgKGFzIHJvb3QpLlxuXG5U
byBmaXggdGhpcyBpbiBsYXRlciByZWJvb3RzLCBzZXQgdm0ubW1hcF9taW5fYWRkciA9IDY1NTM2
IGluIC9ldGMvc3lzY3RsLmNvbmYuXG4iCiAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAg
ICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgcGFzcwoK
ICAgIGZvciB1dGlsIGluIHJlcXVpcmVkX3V0aWxpdGllcy5zcGxpdCgpOgogICAgICAgIGlmIG5v
dCBjaGVja19hcHBfZXhpc3RzKCB1dGlsLCBzYW5pdHlfZGF0YSApOgogICAgICAgICAgICBtaXNz
aW5nID0gbWlzc2luZyArICIlcywiICUgdXRpbAoKICAgIGlmIG1pc3NpbmcgIT0gIiI6CiAgICAg
ICAgbWlzc2luZyA9IG1pc3NpbmcucnN0cmlwKCcsJykKICAgICAgICBtZXNzYWdlcyA9IG1lc3Nh
Z2VzICsgIlBsZWFzZSBpbnN0YWxsIHRoZSBmb2xsb3dpbmcgbWlzc2luZyB1dGlsaXRpZXM6ICVz
XG4iICUgbWlzc2luZwoKICAgIHBzZXVkb19tc2cgPSBjaGVja19wc2V1ZG9fd3JhcHBlcigpCiAg
ICBpZiBwc2V1ZG9fbXNnICE9ICIiOgogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyBwc2V1
ZG9fbXNnICsgJ1xuJwoKICAgIGNoZWNrX3N1cHBvcnRlZF9kaXN0cm8oc2FuaXR5X2RhdGEpCiAg
ICB0b29sY2hhaW5fbXNnID0gY2hlY2tfdG9vbGNoYWluKHNhbml0eV9kYXRhKQogICAgaWYgdG9v
bGNoYWluX21zZyAhPSAiIjoKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgdG9vbGNoYWlu
X21zZyArICdcbicKCiAgICAjIENoZWNrIGlmIERJU1BMQVkgaXMgc2V0IGlmIElNQUdFVEVTVCBp
cyBzZXQKICAgIGlmIG5vdCBzYW5pdHlfZGF0YS5nZXRWYXIoICdESVNQTEFZJywgVHJ1ZSApIGFu
ZCBzYW5pdHlfZGF0YS5nZXRWYXIoICdJTUFHRVRFU1QnLCBUcnVlICkgPT0gJ3FlbXUnOgogICAg
ICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAncWVtdWltYWdldGVzdCBuZWVkcyBhIFggZGVza3Rv
cCB0byBzdGFydCBxZW11LCBwbGVhc2Ugc2V0IERJU1BMQVkgY29ycmVjdGx5IChlLmcuIERJU1BM
QVk9OjEuMClcbicKCiAgICBvbWFzayA9IG9zLnVtYXNrKDAyMikKICAgIGlmIG9tYXNrICYgMDc1
NToKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIlBsZWFzZSB1c2UgYSB1bWFzayB3aGlj
aCBhbGxvd3MgYStyeCBhbmQgdStyd3hcbiIKICAgIG9zLnVtYXNrKG9tYXNrKQoKICAgIG9lc19i
Yl9jb25mID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCAnT0VTX0JJVEJBS0VfQ09ORicsIFRydWUpCiAg
ICBpZiBub3Qgb2VzX2JiX2NvbmY6CiAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICdZb3Ug
ZG8gbm90IGluY2x1ZGUgdGhlIE9wZW5FbWJlZGRlZCB2ZXJzaW9uIG9mIGNvbmYvYml0YmFrZS5j
b25mLiBUaGlzIG1lYW5zIHlvdXIgZW52aXJvbm1lbnQgaXMgbWlzY29uZmlndXJlZCwgaW4gcGFy
dGljdWxhciBjaGVjayBCQlBBVEguXG4nCgogICAgbm9saWJzID0gc2FuaXR5X2RhdGEuZ2V0VmFy
KCdOTzMyTElCUycsIFRydWUpCiAgICBpZiBub3Qgbm9saWJzOgogICAgICAgIGxpYjMycGF0aCA9
ICcvbGliJwogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCcvbGliNjQnKSBhbmQgKCBvcy5wYXRo
LmlzbGluaygnL2xpYjY0Jykgb3Igb3MucGF0aC5pc2xpbmsoJy9saWInKSApOgogICAgICAgICAg
IGxpYjMycGF0aCA9ICcvbGliMzInCgogICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCclcy9saWJj
LnNvLjYnICUgbGliMzJwYXRoKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKCcvdXNyL2luY2x1ZGUv
Z251L3N0dWJzLTMyLmgnKToKICAgICAgICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICJZb3Ug
aGF2ZSBhIDMyLWJpdCBsaWJjLCBidXQgbm8gMzItYml0IGhlYWRlcnMuICBZb3UgbXVzdCBpbnN0
YWxsIHRoZSAzMi1iaXQgbGliYyBoZWFkZXJzLlxuIgoKICAgIHRtcGRpciA9IHNhbml0eV9kYXRh
LmdldFZhcignVE1QRElSJywgVHJ1ZSkKICAgIHNzdGF0ZV9kaXIgPSBzYW5pdHlfZGF0YS5nZXRW
YXIoJ1NTVEFURV9ESVInLCBUcnVlKQoKICAgICMgVGhlIGxlbmd0aCBvZiB0bXBkaXIgY2FuJ3Qg
YmUgbG9uZ2VyIHRoYW4gNDEwCiAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgY2hlY2tfcGF0aF9s
ZW5ndGgodG1wZGlyLCAiVE1QRElSIiwgNDEwKQoKICAgICMgQ2hlY2sgc2F2ZWQgc2FuaXR5IGlu
Zm8KICAgIGxhc3Rfc2FuaXR5X3ZlcnNpb24gPSAwCiAgICBsYXN0X3RtcGRpciA9ICIiCiAgICBs
YXN0X3NzdGF0ZV9kaXIgPSAiIgogICAgc2FuaXR5dmVyZmlsZSA9ICdjb25mL3Nhbml0eV9pbmZv
JwogICAgaWYgb3MucGF0aC5leGlzdHMoc2FuaXR5dmVyZmlsZSk6CiAgICAgICAgZiA9IGZpbGUo
c2FuaXR5dmVyZmlsZSwgJ3InKQogICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgIGlm
IGxpbmUuc3RhcnRzd2l0aCgnU0FOSVRZX1ZFUlNJT04nKToKICAgICAgICAgICAgICAgIGxhc3Rf
c2FuaXR5X3ZlcnNpb24gPSBpbnQobGluZS5zcGxpdCgpWzFdKQogICAgICAgICAgICBpZiBsaW5l
LnN0YXJ0c3dpdGgoJ1RNUERJUicpOgogICAgICAgICAgICAgICAgbGFzdF90bXBkaXIgPSBsaW5l
LnNwbGl0KClbMV0KICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdTU1RBVEVfRElSJyk6
CiAgICAgICAgICAgICAgICBsYXN0X3NzdGF0ZV9kaXIgPSBsaW5lLnNwbGl0KClbMV0KCiAgICBz
YW5pdHlfdmVyc2lvbiA9IGludChzYW5pdHlfZGF0YS5nZXRWYXIoJ1NBTklUWV9WRVJTSU9OJywg
VHJ1ZSkgb3IgMSkKICAgIGlmIGxhc3Rfc2FuaXR5X3ZlcnNpb24gPCBzYW5pdHlfdmVyc2lvbjoK
ICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgY2hlY2tfc2FuaXR5X3ZlcnNpb25fY2hhbmdl
KHNhbml0eV9kYXRhKQogICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyBjaGVja19zYW5pdHlf
dG1wZGlyX2NoYW5nZSh0bXBkaXIsIHNhbml0eV9kYXRhKQogICAgICAgIG1lc3NhZ2VzID0gbWVz
c2FnZXMgKyBjaGVja19zYW5pdHlfc3N0YXRlX2Rpcl9jaGFuZ2Uoc3N0YXRlX2Rpciwgc2FuaXR5
X2RhdGEpCiAgICBlbHNlOgogICAgICAgIGlmIGxhc3RfdG1wZGlyICE9IHRtcGRpcjoKICAgICAg
ICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArIGNoZWNrX3Nhbml0eV90bXBkaXJfY2hhbmdlKHRt
cGRpciwgc2FuaXR5X2RhdGEpCiAgICAgICAgaWYgbGFzdF9zc3RhdGVfZGlyICE9IHNzdGF0ZV9k
aXI6CiAgICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyBjaGVja19zYW5pdHlfc3N0YXRl
X2Rpcl9jaGFuZ2Uoc3N0YXRlX2Rpciwgc2FuaXR5X2RhdGEpCgogICAgaWYgb3MucGF0aC5leGlz
dHMoImNvbmYiKSBhbmQgbm90IG1lc3NhZ2VzOgogICAgICAgIGYgPSBmaWxlKHNhbml0eXZlcmZp
bGUsICd3JykKICAgICAgICBmLndyaXRlKCJTQU5JVFlfVkVSU0lPTiAlc1xuIiAlIHNhbml0eV92
ZXJzaW9uKQogICAgICAgIGYud3JpdGUoIlRNUERJUiAlc1xuIiAlIHRtcGRpcikKICAgICAgICBm
LndyaXRlKCJTU1RBVEVfRElSICVzXG4iICUgc3N0YXRlX2RpcikKCiAgICAjCiAgICAjIENoZWNr
IHRoYXQgVE1QRElSIGhhc24ndCBjaGFuZ2VkIGxvY2F0aW9uIHNpbmNlIHRoZSBsYXN0IHRpbWUg
d2Ugd2VyZSBydW4KICAgICMKICAgIGNoZWNrZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICJz
YXZlZF90bXBkaXIiKQogICAgaWYgb3MucGF0aC5leGlzdHMoY2hlY2tmaWxlKToKICAgICAgICBm
ID0gZmlsZShjaGVja2ZpbGUsICJyIikKICAgICAgICBzYXZlZF90bXBkaXIgPSBmLnJlYWQoKS5z
dHJpcCgpCiAgICAgICAgaWYgKHNhdmVkX3RtcGRpciAhPSB0bXBkaXIpOgogICAgICAgICAgICBt
ZXNzYWdlcyA9IG1lc3NhZ2VzICsgIkVycm9yLCBUTVBESVIgaGFzIGNoYW5nZWQgbG9jYXRpb24u
IFlvdSBuZWVkIHRvIGVpdGhlciBtb3ZlIGl0IGJhY2sgdG8gJXMgb3IgcmVidWlsZFxuIiAlIHNh
dmVkX3RtcGRpcgogICAgZWxzZToKICAgICAgICBmID0gZmlsZShjaGVja2ZpbGUsICJ3IikKICAg
ICAgICBmLndyaXRlKHRtcGRpcikKICAgIGYuY2xvc2UoKQoKICAgICMKICAgICMgQ2hlY2sgdGhl
ICdBQkknIG9mIFRNUERJUgogICAgIwogICAgY3VycmVudF9hYmkgPSBzYW5pdHlfZGF0YS5nZXRW
YXIoJ09FTEFZT1VUX0FCSScsIFRydWUpCiAgICBhYmlmaWxlID0gc2FuaXR5X2RhdGEuZ2V0VmFy
KCdTQU5JVFlfQUJJRklMRScsIFRydWUpCiAgICBpZiBvcy5wYXRoLmV4aXN0cyhhYmlmaWxlKToK
ICAgICAgICBmID0gZmlsZShhYmlmaWxlLCAiciIpCiAgICAgICAgYWJpID0gZi5yZWFkKCkuc3Ry
aXAoKQogICAgICAgIGlmIG5vdCBhYmkuaXNkaWdpdCgpOgogICAgICAgICAgICBmID0gZmlsZShh
YmlmaWxlLCAidyIpCiAgICAgICAgICAgIGYud3JpdGUoY3VycmVudF9hYmkpCiAgICAgICAgZWxp
ZiBhYmkgPT0gIjIiIGFuZCBjdXJyZW50X2FiaSA9PSAiMyI6CiAgICAgICAgICAgIGJiLm5vdGUo
IkNvbnZlcnRpbmcgc3RhZ2luZyBmcm9tIGxheW91dCB2ZXJzaW9uIDIgdG8gbGF5b3V0IHZlcnNp
b24gMyIpCiAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChzYW5pdHlfZGF0YS5leHBhbmQoIm12
IC9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1wL3N0YWdpbmcgL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMiKSwgc2hlbGw9VHJ1ZSkKICAgICAgICAg
ICAgc3VicHJvY2Vzcy5jYWxsKHNhbml0eV9kYXRhLmV4cGFuZCgibG4gLXMgc3lzcm9vdHMgL2hv
bWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3RhZ2luZyIpLCBzaGVsbD1UcnVlKQog
ICAgICAgICAgICBzdWJwcm9jZXNzLmNhbGwoc2FuaXR5X2RhdGEuZXhwYW5kKCJjZCAvaG9tZS9s
c2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9zdGFtcHM7IGZvciBpIGluICovKmRvX3BvcHVs
YXRlX3N0YWdpbmc7IGRvIG5ldz1gZWNobyAkaSB8IHNlZCAtZSAncy9kb19wb3B1bGF0ZV9zdGFn
aW5nL2RvX3BvcHVsYXRlX3N5c3Jvb3QvJ2A7IG12ICRpICRuZXc7IGRvbmUiKSwgc2hlbGw9VHJ1
ZSkKICAgICAgICAgICAgZiA9IGZpbGUoYWJpZmlsZSwgInciKQogICAgICAgICAgICBmLndyaXRl
KGN1cnJlbnRfYWJpKQogICAgICAgIGVsaWYgYWJpID09ICIzIiBhbmQgY3VycmVudF9hYmkgPT0g
IjQiOgogICAgICAgICAgICBiYi5ub3RlKCJDb252ZXJ0aW5nIHN0YWdpbmcgbGF5b3V0IGZyb20g
dmVyc2lvbiAzIHRvIGxheW91dCB2ZXJzaW9uIDQiKQogICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhzYW5pdHlfZGF0YS5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQv
dG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL2FybXY1dGUtcG9reS1saW51eC1nbnVl
YWJpIikpOgogICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNhbml0eV9kYXRhLmV4cGFu
ZCgibXYgL2hvbWUvbHNlcmJhbi93b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0
LWxpbnV4L3Vzci9iaW4vYXJtdjV0ZS1wb2t5LWxpbnV4LWdudWVhYmkgL2hvbWUvbHNlcmJhbi93
b3JrL21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMvbXlxZW11YXJtL3Vzci9iaW4vY3Jvc3NzY3Jp
cHRzIiksIHNoZWxsPVRydWUpCiAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNhbGwoc2FuaXR5
X2RhdGEuZXhwYW5kKCJsbiAtcyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFzdGVyL2J1aWxkL3RtcC9z
eXNyb290cy9teXFlbXVhcm0vdXNyL2Jpbi9jcm9zc3NjcmlwdHMgL2hvbWUvbHNlcmJhbi93b3Jr
L21hc3Rlci9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vYXJtdjV0ZS1w
b2t5LWxpbnV4LWdudWVhYmkiKSwgc2hlbGw9VHJ1ZSkKCiAgICAgICAgICAgIGYgPSBmaWxlKGFi
aWZpbGUsICJ3IikKICAgICAgICAgICAgZi53cml0ZShjdXJyZW50X2FiaSkKICAgICAgICBlbGlm
IGFiaSA9PSAiNCI6CiAgICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiU3RhZ2luZyBs
YXlvdXQgaGFzIGNoYW5nZWQuIFRoZSBjcm9zcyBkaXJlY3RvcnkgaGFzIGJlZW4gZGVwcmVjYXRl
ZCBhbmQgY3Jvc3MgcGFja2FnZXMgYXJlIG5vdyBidWlsdCB1bmRlciB0aGUgbmF0aXZlIHN5c3Jv
b3QuXG5UaGlzIHJlcXVpcmVzIGEgcmVidWlsZC5cbiIKICAgICAgICBlbGlmIGFiaSA9PSAiNSIg
YW5kIGN1cnJlbnRfYWJpID09ICI2IjoKICAgICAgICAgICAgYmIubm90ZSgiQ29udmVydGluZyBz
dGFnaW5nIGxheW91dCBmcm9tIHZlcnNpb24gNSB0byBsYXlvdXQgdmVyc2lvbiA2IikKICAgICAg
ICAgICAgc3VicHJvY2Vzcy5jYWxsKHNhbml0eV9kYXRhLmV4cGFuZCgibXYgL2hvbWUvbHNlcmJh
bi93b3JrL21hc3Rlci9idWlsZC90bXAvcHN0YWdlbG9ncyAvaG9tZS9sc2VyYmFuL3dvcmsvbWFz
dGVyL2J1aWxkL3RtcC9zc3RhdGUtY29udHJvbCIpLCBzaGVsbD1UcnVlKQogICAgICAgICAgICBm
ID0gZmlsZShhYmlmaWxlLCAidyIpCiAgICAgICAgICAgIGYud3JpdGUoY3VycmVudF9hYmkpCiAg
ICAgICAgZWxpZiBhYmkgPT0gIjciIGFuZCBjdXJyZW50X2FiaSA9PSAiOCI6CiAgICAgICAgICAg
IG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiWW91ciBjb25maWd1cmF0aW9uIGlzIHVzaW5nIHN0YW1w
IGZpbGVzIGluY2x1ZGluZyB0aGUgc3N0YXRlIGhhc2ggYnV0IHlvdXIgYnVpbGQgZGlyZWN0b3J5
IHdhcyBidWlsdCB3aXRoIHN0YW1wIGZpbGVzIHRoYXQgZG8gbm90IGluY2x1ZGUgdGhpcy5cblRv
IGNvbnRpbnVlLCBlaXRoZXIgcmVidWlsZCBvciBzd2l0Y2ggYmFjayB0byB0aGUgT0VCYXNpYyBz
aWduYXR1cmUgaGFuZGxlciB3aXRoIEJCX1NJR05BVFVSRV9IQU5ETEVSID0gJ09FQmFzaWMnLlxu
IgogICAgICAgIGVsaWYgKGFiaSAhPSBjdXJyZW50X2FiaSk6CiAgICAgICAgICAgICMgQ29kZSB0
byBjb252ZXJ0IGZyb20gb25lIEFCSSB0byBhbm90aGVyIGNvdWxkIGdvIGhlcmUgaWYgcG9zc2li
bGUuCiAgICAgICAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMgKyAiRXJyb3IsIFRNUERJUiBoYXMg
Y2hhbmdlZCBpdHMgbGF5b3V0IHZlcnNpb24gbnVtYmVyICglcyB0byAlcykgYW5kIHlvdSBuZWVk
IHRvIGVpdGhlciByZWJ1aWxkLCByZXZlcnQgb3IgYWRqdXN0IGl0IGF0IHlvdXIgb3duIHJpc2su
XG4iICUgKGFiaSwgY3VycmVudF9hYmkpCiAgICBlbHNlOgogICAgICAgIGYgPSBmaWxlKGFiaWZp
bGUsICJ3IikKICAgICAgICBmLndyaXRlKGN1cnJlbnRfYWJpKQogICAgZi5jbG9zZSgpCgogICAg
b2Vyb290ID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdDT1JFQkFTRScpCiAgICBpZiBvZXJvb3QuZmlu
ZCAoJysnKSAhPSAtMToKICAgICAgICBtZXNzYWdlcyA9IG1lc3NhZ2VzICsgIkVycm9yLCB5b3Ug
aGF2ZSBhbiBpbnZhbGlkIGNoYXJhY3RlciAoKykgaW4geW91ciBDT1JFQkFTRSBkaXJlY3Rvcnkg
cGF0aC4gUGxlYXNlIG1vdmUgdGhlIGluc3RhbGxhdGlvbiB0byBhIGRpcmVjdG9yeSB3aGljaCBk
b2Vzbid0IGluY2x1ZGUgYSArLiIKICAgIGVsaWYgb2Vyb290LmZpbmQgKCcgJykgIT0gLTE6CiAg
ICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcyArICJFcnJvciwgeW91IGhhdmUgYSBzcGFjZSBpbiB5
b3VyIENPUkVCQVNFIGRpcmVjdG9yeSBwYXRoLiBQbGVhc2UgbW92ZSB0aGUgaW5zdGFsbGF0aW9u
IHRvIGEgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgaW5jbHVkZSBhIHNwYWNlLiIKCiAgICBpZiBt
ZXNzYWdlcyAhPSAiIjoKICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IobWVzc2FnZXMsIHNhbml0
eV9kYXRhKQp9CgoKcHl0aG9uIGdlbmVyYXRlX2dpdF9jb25maWcgKCkgewpkZWYgZ2VuZXJhdGVf
Z2l0X2NvbmZpZyhlKToKICAgIGlmIGUuZGF0YS5nZXRWYXIoJ0dJVF9DT1JFX0NPTkZJRycsIFRy
dWUpOgogICAgICAgIGdpdGNvbmZpZ19wYXRoID0gZS5kYXRhLmdldFZhcignR0lUX0NPTkZJRycs
IFRydWUpCiAgICAgICAgcHJveHlfY29tbWFuZCA9ICIgICAgZ2l0UHJveHkgPSAlc1xuIiAlIGUu
ZGF0YS5nZXRWYXIoJ09FX0dJVF9QUk9YWV9DT01NQU5EJywgVHJ1ZSkKCiAgICAgICAgYmIubWtk
aXJoaWVyKGUuZGF0YS5leHBhbmQoIi9ob21lL2xzZXJiYW4vd29yay9tYXN0ZXIvYnVpbGQvdG1w
L3N5c3Jvb3RzL3g4Nl82NC1saW51eC9ldGMiKSkKICAgICAgICBpZiAob3MucGF0aC5leGlzdHMo
Z2l0Y29uZmlnX3BhdGgpKToKICAgICAgICAgICAgb3MucmVtb3ZlKGdpdGNvbmZpZ19wYXRoKQoK
ICAgICAgICBmID0gb3BlbihnaXRjb25maWdfcGF0aCwgJ3cnKQogICAgICAgIGYud3JpdGUoIltj
b3JlXVxuIikKICAgICAgICBpZ25vcmVfaG9zdHMgPSBlLmRhdGEuZ2V0VmFyKCdHSVRfUFJPWFlf
SUdOT1JFJywgVHJ1ZSkuc3BsaXQoKQogICAgICAgIGZvciBpZ25vcmVfaG9zdCBpbiBpZ25vcmVf
aG9zdHM6CiAgICAgICAgICAgIGYud3JpdGUoIiAgICBnaXRQcm94eSA9IG5vbmUgZm9yICVzXG4i
ICUgaWdub3JlX2hvc3QpCiAgICAgICAgZi53cml0ZShwcm94eV9jb21tYW5kKQogICAgICAgIGYu
Y2xvc2UKfQoKCnB5dGhvbiByZXR1cm5fc3BkeCAoKSB7CmRlZiByZXR1cm5fc3BkeChkLCBsaWNl
bnNlKToKICAgICIiIgogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzcGR4IG1hcHBpbmcg
b2YgYSBsaWNlbnNlLgogICAgIiIiCiAgICBpZiBkLmdldFZhckZsYWcoJ1NQRFhMSUNFTlNFTUFQ
JywgbGljZW5zZSkgIT0gTm9uZToKICAgICAgICByZXR1cm4gbGljZW5zZQogICAgZWxzZToKICAg
ICAgICByZXR1cm4gZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGxpY2Vuc2VfdHlwZSkK
fQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>