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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>7437</bug_id>
          
          <creation_ts>2006-02-23 18:43:58 -0800</creation_ts>
          <short_desc>Move KURL from kwq to platform, make portable</short_desc>
          <delta_ts>2006-02-23 19:48:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>33832</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-23 18:43:58 -0800</bug_when>
    <thetext>KURL needs to be moved from kwq to platform and made portable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33834</commentid>
    <comment_count>1</comment_count>
      <attachid>6690</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-23 19:15:01 -0800</bug_when>
    <thetext>Created attachment 6690
make it portable</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6690</attachid>
            <date>2006-02-23 19:15:01 -0800</date>
            <delta_ts>2006-02-23 19:47:20 -0800</delta_ts>
            <desc>make it portable</desc>
            <filename>kurl-port.patch.txt</filename>
            <type>text/plain</type>
            <size>78925</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAkocmV2aXNpb24gMTI5NTIpCisrKyBraHRtbC9odG1sL2h0
bWxfaGVhZGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVk
ZSAiY3NzL2Nzc2hlbHBlci5oIgogI2luY2x1ZGUgImh0bWxuYW1lcy5oIgogCi0jaW5jbHVkZSA8
a3VybC5oPgorI2luY2x1ZGUgPEtVUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBraHRtbC9odG1sL2h0bWxfYmFzZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2h0bWwv
aHRtbF9iYXNlaW1wbC5jcHAJKHJldmlzaW9uIDEyOTUyKQorKysga2h0bWwvaHRtbC9odG1sX2Jh
c2VpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJodG1sbmFtZXMuaCIKIAotI2luY2x1ZGUgPGt1cmwuaD4K
KyNpbmNsdWRlIDxLVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBFdmVudE5hbWVzOwpJbmRleDoga2h0bWwvaHRtbC9odG1sX2RvY3VtZW50aW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2h0bWwvaHRtbC9odG1sX2RvY3VtZW50aW1wbC5jcHAJKHJldmlzaW9uIDEy
OTUyKQorKysga2h0bWwvaHRtbC9odG1sX2RvY3VtZW50aW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oIgog
I2luY2x1ZGUgImRvbTJfZXZlbnRzaW1wbC5oIgogI2luY2x1ZGUgInhtbF90b2tlbml6ZXIuaCIK
LSNpbmNsdWRlIDxrdXJsLmg+CisjaW5jbHVkZSA8S1VSTC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogCiAjaW5jbHVkZSAiZG9jdHlwZXMuY3BwIgpJbmRleDoga2h0bWwveGJsL3hibF9iaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBraHRtbC94YmwveGJsX2JpbmRpbmcuY3BwCShyZXZpc2lvbiAx
Mjk1MikKKysrIGtodG1sL3hibC94YmxfYmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKIAogI2lmbmRlZiBLSFRNTF9OT19YQkwKIAotI2luY2x1ZGUgPGt1cmwuaD4K
KyNpbmNsdWRlIDxLVVJMLmg+CiAjaW5jbHVkZSAieGJsX3Byb3RvYmluZGluZy5oIgogI2luY2x1
ZGUgInhibF9iaW5kaW5nLmgiCiAjaW5jbHVkZSAieGJsX2RvY2ltcGwuaCIKSW5kZXg6IHBsYXRm
b3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiAx
Mjk0NikKKysrIHBsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQs
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbXBvcnQgIktXUUtVUkwuaCIKKyNp
bXBvcnQgIktVUkwuaCIKIAogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgotI2ltcG9y
dCAiS1dRRm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiS1dRUmVnRXhwLmgiCiAjaW1wb3J0
ICJLV1FUZXh0Q29kZWMuaCIKICNpbXBvcnQgPGt4bWxjb3JlL1ZlY3Rvci5oPgpAQCAtMzcsOSAr
MzYsNiBAQAogdXNpbmcgc3RkOjpwYWlyOwogdXNpbmcgc3RkOjptYWtlX3BhaXI7CiAKLS8vIFRo
ZSBzaW1wbGUgQ29jb2EgY2FsbHMgdG8gTlNTdHJpbmcsIE5TVVJMIGFuZCBOU0RhdGEgY2FuJ3Qg
dGhyb3cgc28KLS8vIG5vIG5lZWQgdG8gYmxvY2sgTlNFeGNlcHRpb25zIGhlcmUuCi0KIHR5cGVk
ZWYgZW51bSB7CiAgICAgLy8gYWxwaGEgCiAgICAgU2NoZW1lRmlyc3RDaGFyID0gMSA8PCAwLApA
QCAtMjYxLDI3ICsyNTcsNiBAQCBLVVJMOjpLVVJMKGNvbnN0IFFTdHJpbmcgJnVybCkKICAgICAg
ICAgcGFyc2UodXJsLmFzY2lpKCksICZ1cmwpOwogfQogCi1LVVJMOjpLVVJMKE5TVVJMICp1cmwp
Ci17Ci0gICAgaWYgKHVybCkgewotICAgICAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxH
ZXRCeXRlcygoQ0ZVUkxSZWYpdXJsLCAwLCAwKTsKLSAgICAgICAgVmVjdG9yPGNoYXIsIDIwNDg+
IGJ1ZmZlcihieXRlc0xlbmd0aCArIDYpOyAgLy8gNSBmb3IgImZpbGU6IiwgMSBmb3IgTlVMIHRl
cm1pbmF0b3IKLSAgICAgICAgY2hhciAqYnl0ZXMgPSAmYnVmZmVyWzVdOwotICAgICAgICBDRlVS
TEdldEJ5dGVzKChDRlVSTFJlZil1cmwsIChVSW50OCAqKWJ5dGVzLCBieXRlc0xlbmd0aCk7Ci0g
ICAgICAgIGJ5dGVzW2J5dGVzTGVuZ3RoXSA9ICdcMCc7Ci0gICAgICAgIGlmIChieXRlc1swXSA9
PSAnLycpIHsKLSAgICAgICAgICAgIGJ1ZmZlclswXSA9ICdmJzsKLSAgICAgICAgICAgIGJ1ZmZl
clsxXSA9ICdpJzsKLSAgICAgICAgICAgIGJ1ZmZlclsyXSA9ICdsJzsKLSAgICAgICAgICAgIGJ1
ZmZlclszXSA9ICdlJzsKLSAgICAgICAgICAgIGJ1ZmZlcls0XSA9ICc6JzsKLSAgICAgICAgICAg
IHBhcnNlKGJ1ZmZlciwgMCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFyc2UoYnl0
ZXMsIDApOwotICAgIH0gZWxzZQotICAgICAgICBwYXJzZSgiIiwgMCk7Ci19Ci0KIEtVUkw6OktV
UkwoY29uc3QgS1VSTCAmYmFzZSwgY29uc3QgUVN0cmluZyAmcmVsYXRpdmUsIGNvbnN0IFFUZXh0
Q29kZWMgKmNvZGVjKQogewogICAgIC8vIEFsbG93IGF0IGxlc3QgYWJzb2x1dGUgVVJMcyB0byBy
ZXNvbHZlIGFnYWluc3QgYW4gZW1wdHkgVVJMLgpAQCAtNzQ5LDcgKzcyNCw3IEBAIFFTdHJpbmcg
S1VSTDo6cHJldHR5VVJMKCkgY29uc3QKIAogUVN0cmluZyBLVVJMOjpkZWNvZGVfc3RyaW5nKGNv
bnN0IFFTdHJpbmcgJnVybFN0cmluZywgY29uc3QgUVRleHRDb2RlYyAqY29kZWMpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IFFUZXh0Q29kZWMgVVRGOENvZGVjKGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7
CisgICAgc3RhdGljIGNvbnN0IFFUZXh0Q29kZWMqIFVURjhDb2RlYyA9IFFUZXh0Q29kZWM6OnV0
ZjhDb2RlYygpOwogCiAgICAgUVN0cmluZyByZXN1bHQoIiIpOwogCkBAIC03ODgsNyArNzYzLDcg
QEAgUVN0cmluZyBLVVJMOjpkZWNvZGVfc3RyaW5nKGNvbnN0IFFTdHJpbgogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRGVjb2RlIHRoZSBieXRlcyBpbnRvIFVuaWNvZGUgY2hhcmFjdGVycy4KLSAg
ICAgICAgUVN0cmluZyBkZWNvZGVkID0gKGNvZGVjID8gY29kZWMgOiAmVVRGOENvZGVjKS0+dG9V
bmljb2RlKGJ1ZmZlciwgcCAtIGJ1ZmZlcik7CisgICAgICAgIFFTdHJpbmcgZGVjb2RlZCA9IChj
b2RlYyA/IGNvZGVjIDogVVRGOENvZGVjKS0+dG9Vbmljb2RlKGJ1ZmZlciwgcCAtIGJ1ZmZlcik7
CiAgICAgICAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KQEAgLTEyNzgsMjQgKzEyNTMsNiBAQCBRU3RyaW5nIEtVUkw6OmVuY29kZV9z
dHJpbmcoY29uc3QgUVN0cmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ0ZVUkxSZWYgS1VS
TDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAotewotICAgIGNvbnN0IFVJbnQ4ICpieXRlcyA9IChjb25z
dCBVSW50OCAqKXVybFN0cmluZy5sYXRpbjEoKTsKLSAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTgg
aGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3
aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwg
LXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2Fs
IFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3Jt
ZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJ
Uywgc28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9z
ZSBjYXNlcy4KLSAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKDAsIGJ5dGVzLCB1cmxTdHJpbmcubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCwgMCwgdHJ1ZSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJlc3VsdCA9IENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgYnl0ZXMsIHVybFN0cmluZy5sZW5ndGgoKSwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIDAsIHRydWUpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLU5TVVJMICpLVVJMOjpnZXROU1VSTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEtXUUNGQXV0
b3JlbGVhc2UoY3JlYXRlQ0ZVUkwoKSk7Ci19Ci0KIHN0YXRpYyBRU3RyaW5nIGVuY29kZUhvc3Ru
YW1lKGNvbnN0IFFTdHJpbmcgJnMpCiB7CiAgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0
byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCkBAIC0xNDYyLDE2ICsxNDE5LDE2IEBAIHN0YXRp
YyBjaGFyICplbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCAKIAogICAgIGNoYXIgKnN0ckJ1ZmZl
cjsKIAotICAgIHN0YXRpYyBjb25zdCBRVGV4dENvZGVjIFVURjhDb2RlYyhrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpOworICAgIHN0YXRpYyBjb25zdCBRVGV4dENvZGVjKiBVVEY4Q29kZWMgPSBRVGV4
dENvZGVjOjp1dGY4Q29kZWMoKTsKIAotICAgIGNvbnN0IFFUZXh0Q29kZWMgKnBhdGhDb2RlYyA9
IGNvZGVjID8gY29kZWMgOiAmVVRGOENvZGVjOworICAgIGNvbnN0IFFUZXh0Q29kZWMgKnBhdGhD
b2RlYyA9IGNvZGVjID8gY29kZWMgOiBVVEY4Q29kZWM7CiAgICAgY29uc3QgUVRleHRDb2RlYyAq
b3RoZXJDb2RlYyA9IHBhdGhDb2RlYzsKICAgICAKICAgICAvLyBBbHdheXMgdXNlIFVURi04IGZv
ciBtYWlsdG8gVVJMcyBiZWNhdXNlIHRoYXQncyB3aGF0IG1haWwgYXBwbGljYXRpb25zIGV4cGVj
dC4KICAgICAvLyBBbHdheXMgdXNlIFVURi04IGZvciBwYXRocyBpbiBmaWxlIGFuZCBoZWxwIFVS
THMsIHNpbmNlIHRoZXkgYXJlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHMsCiAgICAgLy8gYW5kIGhl
bHAgY29udGVudCBpcyBvZnRlbiBkZWZpbmVkIHdpdGggdGhpcyBpbiBtaW5kLCBidXQgdXNlIG5h
dGl2ZSBlbmNvZGluZyBmb3IgdGhlCiAgICAgLy8gbm9uLXBhdGggcGFydHMgb2YgdGhlIFVSTC4K
LSAgICBpZiAoKnBhdGhDb2RlYyAhPSBVVEY4Q29kZWMpIHsKKyAgICBpZiAocGF0aENvZGVjICE9
IFVURjhDb2RlYykgewogICAgICAgICBRU3RyaW5nIHByb3RvY29sOwogICAgICAgICBpZiAocmVs
Lmxlbmd0aCgpID4gMCAmJiBpc1NjaGVtZUZpcnN0Q2hhcihyZWwuYXQoMCkubGF0aW4xKCkpKSB7
CiAgICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDE7IGkgPCByZWwubGVuZ3RoKCk7IGkrKykgewpA
QCAtMTQ5MCwxMCArMTQ0NywxMCBAQCBzdGF0aWMgY2hhciAqZW5jb2RlUmVsYXRpdmVTdHJpbmco
Y29uc3QgCiAgICAgICAgIH0KICAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbC5sb3dlcigpOwog
ICAgICAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUiIHx8IHByb3RvY29sID09ICJoZWxwIikgewot
ICAgICAgICAgICAgcGF0aENvZGVjID0gJlVURjhDb2RlYzsKKyAgICAgICAgICAgIHBhdGhDb2Rl
YyA9IFVURjhDb2RlYzsKICAgICAgICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PSAibWFpbHRvIikg
ewotICAgICAgICAgICAgcGF0aENvZGVjID0gJlVURjhDb2RlYzsKLSAgICAgICAgICAgIG90aGVy
Q29kZWMgPSAmVVRGOENvZGVjOworICAgICAgICAgICAgcGF0aENvZGVjID0gVVRGOENvZGVjOwor
ICAgICAgICAgICAgb3RoZXJDb2RlYyA9IFVURjhDb2RlYzsKICAgICAgICAgfQogICAgIH0KICAg
ICAKSW5kZXg6IHBsYXRmb3JtL21hYy9LVVJMTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tCShyZXZpc2lvbiAxMjk0NikKKysrIHBsYXRmb3JtL21hYy9LVVJMTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyNDMgKzI0LDE0IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2ltcG9ydCAiS1dRS1VSTC5oIgorI2ltcG9ydCAiS1VSTC5oIgogCiAjaW1w
b3J0IDxreG1sY29yZS9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0ICJLV1FGb3VuZGF0aW9uRXh0cmFz
LmgiCi0jaW1wb3J0ICJLV1FSZWdFeHAuaCIKLSNpbXBvcnQgIktXUVRleHRDb2RlYy5oIgogI2lt
cG9ydCA8a3htbGNvcmUvVmVjdG9yLmg+Ci0jaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+Ci0jaW1w
b3J0IDx1dGlsaXR5PgotCi11c2luZyBzdGQ6OnBhaXI7Ci11c2luZyBzdGQ6Om1ha2VfcGFpcjsK
LQotLy8gVGhlIHNpbXBsZSBDb2NvYSBjYWxscyB0byBOU1N0cmluZywgTlNVUkwgYW5kIE5TRGF0
YSBjYW4ndCB0aHJvdyBzbwotLy8gbm8gbmVlZCB0byBibG9jayBOU0V4Y2VwdGlvbnMgaGVyZS4K
LQotdHlwZWRlZiBlbnVtIHsKLSAgICAvLyBhbHBoYSAKLSAgICBTY2hlbWVGaXJzdENoYXIgPSAx
IDw8IDAsCi0KLSAgICAvLyAoIGFscGhhIHwgZGlnaXQgfCAiKyIgfCAiLSIgfCAiLiIgKQotICAg
IFNjaGVtZUNoYXIgPSAxIDw8IDEsCi0KLSAgICAvLyBtYXJrICAgICAgICA9ICItIiB8ICJfIiB8
ICIuIiB8ICIhIiB8ICJ+IiB8ICIqIiB8ICInIiB8ICIoIiB8ICIpIgotICAgIC8vIHVucmVzZXJ2
ZWQgID0gYWxwaGFudW0gfCBtYXJrCi0gICAgLy8gKCB1bnJlc2VydmVkIHwgZXNjYXBlZCB8ICI7
IiB8ICI6IiB8ICImIiB8ICI9IiB8ICIrIiB8ICIkIiB8ICIsIiApCi0gICAgVXNlckluZm9DaGFy
ID0gMSA8PCAyLAotCi0gICAgLy8gYWxudW0gfCAiLiIgfCAiLSIgfCAiJSIKLSAgICAvLyBUaGUg
YWJvdmUgaXMgd2hhdCB0aGUgc3BlY2lmaWNhdGlvbiBzYXlzLCBidXQgd2UgYXJlIGxlbmllbnQg
dG8KLSAgICAvLyBtYXRjaCBleGlzdGluZyBwcmFjdGljZSBhbmQgYWxzbyBhbGxvdzoKLSAgICAv
LyAiXyIKLSAgICBIb3N0bmFtZUNoYXIgPSAxIDw8IDMsCi0KLSAgICAvLyBoZXhkaWdpdCB8ICI6
IiB8ICIlIgotICAgIElQdjZDaGFyID0gMSA8PCA0LAotCi0gICAgLy8gIiMiIHwgIj8iIHwgIi8i
IHwgbnVsCi0gICAgUGF0aFNlZ21lbnRFbmRDaGFyID0gMSA8PCA1LAotCi0gICAgLy8gZGlnaXQg
fCAiQSIgfCAiQiIgfCAiQyIgfCAiRCIgfCAiRSIgfCAiRiIgfCAiYSIgfCAiYiIgfCAiYyIgfCAi
ZCIgfCAiZSIgfCAiZiIKLSAgICBIZXhEaWdpdENoYXIgPSAxIDw8IDYsCi0KLSAgICAvLyBub3Qg
YWxsb3dlZCBpbiBwYXRoCi0gICAgQmFkQ2hhciA9IDEgPDwgNwotCi19IFVSTENoYXJhY3RlckNs
YXNzZXM7Ci0KLXN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFC
Q0RFRiI7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXNzVGFibGVb
MjU2XSA9IHsKLSAgICAvKiAwIG51bCAqLyBQYXRoU2VnbWVudEVuZENoYXIsICAgIC8qIDEgc29o
ICovIEJhZENoYXIsCi0gICAgLyogMiBzdHggKi8gQmFkQ2hhciwgICAgLyogMyBldHggKi8gQmFk
Q2hhciwgICAgCi0gICAgLyogNCBlb3QgKi8gQmFkQ2hhciwgICAgLyogNSBlbnEgKi8gQmFkQ2hh
ciwgICAgLyogNiBhY2sgKi8gQmFkQ2hhciwgICAgLyogNyBiZWwgKi8gQmFkQ2hhciwKLSAgICAv
KiA4IGJzICovIEJhZENoYXIsICAgICAvKiA5IGh0ICovIEJhZENoYXIsICAgIC8qIDEwIG5sICov
IEJhZENoYXIsICAgIC8qIDExIHZ0ICovIEJhZENoYXIsCi0gICAgLyogMTIgbnAgKi8gQmFkQ2hh
ciwgICAgLyogMTMgY3IgKi8gQmFkQ2hhciwgICAgLyogMTQgc28gKi8gQmFkQ2hhciwgICAgLyog
MTUgc2kgKi8gQmFkQ2hhciwKLSAgICAvKiAxNiBkbGUgKi8gQmFkQ2hhciwgICAvKiAxNyBkYzEg
Ki8gQmFkQ2hhciwgICAvKiAxOCBkYzIgKi8gQmFkQ2hhciwgICAvKiAxOSBkYzMgKi8gQmFkQ2hh
ciwKLSAgICAvKiAyMCBkYzQgKi8gQmFkQ2hhciwgICAvKiAyMSBuYWsgKi8gQmFkQ2hhciwgICAv
KiAyMiBzeW4gKi8gQmFkQ2hhciwgICAvKiAyMyBldGIgKi8gQmFkQ2hhciwKLSAgICAvKiAyNCBj
YW4gKi8gQmFkQ2hhciwgICAvKiAyNSBlbSAqLyBCYWRDaGFyLCAgICAvKiAyNiBzdWIgKi8gQmFk
Q2hhciwgICAvKiAyNyBlc2MgKi8gQmFkQ2hhciwKLSAgICAvKiAyOCBmcyAqLyBCYWRDaGFyLCAg
ICAvKiAyOSBncyAqLyBCYWRDaGFyLCAgICAvKiAzMCBycyAqLyBCYWRDaGFyLCAgICAvKiAzMSB1
cyAqLyBCYWRDaGFyLAotICAgIC8qIDMyIHNwICovIEJhZENoYXIsICAgIC8qIDMzICAhICovIFVz
ZXJJbmZvQ2hhciwKLSAgICAvKiAzNCAgIiAqLyBCYWRDaGFyLCAgICAvKiAzNSAgIyAqLyBQYXRo
U2VnbWVudEVuZENoYXIgfCBCYWRDaGFyLCAgICAKLSAgICAvKiAzNiAgJCAqLyBVc2VySW5mb0No
YXIsICAgIC8qIDM3ICAlICovIFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFy
IHwgQmFkQ2hhciwKLSAgICAvKiAzOCAgJiAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDM5ICAnICov
IFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0MCAgKCAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDQxICAp
ICovIFVzZXJJbmZvQ2hhciwgICAgCi0gICAgLyogNDIgICogKi8gVXNlckluZm9DaGFyLCAgICAv
KiA0MyAgKyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyLAotICAgIC8qIDQ0ICAsICovIFVz
ZXJJbmZvQ2hhciwgICAgCi0gICAgLyogNDUgIC0gKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogNDYgIC4gKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwgICAKLSAgICAvKiA0NyAgLyAqLyBQYXRoU2VnbWVudEVuZENo
YXIsCi0gICAgLyogNDggIDAgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IEhleERpZ2l0Q2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA0OSAgMSAqLyBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSGV4RGlnaXRDaGFyIHwgSVB2NkNo
YXIsICAgIAotICAgIC8qIDUwICAyICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTEgIDMgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hhciB8IElQ
djZDaGFyLAotICAgIC8qIDUyICA0ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTMgIDUgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hhciB8IElQ
djZDaGFyLAotICAgIC8qIDU0ICA2ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTUgIDcgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hhciB8IElQ
djZDaGFyLAotICAgIC8qIDU2ICA4ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTcgIDkgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hhciB8IElQ
djZDaGFyLAotICAgIC8qIDU4ICA6ICovIFVzZXJJbmZvQ2hhciB8IElQdjZDaGFyLCAgICAvKiA1
OSAgOyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNjAgIDwgKi8gQmFkQ2hhciwgICAgLyogNjEg
ID0gKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDYyICA+ICovIEJhZENoYXIsICAgIC8qIDYzICA/
ICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENoYXIsCi0gICAgLyogNjQgIEAgKi8gMCwKLSAg
ICAvKiA2NSAgQSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyIHwgSGV4RGlnaXRDaGFyIHwgSVB2NkNoYXIsICAgIAotICAgIC8qIDY2
ICBCICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA2NyAgQyAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SGV4RGlnaXRDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjggIEQgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hh
ciB8IElQdjZDaGFyLAotICAgIC8qIDY5ICBFICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hh
ciwKLSAgICAvKiA3MCAgRiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSGV4RGlnaXRDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyog
NzEgIEcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwKLSAgICAvKiA3MiAgSCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDczICBJICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAg
LyogNzQgIEogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NSAgSyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc2ICBMICovIFNjaGVt
ZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0g
ICAgLyogNzcgIE0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3OCAgTiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc5ICBPICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
Ci0gICAgLyogODAgIFAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4MSAgUSAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDgyICBSICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogODMgIFMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NCAgVCAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg1ICBV
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsCi0gICAgLyogODYgIFYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NyAgVyAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg4
ICBYICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsIAotICAgIC8qIDg5ICBZICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogOTAgIFogKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAv
KiA5MSAgWyAqLyAwLAotICAgIC8qIDkyICBcICovIDAsICAgIC8qIDkzICBdICovIDAsCi0gICAg
LyogOTQgIF4gKi8gMCwKLSAgICAvKiA5NSAgXyAqLyBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogOTYgIGAgKi8gMCwKLSAgICAvKiA5NyAgYSAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSGV4RGlnaXRDaGFy
IHwgSVB2NkNoYXIsCi0gICAgLyogOTggIGIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERpZ2l0Q2hhciB8IElQdjZDaGFy
LCAKLSAgICAvKiA5OSAgYyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSGV4RGlnaXRDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyog
MTAwICBkICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogMTAxICBlICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIgfCBIZXhEaWdpdENoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiAxMDIgIGYgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IEhleERp
Z2l0Q2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiAxMDMgIGcgKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDQgIGgg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciwgCi0gICAgLyogMTA1ICBpICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTA2ICBqICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8q
IDEwNyAgayAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAotICAgIC8qIDEwOCAgbCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMDkgIG0gKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiAxMTAgIG4gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTExICBvICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTEyICBw
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsIAotICAgIC8qIDExMyAgcSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDExNCAgciAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAv
KiAxMTUgIHMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTYgIHQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTE3ICB1ICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
Ci0gICAgLyogMTE4ICB2ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDExOSAgdyAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEyMCAg
eCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLCAKLSAgICAvKiAxMjEgIHkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMjIgIHogKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAg
LyogMTIzICB7ICovIDAsCi0gICAgLyogMTI0ICB8ICovIDAsICAgLyogMTI1ICB9ICovIDAsICAg
LyogMTI2ICB+ICovIFVzZXJJbmZvQ2hhciwgICAvKiAxMjcgZGVsICovIEJhZENoYXIsCi0gICAg
LyogMTI4ICovIEJhZENoYXIsIC8qIDEyOSAqLyBCYWRDaGFyLCAvKiAxMzAgKi8gQmFkQ2hhciwg
LyogMTMxICovIEJhZENoYXIsCi0gICAgLyogMTMyICovIEJhZENoYXIsIC8qIDEzMyAqLyBCYWRD
aGFyLCAvKiAxMzQgKi8gQmFkQ2hhciwgLyogMTM1ICovIEJhZENoYXIsCi0gICAgLyogMTM2ICov
IEJhZENoYXIsIC8qIDEzNyAqLyBCYWRDaGFyLCAvKiAxMzggKi8gQmFkQ2hhciwgLyogMTM5ICov
IEJhZENoYXIsCi0gICAgLyogMTQwICovIEJhZENoYXIsIC8qIDE0MSAqLyBCYWRDaGFyLCAvKiAx
NDIgKi8gQmFkQ2hhciwgLyogMTQzICovIEJhZENoYXIsCi0gICAgLyogMTQ0ICovIEJhZENoYXIs
IC8qIDE0NSAqLyBCYWRDaGFyLCAvKiAxNDYgKi8gQmFkQ2hhciwgLyogMTQ3ICovIEJhZENoYXIs
Ci0gICAgLyogMTQ4ICovIEJhZENoYXIsIC8qIDE0OSAqLyBCYWRDaGFyLCAvKiAxNTAgKi8gQmFk
Q2hhciwgLyogMTUxICovIEJhZENoYXIsCi0gICAgLyogMTUyICovIEJhZENoYXIsIC8qIDE1MyAq
LyBCYWRDaGFyLCAvKiAxNTQgKi8gQmFkQ2hhciwgLyogMTU1ICovIEJhZENoYXIsCi0gICAgLyog
MTU2ICovIEJhZENoYXIsIC8qIDE1NyAqLyBCYWRDaGFyLCAvKiAxNTggKi8gQmFkQ2hhciwgLyog
MTU5ICovIEJhZENoYXIsCi0gICAgLyogMTYwICovIEJhZENoYXIsIC8qIDE2MSAqLyBCYWRDaGFy
LCAvKiAxNjIgKi8gQmFkQ2hhciwgLyogMTYzICovIEJhZENoYXIsCi0gICAgLyogMTY0ICovIEJh
ZENoYXIsIC8qIDE2NSAqLyBCYWRDaGFyLCAvKiAxNjYgKi8gQmFkQ2hhciwgLyogMTY3ICovIEJh
ZENoYXIsCi0gICAgLyogMTY4ICovIEJhZENoYXIsIC8qIDE2OSAqLyBCYWRDaGFyLCAvKiAxNzAg
Ki8gQmFkQ2hhciwgLyogMTcxICovIEJhZENoYXIsCi0gICAgLyogMTcyICovIEJhZENoYXIsIC8q
IDE3MyAqLyBCYWRDaGFyLCAvKiAxNzQgKi8gQmFkQ2hhciwgLyogMTc1ICovIEJhZENoYXIsCi0g
ICAgLyogMTc2ICovIEJhZENoYXIsIC8qIDE3NyAqLyBCYWRDaGFyLCAvKiAxNzggKi8gQmFkQ2hh
ciwgLyogMTc5ICovIEJhZENoYXIsCi0gICAgLyogMTgwICovIEJhZENoYXIsIC8qIDE4MSAqLyBC
YWRDaGFyLCAvKiAxODIgKi8gQmFkQ2hhciwgLyogMTgzICovIEJhZENoYXIsCi0gICAgLyogMTg0
ICovIEJhZENoYXIsIC8qIDE4NSAqLyBCYWRDaGFyLCAvKiAxODYgKi8gQmFkQ2hhciwgLyogMTg3
ICovIEJhZENoYXIsCi0gICAgLyogMTg4ICovIEJhZENoYXIsIC8qIDE4OSAqLyBCYWRDaGFyLCAv
KiAxOTAgKi8gQmFkQ2hhciwgLyogMTkxICovIEJhZENoYXIsCi0gICAgLyogMTkyICovIEJhZENo
YXIsIC8qIDE5MyAqLyBCYWRDaGFyLCAvKiAxOTQgKi8gQmFkQ2hhciwgLyogMTk1ICovIEJhZENo
YXIsCi0gICAgLyogMTk2ICovIEJhZENoYXIsIC8qIDE5NyAqLyBCYWRDaGFyLCAvKiAxOTggKi8g
QmFkQ2hhciwgLyogMTk5ICovIEJhZENoYXIsCi0gICAgLyogMjAwICovIEJhZENoYXIsIC8qIDIw
MSAqLyBCYWRDaGFyLCAvKiAyMDIgKi8gQmFkQ2hhciwgLyogMjAzICovIEJhZENoYXIsCi0gICAg
LyogMjA0ICovIEJhZENoYXIsIC8qIDIwNSAqLyBCYWRDaGFyLCAvKiAyMDYgKi8gQmFkQ2hhciwg
LyogMjA3ICovIEJhZENoYXIsCi0gICAgLyogMjA4ICovIEJhZENoYXIsIC8qIDIwOSAqLyBCYWRD
aGFyLCAvKiAyMTAgKi8gQmFkQ2hhciwgLyogMjExICovIEJhZENoYXIsCi0gICAgLyogMjEyICov
IEJhZENoYXIsIC8qIDIxMyAqLyBCYWRDaGFyLCAvKiAyMTQgKi8gQmFkQ2hhciwgLyogMjE1ICov
IEJhZENoYXIsCi0gICAgLyogMjE2ICovIEJhZENoYXIsIC8qIDIxNyAqLyBCYWRDaGFyLCAvKiAy
MTggKi8gQmFkQ2hhciwgLyogMjE5ICovIEJhZENoYXIsCi0gICAgLyogMjIwICovIEJhZENoYXIs
IC8qIDIyMSAqLyBCYWRDaGFyLCAvKiAyMjIgKi8gQmFkQ2hhciwgLyogMjIzICovIEJhZENoYXIs
Ci0gICAgLyogMjI0ICovIEJhZENoYXIsIC8qIDIyNSAqLyBCYWRDaGFyLCAvKiAyMjYgKi8gQmFk
Q2hhciwgLyogMjI3ICovIEJhZENoYXIsCi0gICAgLyogMjI4ICovIEJhZENoYXIsIC8qIDIyOSAq
LyBCYWRDaGFyLCAvKiAyMzAgKi8gQmFkQ2hhciwgLyogMjMxICovIEJhZENoYXIsCi0gICAgLyog
MjMyICovIEJhZENoYXIsIC8qIDIzMyAqLyBCYWRDaGFyLCAvKiAyMzQgKi8gQmFkQ2hhciwgLyog
MjM1ICovIEJhZENoYXIsCi0gICAgLyogMjM2ICovIEJhZENoYXIsIC8qIDIzNyAqLyBCYWRDaGFy
LCAvKiAyMzggKi8gQmFkQ2hhciwgLyogMjM5ICovIEJhZENoYXIsCi0gICAgLyogMjQwICovIEJh
ZENoYXIsIC8qIDI0MSAqLyBCYWRDaGFyLCAvKiAyNDIgKi8gQmFkQ2hhciwgLyogMjQzICovIEJh
ZENoYXIsCi0gICAgLyogMjQ0ICovIEJhZENoYXIsIC8qIDI0NSAqLyBCYWRDaGFyLCAvKiAyNDYg
Ki8gQmFkQ2hhciwgLyogMjQ3ICovIEJhZENoYXIsCi0gICAgLyogMjQ4ICovIEJhZENoYXIsIC8q
IDI0OSAqLyBCYWRDaGFyLCAvKiAyNTAgKi8gQmFkQ2hhciwgLyogMjUxICovIEJhZENoYXIsCi0g
ICAgLyogMjUyICovIEJhZENoYXIsIC8qIDI1MyAqLyBCYWRDaGFyLCAvKiAyNTQgKi8gQmFkQ2hh
ciwgLyogMjU1ICovIEJhZENoYXIKLX07Ci0KLXN0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0Rv
dHMoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCk7
Ci1zdGF0aWMgY2hhciAqZW5jb2RlUmVsYXRpdmVTdHJpbmcoY29uc3QgS1VSTCAmYmFzZSwgY29u
c3QgUVN0cmluZyAmcmVsLCBjb25zdCBRVGV4dENvZGVjICpjb2RlYyk7Ci1zdGF0aWMgUVN0cmlu
ZyBzdWJzdGl0dXRlQmFja3NsYXNoZXMoY29uc3QgUVN0cmluZyAmc3RyaW5nKTsKLQotc3RhdGlj
IGlubGluZSBib29sIGlzU2NoZW1lRmlyc3RDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4g
Y2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFNjaGVtZUZpcnN0Q2hhcjsgfQotc3RhdGljIGlubGlu
ZSBib29sIGlzU2NoZW1lQ2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNs
YXNzVGFibGVbY10gJiBTY2hlbWVDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNVc2VySW5m
b0NoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYg
VXNlckluZm9DaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNIb3N0bmFtZUNoYXIodW5zaWdu
ZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgSG9zdG5hbWVDaGFy
OyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNJUHY2Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0
dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBJUHY2Q2hhcjsgfQotc3RhdGljIGlubGluZSBi
b29sIGlzUGF0aFNlZ21lbnRFbmRDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFj
dGVyQ2xhc3NUYWJsZVtjXSAmIFBhdGhTZWdtZW50RW5kQ2hhcjsgfQotc3RhdGljIGlubGluZSBi
b29sIGlzQmFkQ2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFi
bGVbY10gJiBCYWRDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNIZXhEaWdpdCh1bnNpZ25l
ZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBIZXhEaWdpdENoYXI7
IH0KLQotc3RhdGljIGlubGluZSBpbnQgaGV4RGlnaXRWYWx1ZSh1bnNpZ25lZCBjaGFyIGMpCi17
Ci0gICAgQVNTRVJUKGlzSGV4RGlnaXQoYykpOwotICAgIGlmIChjIDwgJ0EnKQotICAgICAgICBy
ZXR1cm4gYyAtICcwJzsKLSAgICByZXR1cm4gKGMgLSAnQScgKyAxMCkgJiAweEY7IC8vIGhhbmRs
ZSBib3RoIHVwcGVyIGFuZCBsb3dlciBjYXNlIHdpdGhvdXQgYSBicmFuY2gKLX0KIAogLy8gS1VS
TAogCi1LVVJMOjpLVVJMKCkgOiBtX2lzVmFsaWQoZmFsc2UpCi17Ci19Ci0KLUtVUkw6OktVUkwo
Y29uc3QgY2hhciAqdXJsKQotewotICAgIGlmICh1cmwgJiYgdXJsWzBdID09ICcvJykgewotICAg
ICAgICAgLy8gNSBmb3IgImZpbGU6IiwgMSBmb3IgdGVybWluYXRvcgotICAgICAgICBzaXplX3Qg
dXJsTGVuZ3RoID0gc3RybGVuKHVybCkgKyAxOwotICAgICAgICBWZWN0b3I8Y2hhciwgMjA0OD4g
YnVmZmVyKHVybExlbmd0aCArIDUpOwotICAgICAgICBidWZmZXJbMF0gPSAnZic7Ci0gICAgICAg
IGJ1ZmZlclsxXSA9ICdpJzsKLSAgICAgICAgYnVmZmVyWzJdID0gJ2wnOwotICAgICAgICBidWZm
ZXJbM10gPSAnZSc7Ci0gICAgICAgIGJ1ZmZlcls0XSA9ICc6JzsKLSAgICAgICAgbWVtY3B5KCZi
dWZmZXJbNV0sIHVybCwgdXJsTGVuZ3RoKTsKLSAgICAgICAgcGFyc2UoYnVmZmVyLCAwKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgcGFyc2UodXJsLCAwKTsKLX0KLQotS1VSTDo6S1VSTChjb25zdCBR
U3RyaW5nICZ1cmwpCi17Ci0gICAgaWYgKCF1cmwuaXNFbXB0eSgpICYmIHVybFswXSA9PSAnLycp
IHsKLSAgICAgICAgLy8gNSBmb3IgImZpbGU6IiwgMSBmb3IgdGVybWluYXRvcgotICAgICAgICBW
ZWN0b3I8Y2hhciwgMjA0OD4gYnVmZmVyKHVybC5sZW5ndGgoKSArIDYpOwotICAgICAgICBidWZm
ZXJbMF0gPSAnZic7Ci0gICAgICAgIGJ1ZmZlclsxXSA9ICdpJzsKLSAgICAgICAgYnVmZmVyWzJd
ID0gJ2wnOwotICAgICAgICBidWZmZXJbM10gPSAnZSc7Ci0gICAgICAgIGJ1ZmZlcls0XSA9ICc6
JzsKLSAgICAgICAgdXJsLmNvcHlMYXRpbjEoJmJ1ZmZlcls1XSk7Ci0gICAgICAgIHBhcnNlKGJ1
ZmZlciwgMCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHBhcnNlKHVybC5hc2NpaSgpLCAmdXJsKTsK
LX0KLQogS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogewogICAgIGlmICh1cmwpIHsKQEAgLTI4Miwx
MDAyICs1Myw2IEBAIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKICAgICAgICAgcGFyc2UoIiIsIDAp
OwogfQogCi1LVVJMOjpLVVJMKGNvbnN0IEtVUkwgJmJhc2UsIGNvbnN0IFFTdHJpbmcgJnJlbGF0
aXZlLCBjb25zdCBRVGV4dENvZGVjICpjb2RlYykKLXsKLSAgICAvLyBBbGxvdyBhdCBsZXN0IGFi
c29sdXRlIFVSTHMgdG8gcmVzb2x2ZSBhZ2FpbnN0IGFuIGVtcHR5IFVSTC4KLSAgICBpZiAoIWJh
c2UubV9pc1ZhbGlkICYmICFiYXNlLmlzRW1wdHkoKSkgewotICAgICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBib29sIGFic29sdXRlID0g
ZmFsc2U7Ci0KLSAgICAvLyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbiBJRSwgd2UgbXVzdCB0
cmVhdCBiYWNrc2xhc2hlcyBhcyBpZiB0aGV5IHdlcmUgc2xhc2hlcwotICAgIFFTdHJpbmcgc3Vi
c3RpdHV0ZWRSZWxhdGl2ZTsKLSAgICBib29sIGNvbnRhaW5zQmFja3NsYXNoID0gcmVsYXRpdmUu
Y29udGFpbnMoJ1xcJyk7Ci0gICAgaWYgKGNvbnRhaW5zQmFja3NsYXNoKSB7Ci0gICAgICAgIHN1
YnN0aXR1dGVkUmVsYXRpdmUgPSBzdWJzdGl0dXRlQmFja3NsYXNoZXMocmVsYXRpdmUpOwotICAg
IH0KLQotICAgIGNvbnN0IFFTdHJpbmcgJnJlbCA9IGNvbnRhaW5zQmFja3NsYXNoID8gc3Vic3Rp
dHV0ZWRSZWxhdGl2ZSA6IHJlbGF0aXZlOwotICAgIAotICAgIGJvb2wgYWxsQVNDSUkgPSByZWwu
aXNBbGxBU0NJSSgpOwotICAgIGNoYXIgKnN0ckJ1ZmZlcjsKLSAgICBjb25zdCBjaGFyICpzdHI7
Ci0gICAgaWYgKGFsbEFTQ0lJKSB7Ci0gICAgICAgIHN0ckJ1ZmZlciA9IDA7Ci0gICAgICAgIHN0
ciA9IHJlbC5hc2NpaSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0ckJ1ZmZlciA9IGVuY29k
ZVJlbGF0aXZlU3RyaW5nKGJhc2UsIHJlbCwgY29kZWMpOwotICAgICAgICBzdHIgPSBzdHJCdWZm
ZXI7Ci0gICAgfQotICAgIAotICAgIC8vIHdvcmthcm91bmQgZm9yIHNpdGVzIHRoYXQgcHV0IGxl
YWRpbmcgd2hpdGVzcGFjZSB3aGl0ZXNwYWNlIG9uCi0gICAgLy8gVVJMIHJlZmVyZW5jZXMKLSAg
ICBib29sIHN0cmlwcGVkU3RhcnQgPSBmYWxzZTsKLSAgICB3aGlsZSAoKnN0ciA9PSAnICcpIHsK
LSAgICAgICAgc3RyKys7Ci0gICAgICAgIHN0cmlwcGVkU3RhcnQgPSB0cnVlOwotICAgIH0KLQot
ICAgIC8vIHdvcmthcm91bmQgZm9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgLSBhIGJpdCBtb3JlIGNv
bXBsaWNhdGVkIGNhdXNlIHdlIGhhdmUgdG8gY29weQotICAgIC8vIGl0IHdvdWxkIGJlIGV2ZW4g
YmV0dGVyIHRvIHJlcGxhY2UgbnVsbC10ZXJtaW5hdGlvbiB3aXRoIGEgbGVuZ3RoIHBhcmFtZXRl
cgotICAgIGludCBsZW4gPSBzdHJsZW4oc3RyKTsKLSAgICBpbnQgY2hhcnNUb0Nob3BPZmZFbmQg
PSAwOwotICAgIGZvciAoaW50IHBvcyA9IGxlbiAtIDE7IHBvcyA+PSAwICYmIHN0cltwb3NdID09
ICcgJzsgcG9zLS0pIHsKLSAgICAgICAgY2hhcnNUb0Nob3BPZmZFbmQrKzsKLSAgICB9Ci0gICAg
aWYgKGNoYXJzVG9DaG9wT2ZmRW5kID4gMCkgewotICAgICAgICBjaGFyICpuZXdTdHJCdWZmZXIg
PSAoY2hhciAqKWZhc3RNYWxsb2MoKGxlbiArIDEpIC0gY2hhcnNUb0Nob3BPZmZFbmQpOwotICAg
ICAgICBzdHJuY3B5KG5ld1N0ckJ1ZmZlciwgc3RyLCBsZW4gLSBjaGFyc1RvQ2hvcE9mZkVuZCk7
Ci0gICAgICAgIG5ld1N0ckJ1ZmZlcltsZW4gLSBjaGFyc1RvQ2hvcE9mZkVuZF0gPSAnXDAnOwot
ICAgICAgICBmYXN0RnJlZShzdHJCdWZmZXIpOwotICAgICAgICBzdHJCdWZmZXIgPSBuZXdTdHJC
dWZmZXI7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlcjsKLSAgICB9Ci0KLSAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIFJGQywgdGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYW4K
LSAgICAvLyBhYnNvbHV0ZSBVUkkgaWYgcG9zc2libGUsIHVzaW5nIHRoZSAibGVmdG1vc3QsIGxv
bmdlc3QiCi0gICAgLy8gYWxnb3JpdGhtLiBJZiB0aGUgVVJJIHJlZmVyZW5jZSBpcyBhYnNvbHV0
ZSBpdCB3aWxsIGhhdmUgYQotICAgIC8vIHNjaGVtZSwgbWVhbmluZyB0aGF0IGl0IHdpbGwgaGF2
ZSBhIGNvbG9uIGJlZm9yZSB0aGUgZmlyc3QKLSAgICAvLyBub24tc2NoZW1lIGVsZW1lbnQuCi0g
ICAgY29uc3QgY2hhciAqcCA9IHN0cjsKLSAgICBpZiAoaXNTY2hlbWVGaXJzdENoYXIoKnApKSB7
Ci0gICAgICAgICsrcDsKLSAgICAgICAgd2hpbGUgKGlzU2NoZW1lQ2hhcigqcCkpIHsKLSAgICAg
ICAgICAgICsrcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoKnAgPT0gJzonKSB7Ci0gICAgICAg
ICAgICBpZiAocFsxXSAhPSAnLycgJiYgYmFzZS5wcm90b2NvbCgpLmxvd2VyKCkgPT0gUVN0cmlu
ZyhzdHIsIHAgLSBzdHIpLmxvd2VyKCkgJiYgYmFzZS5pc0hpZXJhcmNoaWNhbCgpKQotICAgICAg
ICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGFic29sdXRlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChhYnNvbHV0ZSkg
ewotICAgICAgICBwYXJzZShzdHIsIChhbGxBU0NJSSAmJiAhc3RyaXBwZWRTdGFydCAmJiAoY2hh
cnNUb0Nob3BPZmZFbmQgPT0gMCkpID8gJnJlbCA6IDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIGlmIHRoZSBiYXNlIGlzIGludmFsaWQsIGp1c3QgYXBwZW5kIHRoZSByZWxhdGl2ZQotICAg
ICAgICAvLyBwb3J0aW9uLiBUaGUgUkZDIGRvZXMgbm90IHNwZWNpZnkgd2hhdCB0byBkbyBpbiB0
aGlzIGNhc2UuCi0gICAgICAgIGlmICghYmFzZS5tX2lzVmFsaWQpIHsKLSAgICAgICAgICAgIFFT
dHJpbmcgbmV3VVJMID0gYmFzZS51cmxTdHJpbmcgKyBzdHI7Ci0gICAgICAgICAgICBwYXJzZShu
ZXdVUkwuYXNjaWkoKSwgJm5ld1VSTCk7Ci0gICAgICAgICAgICBpZiAoc3RyQnVmZmVyKSB7Ci0g
ICAgICAgICAgICAgICAgZmFzdEZyZWUoc3RyQnVmZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaChzdHJbMF0pIHsKLSAg
ICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLy8gdGhlIHJlZmVyZW5jZSBtdXN0IGJlIGVt
cHR5IC0gdGhlIFJGQyBzYXlzIHRoaXMgaXMgYQotICAgICAgICAgICAgLy8gcmVmZXJlbmNlIHRv
IHRoZSBzYW1lIGRvY3VtZW50Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKnRoaXMg
PSBiYXNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICBj
YXNlICcjJzoKLSAgICAgICAgICAgIC8vIG11c3QgYmUgZnJhZ21lbnQtb25seSByZWZlcmVuY2UK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBRU3RyaW5nIG5ld1VSTCA9IGJhc2UudXJs
U3RyaW5nLmxlZnQoYmFzZS5xdWVyeUVuZFBvcykgKyBzdHI7Ci0gICAgICAgICAgICAgICAgcGFy
c2UobmV3VVJMLmFzY2lpKCksICZuZXdVUkwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICBjYXNlICc/JzoKLSAgICAgICAgICAgIC8vIHF1ZXJ5LW9ubHkg
cmVmZXJlbmNlLCBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBub24tVVJMIHJlc3VsdHMKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBRU3RyaW5nIG5ld1VSTCA9IGJhc2UudXJsU3RyaW5n
LmxlZnQoYmFzZS5wYXRoRW5kUG9zKSArIHN0cjsKLSAgICAgICAgICAgICAgICBwYXJzZShuZXdV
UkwuYXNjaWkoKSwgJm5ld1VSTCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgLy8gbXVzdCBiZSBuZXQtcGF0aCBv
ciBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmIChzdHJbMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5ldC1wYXRoCi0g
ICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmV3VVJMID0gYmFzZS51cmxTdHJpbmcubGVmdChi
YXNlLnNjaGVtZUVuZFBvcyArIDEpICsgc3RyOwotICAgICAgICAgICAgICAgICAgICBwYXJzZShu
ZXdVUkwuYXNjaWkoKSwgJm5ld1VSTCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gYWJzLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBu
ZXdVUkwgPSBiYXNlLnVybFN0cmluZy5sZWZ0KGJhc2UucG9ydEVuZFBvcykgKyBzdHI7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhcnNlKG5ld1VSTC5hc2NpaSgpLCAmbmV3VVJMKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gbXVzdCBiZSByZWxh
dGl2ZS1wYXRoIHJlZmVyZW5jZQotCi0gICAgICAgICAgICAgICAgLy8gQmFzZSBwYXJ0IHBsdXMg
cmVsYXRpdmUgcGFydCBwbHVzIG9uZSBwb3NzaWJsZSBzbGFzaCBhZGRlZCBpbiBiZXR3ZWVuIHBs
dXMgdGVybWluYXRpbmcgXDAgYnl0ZS4KLSAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhciwgMjA0
OD4gYnVmZmVyKGJhc2UucGF0aEVuZFBvcyArIDEgKyBzdHJsZW4oc3RyKSArIDEpOwotCi0gICAg
ICAgICAgICAgICAgY2hhciAqYnVmZmVyUG9zID0gYnVmZmVyOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIC8vIGZpcnN0IGNvcHkgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBhdGgg
ZnJvbSB0aGUgYmFzZQotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhc2VTdHJpbmcgPSBi
YXNlLnVybFN0cmluZy5hc2NpaSgpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhc2VT
dHJpbmdTdGFydCA9IGJhc2VTdHJpbmc7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0
aFN0YXJ0ID0gYmFzZVN0cmluZ1N0YXJ0ICsgYmFzZS5wb3J0RW5kUG9zOwotICAgICAgICAgICAg
ICAgIHdoaWxlIChiYXNlU3RyaW5nU3RhcnQgPCBwYXRoU3RhcnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgKmJ1ZmZlclBvcysrID0gKmJhc2VTdHJpbmdTdGFydCsrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBjaGFyICpidWZmZXJQYXRoU3RhcnQgPSBidWZmZXJQb3M7Ci0K
LSAgICAgICAgICAgICAgICAvLyBub3cgY29weSB0aGUgYmFzZSBwYXRoIAotICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmJhc2VTdHJpbmdFbmQgPSBiYXNlU3RyaW5nICsgYmFzZS5wYXRoRW5k
UG9zOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdGhl
IGxhc3Qgc2xhc2gKLSAgICAgICAgICAgICAgICB3aGlsZSAoYmFzZVN0cmluZ0VuZCA+IGJhc2VT
dHJpbmdTdGFydCAmJiBiYXNlU3RyaW5nRW5kWy0xXSAhPSAnLycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYmFzZVN0cmluZ0VuZC0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoYmFzZVN0cmluZ0VuZCA9PSBiYXNlU3RyaW5nU3RhcnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gbm8gcGF0aCBpbiBiYXNlLCBhZGQgYSBwYXRoIHNl
cGFyYXRvciBpZiBuZWNlc3NhcnkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2Uuc2NoZW1l
RW5kUG9zICsgMSAhPSBiYXNlLnBhdGhFbmRQb3MgJiYgKnN0ciAhPSAnXDAnICYmICpzdHIgIT0g
Jz8nICYmICpzdHIgIT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAqYnVmZmVyUG9z
KysgPSAnLyc7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gY29weVBhdGhSZW1vdmluZ0RvdHMo
YnVmZmVyUG9zLCBiYXNlU3RyaW5nU3RhcnQsIDAsIGJhc2VTdHJpbmdFbmQgLSBiYXNlU3RyaW5n
U3RhcnQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnJlbFN0cmluZ1N0YXJ0ID0gc3RyOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlbFN0
cmluZ1BvcyA9IHJlbFN0cmluZ1N0YXJ0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIHdoaWxlICgqcmVsU3RyaW5nUG9zICE9ICdcMCcgJiYgKnJlbFN0cmluZ1BvcyAhPSAnPycg
JiYgKnJlbFN0cmluZ1BvcyAhPSAnIycpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlbFN0
cmluZ1Bvc1swXSA9PSAnLicgJiYgYnVmZmVyUG9zWy0xXSA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMV0pKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuIiBzZWdtZW50Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zICs9IDE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlbFN0cmluZ1Bvc1swXSA9PSAnLycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWxTdHJpbmdQb3NbMV0gPT0gJy4nICYm
IGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1syXSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhlIGxh
c3Qgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBSRkMgbGVhdmVz
IGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBleGNlc3MKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAiLi4iIHNlZ21lbnRzIC0gd2UgY2hvb3NlIHRvIGRy
b3AgdGhlbSBzaW5jZSBzb21lIHdlYiBjb250ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcmVsaWVzIG9uIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3Ry
aW5nUG9zICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbFN0cmluZ1Bv
c1swXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5n
UG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChidWZmZXJQb3MgPiBidWZmZXJQYXRoU3RhcnQgKyAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcy0tOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYnVmZmVyUG9z
ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSAgJiYgYnVmZmVyUG9zWy0xXSAhPSAnLycpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zLS07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAqYnVmZmVyUG9zID0gKnJlbFN0cmluZ1Bv
czsKLSAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAg
ICAgIGJ1ZmZlclBvcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
IGFsbCBkb25lIHdpdGggdGhlIHBhdGggd29yaywgbm93IGNvcHkgYW55IHJlbWFpbmRlcgotICAg
ICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZlcmVuY2U7IHRoaXMgd2lsbCBhbHNv
IGFkZCBhIG51bGwgdGVybWluYXRvcgotICAgICAgICAgICAgICAgIHN0cmNweShidWZmZXJQb3Ms
IHJlbFN0cmluZ1Bvcyk7Ci0KLSAgICAgICAgICAgICAgICBwYXJzZShidWZmZXIsIDApOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4oYnVmZmVyKSArIDEg
PD0gYnVmZmVyLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKHN0ckJ1ZmZlcikgewotICAgICAgICBm
YXN0RnJlZShzdHJCdWZmZXIpOwotICAgIH0KLX0KLQotYm9vbCBLVVJMOjpoYXNQYXRoKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9pc1ZhbGlkICYmIHBhdGhFbmRQb3MgIT0gcG9ydEVuZFBvczsK
LX0KLQotUVN0cmluZyBLVVJMOjpwcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFs
aWQpIHsKLSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdXJs
U3RyaW5nLmxlZnQoc2NoZW1lRW5kUG9zKTsKLX0KLQotUVN0cmluZyBLVVJMOjpob3N0KCkgY29u
c3QKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkgewotICAgICAgICByZXR1cm4gUVN0cmluZygpOwot
ICAgIH0KLQotICAgIGludCBzdGFydCA9IChwYXNzd29yZEVuZFBvcyA9PSB1c2VyU3RhcnRQb3Mp
ID8gcGFzc3dvcmRFbmRQb3MgOiBwYXNzd29yZEVuZFBvcyArIDE7Ci0gICAgcmV0dXJuIGRlY29k
ZV9zdHJpbmcodXJsU3RyaW5nLm1pZChzdGFydCwgaG9zdEVuZFBvcyAtIHN0YXJ0KSk7Ci19Ci0K
LXVuc2lnbmVkIHNob3J0IGludCBLVVJMOjpwb3J0KCkgY29uc3QKLXsKLSAgICBpZiAoIW1faXNW
YWxpZCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdEVuZFBvcyAh
PSBwb3J0RW5kUG9zKSB7Ci0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0
IHJlc3VsdCA9IHVybFN0cmluZy5taWQoaG9zdEVuZFBvcyArIDEsIHBvcnRFbmRQb3MgLSBob3N0
RW5kUG9zIC0gMSkudG9VU2hvcnQoJm9rKTsKLSAgICAgICAgaWYgKCFvaykgewotICAgICAgICAg
ICAgcmVzdWx0ID0gMDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LQotICAgIHJldHVybiAwOwotfQotCi1RU3RyaW5nIEtVUkw6OnBhc3MoKSBjb25zdAotewotICAg
IGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgfQotCi0g
ICAgaWYgKHBhc3N3b3JkRW5kUG9zID09IHVzZXJFbmRQb3MpIHsKLSAgICAgICAgcmV0dXJuIFFT
dHJpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGVjb2RlX3N0cmluZyh1cmxTdHJpbmcubWlk
KHVzZXJFbmRQb3MgKyAxLCBwYXNzd29yZEVuZFBvcyAtIHVzZXJFbmRQb3MgLSAxKSk7IAotfQot
Ci1RU3RyaW5nIEtVUkw6OnVzZXIoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0g
ICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlY29kZV9zdHJp
bmcodXJsU3RyaW5nLm1pZCh1c2VyU3RhcnRQb3MsIHVzZXJFbmRQb3MgLSB1c2VyU3RhcnRQb3Mp
KTsKLX0KLQotUVN0cmluZyBLVVJMOjpyZWYoKSBjb25zdAotewotICAgIGlmICghbV9pc1ZhbGlk
IHx8IGZyYWdtZW50RW5kUG9zID09IHF1ZXJ5RW5kUG9zKSB7Ci0gICAgICAgIHJldHVybiBRU3Ry
aW5nKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHVybFN0cmluZy5taWQocXVlcnlFbmRQb3MgKyAx
LCBmcmFnbWVudEVuZFBvcyAtIChxdWVyeUVuZFBvcyArIDEpKTsKLX0KLQotYm9vbCBLVVJMOjpo
YXNSZWYoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQgJiYgZnJhZ21lbnRFbmRQb3Mg
IT0gcXVlcnlFbmRQb3M7Ci19Ci0KLVFTdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAotewotICAg
IGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHVybFN0cmluZy5taWQocGF0aEVuZFBvcywgcXVlcnlFbmRQb3MgLSBwYXRoRW5k
UG9zKTsgCi19Ci0KLVFTdHJpbmcgS1VSTDo6cGF0aCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lz
VmFsaWQpIHsKLSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
ZGVjb2RlX3N0cmluZyh1cmxTdHJpbmcubWlkKHBvcnRFbmRQb3MsIHBhdGhFbmRQb3MgLSBwb3J0
RW5kUG9zKSk7IAotfQotCi12b2lkIEtVUkw6OnNldFByb3RvY29sKGNvbnN0IFFTdHJpbmcgJnMp
Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgUVN0cmluZyBuZXdVUkwgPSBzICsg
IjoiICsgdXJsU3RyaW5nOwotICAgICAgICBwYXJzZShuZXdVUkwuYXNjaWkoKSwgJm5ld1VSTCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBRU3RyaW5nIG5ld1VSTCA9IHMgKyB1cmxT
dHJpbmcubWlkKHNjaGVtZUVuZFBvcyk7Ci0gICAgcGFyc2UobmV3VVJMLmFzY2lpKCksICZuZXdV
UkwpOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3QoY29uc3QgUVN0cmluZyAmcykKLXsKLSAgICBp
ZiAobV9pc1ZhbGlkKSB7Ci0gICAgICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IHVzZXJTdGFy
dFBvcyA9PSBzY2hlbWVFbmRQb3MgKyAxOwotICAgICAgICBpbnQgaG9zdFN0YXJ0ID0gKHBhc3N3
b3JkRW5kUG9zID09IHVzZXJTdGFydFBvcykgPyBwYXNzd29yZEVuZFBvcyA6IHBhc3N3b3JkRW5k
UG9zICsgMTsKLSAgICAgICAgCi0gICAgICAgIFFTdHJpbmcgbmV3VVJMID0gdXJsU3RyaW5nLmxl
ZnQoaG9zdFN0YXJ0KSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6IFFTdHJpbmcoKSkgKyBz
ICsgdXJsU3RyaW5nLm1pZChob3N0RW5kUG9zKTsKLSAgICAgICAgcGFyc2UobmV3VVJMLmFzY2lp
KCksICZuZXdVUkwpOwotICAgIH0KLX0KLQotdm9pZCBLVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNo
b3J0IGkpCi17Ci0gICAgaWYgKG1faXNWYWxpZCkgewotICAgICAgICBib29sIGNvbG9uTmVlZGVk
ID0gcG9ydEVuZFBvcyA9PSBob3N0RW5kUG9zOwotICAgICAgICBpbnQgcG9ydFN0YXJ0ID0gKGNv
bG9uTmVlZGVkID8gaG9zdEVuZFBvcyA6IGhvc3RFbmRQb3MgKyAxKTsKLSAgICAgICAgUVN0cmlu
ZyBuZXdVUkwgPSB1cmxTdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVkID8gIjoi
IDogUVN0cmluZygpKSArIFFTdHJpbmc6Om51bWJlcihpKSArIHVybFN0cmluZy5taWQocG9ydEVu
ZFBvcyk7Ci0gICAgICAgIHBhcnNlKG5ld1VSTC5hc2NpaSgpLCAmbmV3VVJMKTsKLSAgICB9Ci19
Ci0KLXZvaWQgS1VSTDo6c2V0VXNlcihjb25zdCBRU3RyaW5nICZ1c2VyKQotewotICAgIGlmICht
X2lzVmFsaWQpIHsKLSAgICAgICAgUVN0cmluZyB1OwotICAgICAgICBpbnQgZW5kID0gdXNlckVu
ZFBvczsKLSAgICAgICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gVW50
ZXN0ZWQgY29kZSwgYnV0IHRoaXMgaXMgbmV2ZXIgdXNlZC4KLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2lmIDAKLSAgICAgICAgICAgIHUgPSB1c2VyOwotICAgICAgICAgICAg
aWYgKHVzZXJTdGFydFBvcyA9PSBzY2hlbWVFbmRQb3MgKyAxKSB7Ci0gICAgICAgICAgICAgICAg
dSA9ICIvLyIgKyB1OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQWRkICdAJyBpZiB3
ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAgICAgICAgaWYgKGVuZCA9PSBob3N0RW5k
UG9zIHx8IChlbmQgPT0gcGFzc3dvcmRFbmRQb3MgJiYgdXJsU3RyaW5nW2VuZF0gIT0gJ0AnKSkg
ewotICAgICAgICAgICAgICAgIHUgKz0gJ0AnOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5l
aXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgICAgICBpZiAodXNlckVuZFBvcyA9PSBw
YXNzd29yZEVuZFBvcyAmJiBlbmQgIT0gaG9zdEVuZFBvcyAmJiB1cmxTdHJpbmdbZW5kXSA9PSAn
QCcpIHsKLSAgICAgICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBjb25zdCBRU3RyaW5nIG5ld1VSTCA9IHVybFN0cmluZy5sZWZ0KHVzZXJTdGFy
dFBvcykgKyB1ICsgdXJsU3RyaW5nLm1pZChlbmQpOwotICAgICAgICBwYXJzZShuZXdVUkwuYXNj
aWkoKSwgJm5ld1VSTCk7Ci0gICAgfQotfQotCi12b2lkIEtVUkw6OnNldFBhc3MoY29uc3QgUVN0
cmluZyAmcGFzc3dvcmQpCi17Ci0gICAgaWYgKG1faXNWYWxpZCkgewotICAgICAgICBRU3RyaW5n
IHA7Ci0gICAgICAgIGludCBlbmQgPSBwYXNzd29yZEVuZFBvczsKLSAgICAgICAgaWYgKCFwYXNz
d29yZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIFVudGVzdGVkIGNvZGUsIGJ1dCB0aGlz
IGlzIG5ldmVyIHVzZWQuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiAw
Ci0gICAgICAgICAgICBwID0gJzonICsgcGFzc3dvcmQgKyAnQCc7Ci0gICAgICAgICAgICBpZiAo
dXNlckVuZFBvcyA9PSBzY2hlbWVFbmRQb3MgKyAxKSB7Ci0gICAgICAgICAgICAgICAgcCA9ICIv
LyIgKyBwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAn
QCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgotICAgICAgICAgICAgaWYgKGVu
ZCAhPSBob3N0RW5kUG9zICYmIHVybFN0cmluZ1tlbmRdID09ICdAJykgewotICAgICAgICAgICAg
ICAgIGVuZCArPSAxOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3Ig
cGFzc3dvcmQuCi0gICAgICAgICAgICBpZiAodXNlclN0YXJ0UG9zID09IHVzZXJFbmRQb3MgJiYg
ZW5kICE9IGhvc3RFbmRQb3MgJiYgdXJsU3RyaW5nW2VuZF0gPT0gJ0AnKSB7Ci0gICAgICAgICAg
ICAgICAgZW5kICs9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qg
UVN0cmluZyBuZXdVUkwgPSB1cmxTdHJpbmcubGVmdCh1c2VyRW5kUG9zKSArIHAgKyB1cmxTdHJp
bmcubWlkKGVuZCk7Ci0gICAgICAgIHBhcnNlKG5ld1VSTC5hc2NpaSgpLCAmbmV3VVJMKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UmVmKGNvbnN0IFFTdHJpbmcgJnMpCi17Ci0gICAgaWYg
KG1faXNWYWxpZCkgewotICAgICAgICBRU3RyaW5nIG5ld1VSTCA9IHVybFN0cmluZy5sZWZ0KHF1
ZXJ5RW5kUG9zKSArIChzLmlzRW1wdHkoKSA/IFFTdHJpbmcoKSA6ICIjIiArIHMpOwotICAgICAg
ICBwYXJzZShuZXdVUkwuYXNjaWkoKSwgJm5ld1VSTCk7Ci0gICAgfQotfQotCi12b2lkIEtVUkw6
OnNldFF1ZXJ5KGNvbnN0IFFTdHJpbmcgJnF1ZXJ5KQotewotICAgIGlmIChtX2lzVmFsaWQpIHsK
LSAgICAgICAgUVN0cmluZyBxOwotICAgICAgICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSAmJiBxdWVy
eVswXSAhPSAnPycpIHsKLSAgICAgICAgICAgIHEgPSAiPyIgKyBxdWVyeTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHEgPSBxdWVyeTsKLSAgICAgICAgfQotCi0gICAgICAgIFFTdHJp
bmcgbmV3VVJMID0gdXJsU3RyaW5nLmxlZnQocGF0aEVuZFBvcykgKyBxICsgdXJsU3RyaW5nLm1p
ZChxdWVyeUVuZFBvcyk7Ci0gICAgICAgIHBhcnNlKG5ld1VSTC5hc2NpaSgpLCAmbmV3VVJMKTsK
LSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UGF0aChjb25zdCBRU3RyaW5nICZzKQotewotICAg
IGlmIChtX2lzVmFsaWQpIHsKLSAgICAgICAgUVN0cmluZyBuZXdVUkwgPSB1cmxTdHJpbmcubGVm
dChwb3J0RW5kUG9zKSArIGVuY29kZV9zdHJpbmcocykgKyB1cmxTdHJpbmcubWlkKHBhdGhFbmRQ
b3MpOwotICAgICAgICBwYXJzZShuZXdVUkwuYXNjaWkoKSwgJm5ld1VSTCk7Ci0gICAgfQotfQot
Ci1RU3RyaW5nIEtVUkw6OnByZXR0eVVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
IHsKLSAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKLSAgICB9Ci0KLSAgICBRU3RyaW5nIHJlc3Vs
dCA9IHByb3RvY29sKCkgKyAiOiI7Ci0KLSAgICBRU3RyaW5nIGF1dGhvcml0eTsKLQotICAgIGlm
IChob3N0RW5kUG9zICE9IHBhc3N3b3JkRW5kUG9zKSB7Ci0gICAgICAgIGlmICh1c2VyRW5kUG9z
ICE9IHVzZXJTdGFydFBvcykgewotICAgICAgICAgICAgYXV0aG9yaXR5ICs9IHVzZXIoKTsKLSAg
ICAgICAgICAgIGF1dGhvcml0eSArPSAiQCI7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0aG9yaXR5
ICs9IGhvc3QoKTsKLSAgICAgICAgaWYgKHBvcnQoKSAhPSAwKSB7Ci0gICAgICAgICAgICBhdXRo
b3JpdHkgKz0gIjoiOwotICAgICAgICAgICAgYXV0aG9yaXR5ICs9IFFTdHJpbmc6Om51bWJlcihw
b3J0KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFhdXRob3JpdHkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHJlc3VsdCArPSAiLy8iICsgYXV0aG9yaXR5OwotICAgIH0KLQotICAgIHJl
c3VsdCArPSBwYXRoKCk7Ci0gICAgcmVzdWx0ICs9IHF1ZXJ5KCk7Ci0KLSAgICBpZiAoZnJhZ21l
bnRFbmRQb3MgIT0gcXVlcnlFbmRQb3MpIHsKLSAgICAgICAgcmVzdWx0ICs9ICIjIiArIHJlZigp
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVFTdHJpbmcgS1VSTDo6ZGVjb2Rl
X3N0cmluZyhjb25zdCBRU3RyaW5nICZ1cmxTdHJpbmcsIGNvbnN0IFFUZXh0Q29kZWMgKmNvZGVj
KQotewotICAgIHN0YXRpYyBjb25zdCBRVGV4dENvZGVjIFVURjhDb2RlYyhrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpOwotCi0gICAgUVN0cmluZyByZXN1bHQoIiIpOwotCi0gICAgVmVjdG9yPGNoYXIs
IDIwNDg+IGJ1ZmZlcigwKTsKLQotICAgIGludCBsZW5ndGggPSB1cmxTdHJpbmcubGVuZ3RoKCk7
Ci0gICAgaW50IGRlY29kZWRQb3NpdGlvbiA9IDA7Ci0gICAgaW50IHNlYXJjaFBvc2l0aW9uID0g
MDsKLSAgICBpbnQgZW5jb2RlZFJ1blBvc2l0aW9uOwotICAgIHdoaWxlICgoZW5jb2RlZFJ1blBv
c2l0aW9uID0gdXJsU3RyaW5nLmZpbmQoJyUnLCBzZWFyY2hQb3NpdGlvbikpID49IDApIHsKLSAg
ICAgICAgLy8gRmluZCB0aGUgc2VxdWVuY2Ugb2YgJS1lc2NhcGUgY29kZXMuCi0gICAgICAgIGlu
dCBlbmNvZGVkUnVuRW5kID0gZW5jb2RlZFJ1blBvc2l0aW9uOwotICAgICAgICB3aGlsZSAobGVu
Z3RoIC0gZW5jb2RlZFJ1bkVuZCA+PSAzCi0gICAgICAgICAgICAgICAgJiYgdXJsU3RyaW5nW2Vu
Y29kZWRSdW5FbmRdID09ICclJwotICAgICAgICAgICAgICAgICYmIGlzSGV4RGlnaXQodXJsU3Ry
aW5nW2VuY29kZWRSdW5FbmQgKyAxXS5sYXRpbjEoKSkKLSAgICAgICAgICAgICAgICAmJiBpc0hl
eERpZ2l0KHVybFN0cmluZ1tlbmNvZGVkUnVuRW5kICsgMl0ubGF0aW4xKCkpKQotICAgICAgICAg
ICAgZW5jb2RlZFJ1bkVuZCArPSAzOwotICAgICAgICBpZiAoZW5jb2RlZFJ1bkVuZCA9PSBlbmNv
ZGVkUnVuUG9zaXRpb24pIHsKLSAgICAgICAgICAgICsrc2VhcmNoUG9zaXRpb247Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBzZWFyY2hQb3NpdGlvbiA9IGVuY29k
ZWRSdW5FbmQ7Ci0KLSAgICAgICAgLy8gQ29weSB0aGUgZW50aXJlICUtZXNjYXBlIHNlcXVlbmNl
IGludG8gYW4gOC1iaXQgYnVmZmVyLgotICAgICAgICBpbnQgZW5jb2RlZFJ1bkxlbmd0aCA9IGVu
Y29kZWRSdW5FbmQgLSBlbmNvZGVkUnVuUG9zaXRpb247Ci0gICAgICAgIGJ1ZmZlci5jbGVhcigp
OwotICAgICAgICBidWZmZXIucmVzaXplKGVuY29kZWRSdW5MZW5ndGggKyAxKTsKLSAgICAgICAg
dXJsU3RyaW5nLmNvcHlMYXRpbjEoYnVmZmVyLCBlbmNvZGVkUnVuUG9zaXRpb24sIGVuY29kZWRS
dW5MZW5ndGgpOwotCi0gICAgICAgIC8vIERlY29kZSB0aGUgJS1lc2NhcGVzIGludG8gYnl0ZXMu
Ci0gICAgICAgIGNoYXIgKnAgPSBidWZmZXI7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnEgPSBidWZm
ZXI7Ci0gICAgICAgIHdoaWxlICgqcSkgewotICAgICAgICAgICAgKnArKyA9IChoZXhEaWdpdFZh
bHVlKHFbMV0pIDw8IDQpIHwgaGV4RGlnaXRWYWx1ZShxWzJdKTsKLSAgICAgICAgICAgIHEgKz0g
MzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERlY29kZSB0aGUgYnl0ZXMgaW50byBVbmljb2Rl
IGNoYXJhY3RlcnMuCi0gICAgICAgIFFTdHJpbmcgZGVjb2RlZCA9IChjb2RlYyA/IGNvZGVjIDog
JlVURjhDb2RlYyktPnRvVW5pY29kZShidWZmZXIsIHAgLSBidWZmZXIpOwotICAgICAgICBpZiAo
ZGVjb2RlZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gQnVpbGQgdXAgdGhlIHN0cmluZyB3aXRoIHdoYXQgd2UganVzdCBza2lwcGVk
IGFuZCB3aGF0IHdlIGp1c3QgZGVjb2RlZC4KLSAgICAgICAgcmVzdWx0LmFwcGVuZCh1cmxTdHJp
bmcubWlkKGRlY29kZWRQb3NpdGlvbiwgZW5jb2RlZFJ1blBvc2l0aW9uIC0gZGVjb2RlZFBvc2l0
aW9uKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZGVjb2RlZCk7Ci0gICAgICAgIGRlY29kZWRQ
b3NpdGlvbiA9IGVuY29kZWRSdW5FbmQ7Ci0gICAgfQotCi0gICAgcmVzdWx0LmFwcGVuZCh1cmxT
dHJpbmcubWlkKGRlY29kZWRQb3NpdGlvbiwgbGVuZ3RoIC0gZGVjb2RlZFBvc2l0aW9uKSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUUgLSBpbmNsdWRlIGZlZWQ6IGhlcmUgdG9vPwotICAgIHJldHVybiBwcm90
b2NvbCgpID09ICJmaWxlIjsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFy
cyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyICpzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsK
LSAgICBjaGFyICpwID0gYnVmZmVyOwotCi0gICAgY29uc3QgY2hhciAqc3RyID0gc3RyU3RhcnQ7
Ci0gICAgY29uc3QgY2hhciAqc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUg
KHN0ciA8IHN0ckVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAg
ICAgIGlmIChpc0JhZENoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBjID09
ICc/JykgewotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhE
aWdpdHNbYyA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4RGlnaXRzW2MgJiAweEZd
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKnArKyA9IGM7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgYnVmZmVyID0gcDsKLX0KLQotLy8gY29weSBh
IHBhdGgsIGFjY291bnRpbmcgZm9yICIuIiBhbmQgIi4uIiBzZWdtZW50cwotc3RhdGljIGludCBj
b3B5UGF0aFJlbW92aW5nRG90cyhjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IHNyY1N0
YXJ0LCBpbnQgc3JjRW5kKQotewotICAgIGNoYXIgKmJ1ZmZlclBhdGhTdGFydCA9IGRzdDsKLQot
ICAgIC8vIGVtcHR5IHBhdGggaXMgYSBzcGVjaWFsIGNhc2UsIGFuZCBuZWVkIG5vdCBoYXZlIGEg
bGVhZGluZyBzbGFzaAotICAgIGlmIChzcmNTdGFydCAhPSBzcmNFbmQpIHsKLSAgICAgICAgY29u
c3QgY2hhciAqYmFzZVN0cmluZ1N0YXJ0ID0gc3JjICsgc3JjU3RhcnQ7Ci0gICAgICAgIGNvbnN0
IGNoYXIgKmJhc2VTdHJpbmdFbmQgPSBzcmMgKyBzcmNFbmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIg
KmJhc2VTdHJpbmdQb3MgPSBiYXNlU3RyaW5nU3RhcnQ7Ci0KLSAgICAgICAgLy8gdGhpcyBjb2Rl
IGlzIHVucHJlcGFyZWQgZm9yIHBhdGhzIHRoYXQgZG8gbm90IGJlZ2luIHdpdGggYQotICAgICAg
ICAvLyBzbGFzaCBhbmQgd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIG9uZSBpbiB0aGUgc291cmNlIHN0
cmluZwotICAgICAgICBBU1NFUlQoYmFzZVN0cmluZ1Bvc1swXSA9PSAnLycpOwotCi0gICAgICAg
IC8vIGNvcHkgdGhlIGxlYWRpbmcgc2xhc2ggaW50byB0aGUgZGVzdGluYXRpb24KLSAgICAgICAg
KmRzdCA9ICpiYXNlU3RyaW5nUG9zOwotICAgICAgICBiYXNlU3RyaW5nUG9zKys7Ci0gICAgICAg
IGRzdCsrOwotCi0gICAgICAgIHdoaWxlIChiYXNlU3RyaW5nUG9zIDwgYmFzZVN0cmluZ0VuZCkg
ewotICAgICAgICAgICAgaWYgKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy4nICYmIGRzdFstMV0gPT0g
Jy8nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2VTdHJpbmdQb3NbMV0gPT0gJy8nIHx8IGJh
c2VTdHJpbmdQb3MgKyAxID09IGJhc2VTdHJpbmdFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gc2tpcCBvdmVyICIuIiBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQ
b3MgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChiYXNlU3RyaW5nUG9zWzFdID09ICcuJyAmJiAoYmFzZVN0cmluZ1Bvc1syXSA9
PSAnLycgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJp
bmdQb3MgKyAyID09IGJhc2VTdHJpbmdFbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNr
aXAgb3ZlciAiLi4iIHNlZ21lbnQgYW5kIHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIHRoZSBSRkMgbGVhdmVzIGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRl
IHdoYXQgdG8gZG8gd2l0aCBleGNlc3MKLSAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdt
ZW50cyAtIHdlIGNob29zZSB0byBkcm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAotICAg
ICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAg
YmFzZVN0cmluZ1BvcyArPSAzOwotICAgICAgICAgICAgICAgICAgICBpZiAoZHN0ID4gYnVmZmVy
UGF0aFN0YXJ0ICsgMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZHN0LS07Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZXNlIHR3
byB3aGlsZSBibG9ja3MgZGlmZmVyIHN1YnRseS4KLSAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IGZpcnN0IGhlbHBzIHRvIHJlbW92ZSBtdWx0aXBsZSBhZGpvaW5pbmcgc2xhc2hlcyBhcyB3ZSBy
ZXdpbmQuCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSArMSB0byBidWZmZXJQYXRoU3RhcnQg
aW4gdGhlIGZpcnN0IHdoaWxlIGJsb2NrIHByZXZlbnRzIGVhdGluZyBhIGxlYWRpbmcgc2xhc2gK
LSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCArIDEgJiYg
ZHN0Wy0xXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChkc3QgPiBidWZmZXJQ
YXRoU3RhcnQgJiYgZHN0Wy0xXSAhPSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRz
dC0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmRzdCA9
ICpiYXNlU3RyaW5nUG9zOwotICAgICAgICAgICAgYmFzZVN0cmluZ1BvcysrOwotICAgICAgICAg
ICAgZHN0Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKmRzdCA9ICdcMCc7Ci0gICAgcmV0dXJu
IGRzdCAtIGJ1ZmZlclBhdGhTdGFydDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNo
RG90T3JEb3REb3QoY29uc3QgY2hhciAqc3RyKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oc3RyKTsKLSAgICBp
ZiAoISpwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgY2hhciBwYyA9ICpw
OwotICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMgPSAqKytwKSB7Ci0gICAgICAgIGlmIChjID09
ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcuJykpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgcGMgPSBjOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBtYXRjaExldHRlcihjaGFyIGMsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQot
ewotICAgIHJldHVybiAoYyB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKLX0KLQotdm9pZCBL
VVJMOjpwYXJzZShjb25zdCBjaGFyICp1cmwsIGNvbnN0IFFTdHJpbmcgKm9yaWdpbmFsU3RyaW5n
KQotewotICAgIG1faXNWYWxpZCA9IHRydWU7Ci0KLSAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0g
J1wwJykgewotICAgICAgICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAg
bV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHVybFN0cmluZyA9IHVybDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIodXJsWzBdKSkgewotICAg
ICAgICAvLyBzY2hlbWUgbXVzdCBzdGFydCB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyCi0g
ICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICB1cmxTdHJpbmcgPSB1cmw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgc2NoZW1lRW5kID0gMDsKLSAKLSAgICB3aGls
ZSAoaXNTY2hlbWVDaGFyKHVybFtzY2hlbWVFbmRdKSkgewotICAgICAgICBzY2hlbWVFbmQrKzsK
LSAgICB9Ci0KLSAgICBpZiAodXJsW3NjaGVtZUVuZF0gIT0gJzonKSB7Ci0gICAgICAgIG1faXNW
YWxpZCA9IGZhbHNlOwotICAgICAgICB1cmxTdHJpbmcgPSB1cmw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpbnQgdXNlclN0YXJ0ID0gc2NoZW1lRW5kICsgMTsKLSAgICBpbnQgdXNl
ckVuZDsKLSAgICBpbnQgcGFzc3dvcmRTdGFydDsKLSAgICBpbnQgcGFzc3dvcmRFbmQ7Ci0gICAg
aW50IGhvc3RTdGFydDsKLSAgICBpbnQgaG9zdEVuZDsKLSAgICBpbnQgcG9ydFN0YXJ0OwotICAg
IGludCBwb3J0RW5kOwotCi0gICAgYm9vbCBoaWVyYXJjaGljYWwgPSB1cmxbc2NoZW1lRW5kICsg
MV0gPT0gJy8nOwotCi0gICAgaWYgKGhpZXJhcmNoaWNhbCAmJiB1cmxbc2NoZW1lRW5kICsgMl0g
PT0gJy8nKSB7Ci0gICAgICAgIC8vIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBtdXN0IGJlIGEgbmV0
X3BhdGgsIHBhcnNlIHRoZSBhdXRob3JpdHkgc2VjdGlvbgotCi0gICAgICAgIC8vIEZJWE1FOiBh
dXRob3JpdHkgY2hhcmFjdGVycyBtYXkgYmUgc2Nhbm5lZCB0d2ljZQotICAgICAgICB1c2VyU3Rh
cnQgKz0gMjsKLSAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLQotICAgICAgICBpbnQgY29s
b25Qb3MgPSAwOwotICAgICAgICB3aGlsZSAoaXNVc2VySW5mb0NoYXIodXJsW3VzZXJFbmRdKSkg
ewotICAgICAgICAgICAgaWYgKHVybFt1c2VyRW5kXSA9PSAnOicgJiYgY29sb25Qb3MgPT0gMCkg
ewotICAgICAgICAgICAgICAgIGNvbG9uUG9zID0gdXNlckVuZDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHVzZXJFbmQrKzsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHVy
bFt1c2VyRW5kXSA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIGFjdHVhbCBlbmQgb2YgdGhlIHVz
ZXJpbmZvLCBzdGFydCBvbiB0aGUgaG9zdAotICAgICAgICAgICAgaWYgKGNvbG9uUG9zICE9IDAp
IHsKLSAgICAgICAgICAgICAgICBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICAg
ICAgdXNlckVuZCA9IGNvbG9uUG9zOwotICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBj
b2xvblBvcyArIDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhc3N3
b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBob3N0U3RhcnQgPSBwYXNzd29yZEVuZCArIDE7Ci0gICAgICAgIH0gZWxzZSBpZiAodXJs
W3VzZXJFbmRdID09ICdbJyB8fCBpc1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbdXNlckVuZF0pKSB7
Ci0gICAgICAgICAgICAvLyBoaXQgdGhlIGVuZCBvZiB0aGUgYXV0aG9yaXR5LCBtdXN0IGhhdmUg
YmVlbiBubyB1c2VyCi0gICAgICAgICAgICAvLyBvciBsb29rcyBsaWtlIGFuIElQdjYgaG9zdG5h
bWUKLSAgICAgICAgICAgIC8vIGVpdGhlciB3YXksIHRyeSB0byBwYXJzZSBpdCBhcyBhIGhvc3Ru
YW1lCi0gICAgICAgICAgICB1c2VyRW5kID0gdXNlclN0YXJ0OwotICAgICAgICAgICAgcGFzc3dv
cmRTdGFydCA9IHBhc3N3b3JkRW5kID0gdXNlckVuZDsKLSAgICAgICAgICAgIGhvc3RTdGFydCA9
IHVzZXJTdGFydDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGludmFsaWQgY2hh
cmFjdGVyCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHVybFN0
cmluZyA9IHVybDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGhv
c3RFbmQgPSBob3N0U3RhcnQ7Ci0KLSAgICAgICAgLy8gSVBWNiBJUCBhZGRyZXNzCi0gICAgICAg
IGlmICh1cmxbaG9zdEVuZF0gPT0gJ1snKSB7Ci0gICAgICAgICAgICBob3N0RW5kKys7Ci0gICAg
ICAgICAgICB3aGlsZSAoaXNJUHY2Q2hhcih1cmxbaG9zdEVuZF0pKSB7Ci0gICAgICAgICAgICAg
ICAgaG9zdEVuZCsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHVybFtob3N0RW5k
XSA9PSAnXScpIHsKLSAgICAgICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0gICAgICAgICAgICAg
ICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdXJsU3RyaW5nID0gdXJsOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHdoaWxlIChpc0hvc3RuYW1lQ2hhcih1cmxbaG9zdEVuZF0pKSB7Ci0gICAg
ICAgICAgICAgICAgaG9zdEVuZCsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09ICc6JykgewotICAgICAgICAgICAgcG9ydFN0
YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQgKyAxOwotIAotICAgICAgICAgICAgLy8gcG9zc2libGUg
c3RhcnQgb2YgcG9ydAotICAgICAgICAgICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKLSAgICAgICAg
ICAgIHdoaWxlIChpc2RpZ2l0KHVybFtwb3J0RW5kXSkpIHsKLSAgICAgICAgICAgICAgICBwb3J0
RW5kKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb3J0
U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVuZDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaXNQ
YXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewotICAgICAgICAgICAgLy8gaW52YWxp
ZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAg
dXJsU3RyaW5nID0gdXJsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgLy8gdGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBtdXN0IGJlIGFuIG9w
YXF1ZV9wYXJ0IG9yIGFuIGFic19wYXRoCi0gICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0g
ICAgICAgIHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgIGhv
c3RTdGFydCA9IGhvc3RFbmQgPSBwYXNzd29yZEVuZDsKLSAgICAgICAgcG9ydFN0YXJ0ID0gcG9y
dEVuZCA9IGhvc3RFbmQ7Ci0gICAgfQotICAgICAgICAKLSAgICBpbnQgcGF0aFN0YXJ0ID0gcG9y
dEVuZDsKLSAgICBpbnQgcGF0aEVuZCA9IHBhdGhTdGFydDsKLSAgICBpbnQgcXVlcnlTdGFydDsK
LSAgICBpbnQgcXVlcnlFbmQ7Ci0gICAgaW50IGZyYWdtZW50U3RhcnQ7Ci0gICAgaW50IGZyYWdt
ZW50RW5kOwotCi0gICAgaWYgKCFoaWVyYXJjaGljYWwpIHsKLSAgICAgICAgd2hpbGUgKHVybFtw
YXRoRW5kXSAhPSAnXDAnICYmIHVybFtwYXRoRW5kXSAhPSAnPycpIHsKLSAgICAgICAgICAgIHBh
dGhFbmQrKzsKLSAgICAgICAgfQotICAgICAgICBxdWVyeVN0YXJ0ID0gcXVlcnlFbmQgPSBwYXRo
RW5kOwotCi0gICAgICAgIHdoaWxlICh1cmxbcXVlcnlFbmRdICE9ICdcMCcpIHsKLSAgICAgICAg
ICAgIHF1ZXJ5RW5kKys7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmFnbWVudFN0YXJ0ID0gZnJh
Z21lbnRFbmQgPSBxdWVyeUVuZDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdoaWxlICh1
cmxbcGF0aEVuZF0gIT0gJ1wwJyAmJiB1cmxbcGF0aEVuZF0gIT0gJz8nICYmIHVybFtwYXRoRW5k
XSAhPSAnIycpIHsKLSAgICAgICAgICAgIHBhdGhFbmQrKzsKLSAgICAgICAgfQotICAgIAotICAg
ICAgICBxdWVyeVN0YXJ0ID0gcGF0aEVuZDsKLSAgICAgICAgcXVlcnlFbmQgPSBxdWVyeVN0YXJ0
OwotICAgICAgICBpZiAodXJsW3F1ZXJ5U3RhcnRdID09ICc/JykgewotICAgICAgICAgICAgd2hp
bGUgKHVybFtxdWVyeUVuZF0gIT0gJ1wwJyAmJiB1cmxbcXVlcnlFbmRdICE9ICcjJykgewotICAg
ICAgICAgICAgICAgIHF1ZXJ5RW5kKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGZyYWdtZW50U3RhcnQgPSBxdWVyeUVuZDsKLSAgICAgICAgZnJhZ21lbnRF
bmQgPSBmcmFnbWVudFN0YXJ0OwotICAgICAgICBpZiAodXJsW2ZyYWdtZW50U3RhcnRdID09ICcj
JykgewotICAgICAgICAgICAgZnJhZ21lbnRTdGFydCsrOwotICAgICAgICAgICAgZnJhZ21lbnRF
bmQgPSBmcmFnbWVudFN0YXJ0OwotICAgICAgICAgICAgd2hpbGUodXJsW2ZyYWdtZW50RW5kXSAh
PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgZnJhZ21lbnRFbmQrKzsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGFzc2VtYmxlIGl0IGFsbCwgcmVtZW1iZXJpbmcg
dGhlIHJlYWwgcmFuZ2VzCi0KLSAgICBWZWN0b3I8Y2hhciwgNDA5Nj4gYnVmZmVyKGZyYWdtZW50
RW5kICogMyArIDEpOwotCi0gICAgY2hhciAqcCA9IGJ1ZmZlcjsKLSAgICBjb25zdCBjaGFyICpz
dHJQdHIgPSB1cmw7Ci0KLSAgICAvLyBjb3B5IGluIHRoZSBzY2hlbWUKLSAgICBjb25zdCBjaGFy
ICpzY2hlbWVFbmRQdHIgPSB1cmwgKyBzY2hlbWVFbmQ7Ci0gICAgd2hpbGUgKHN0clB0ciA8IHNj
aGVtZUVuZFB0cikgewotICAgICAgICAqcCsrID0gKnN0clB0cisrOwotICAgIH0KLSAgICBzY2hl
bWVFbmRQb3MgPSBwIC0gYnVmZmVyOwotCi0gICAgLy8gQ2hlY2sgaWYgd2UncmUgaHR0cCBvciBo
dHRwcy4KLSAgICBib29sIGlzSFRUUG9ySFRUUFMgPSBtYXRjaExldHRlcih1cmxbMF0sICdoJykK
LSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsWzFdLCAndCcpCi0gICAgICAgICYmIG1hdGNoTGV0
dGVyKHVybFsyXSwgJ3QnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbM10sICdwJykKLSAg
ICAgICAgJiYgKHVybFs0XSA9PSAnOicKLSAgICAgICAgICAgIHx8IChtYXRjaExldHRlcih1cmxb
NF0sICdzJykgJiYgdXJsWzVdID09ICc6JykpOwotCi0gICAgYm9vbCBob3N0SXNMb2NhbEhvc3Qg
PSBwb3J0RW5kIC0gdXNlclN0YXJ0ID09IDkKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsW3Vz
ZXJTdGFydF0sICdsJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCsxXSwg
J28nKQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbdXNlclN0YXJ0KzJdLCAnYycpCi0gICAg
ICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3RhcnQrM10sICdhJykKLSAgICAgICAgJiYgbWF0
Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCs0XSwgJ2wnKQotICAgICAgICAmJiBtYXRjaExldHRlcih1
cmxbdXNlclN0YXJ0KzVdLCAnaCcpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFt1c2VyU3Rh
cnQrNl0sICdvJykKLSAgICAgICAgJiYgbWF0Y2hMZXR0ZXIodXJsW3VzZXJTdGFydCs3XSwgJ3Mn
KQotICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbdXNlclN0YXJ0KzhdLCAndCcpOwotCi0gICAg
Ym9vbCBpc0ZpbGUgPSBtYXRjaExldHRlcih1cmxbMF0sICdmJykKLSAgICAgICAgJiYgbWF0Y2hM
ZXR0ZXIodXJsWzFdLCAnaScpCi0gICAgICAgICYmIG1hdGNoTGV0dGVyKHVybFsyXSwgJ2wnKQot
ICAgICAgICAmJiBtYXRjaExldHRlcih1cmxbM10sICdlJykKLSAgICAgICAgJiYgdXJsWzRdID09
ICc6JzsKLSAgICAgICAgCi0gICAgLy8gRmlsZSBVUkxzIG5lZWQgYSBob3N0IHBhcnQgdW5sZXNz
IGl0IGlzIGp1c3QgZmlsZTovLyBvciBmaWxlOi8vbG9jYWxob3N0Ci0gICAgYm9vbCBkZWdlbkZp
bGVQYXRoID0gcGF0aFN0YXJ0ID09IHBhdGhFbmQKLSAgICAgICAgJiYgKGhvc3RTdGFydCA9PSBo
b3N0RW5kCi0gICAgICAgICAgICB8fCBob3N0SXNMb2NhbEhvc3QpOwotICAgIAotICAgIGJvb2wg
aGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0ID0gdXNlclN0YXJ0ICE9IHVzZXJFbmQgfHwgcGFzc3dv
cmRTdGFydCAhPSBwYXNzd29yZEVuZCB8fCBwb3J0U3RhcnQgIT0gcG9ydEVuZDsKLQotICAgIC8v
IGFkZCAiOiIgYWZ0ZXIgc2NoZW1lCi0gICAgKnArKyA9ICc6JzsKLQotICAgIC8vIGlmIHdlIGhh
dmUgYXQgbGVhc3Qgb25lIGF1dGhvcml0eSBwYXJ0IG9yIGEgZmlsZSBVUkwgLSBhZGQgIi8vIiBh
bmQgYXV0aG9yaXR5Ci0gICAgaWYgKGlzRmlsZSA/ICFkZWdlbkZpbGVQYXRoCi0gICAgICAgICAg
ICAgICA6IChoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQgfHwgaG9zdFN0YXJ0ICE9IGhvc3RFbmQp
KSB7Ci0KLS8vaWYgKChpc0ZpbGUgJiYgIWRlZ2VuRmlsZVBhdGgpIHx8IGhhdmVOb25Ib3N0QXV0
aG9yaXR5UGFydCB8fCBob3N0U3RhcnQgIT0gaG9zdEVuZCkgewotLy8gc3RpbGwgYWRkcyAvLyBm
b3IgZmlsZTovL2xvY2FsaG9zdCwgZmlsZTovLwotCi0vL2lmICghKGlzRmlsZSAmJiBkZWdlbkZp
bGVQYXRoKSAmJiAoaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0IHx8IGhvc3RTdGFydCAhPSBob3N0
RW5kKSkgewotLy9kb2Vzbid0IGFkZCAvLyBmb3IgdGhpbmdzIGxpa2UgZmlsZTovLy9mb28KLQot
ICAgICAgICAqcCsrID0gJy8nOwotICAgICAgICAqcCsrID0gJy8nOwotCi0gICAgICAgIHVzZXJT
dGFydFBvcyA9IHAgLSBidWZmZXI7Ci0KLSAgICAgICAgLy8gY29weSBpbiB0aGUgdXNlcgotICAg
ICAgICBzdHJQdHIgPSB1cmwgKyB1c2VyU3RhcnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnVzZXJF
bmRQdHIgPSB1cmwgKyB1c2VyRW5kOwotICAgICAgICB3aGlsZSAoc3RyUHRyIDwgdXNlckVuZFB0
cikgewotICAgICAgICAgICAgKnArKyA9ICpzdHJQdHIrKzsKLSAgICAgICAgfQotICAgICAgICB1
c2VyRW5kUG9zID0gcCAtIGJ1ZmZlcjsKLSAgICAgICAgCi0gICAgICAgIC8vIGNvcHkgaW4gdGhl
IHBhc3N3b3JkCi0gICAgICAgIGlmIChwYXNzd29yZEVuZCAhPSBwYXNzd29yZFN0YXJ0KSB7Ci0g
ICAgICAgICAgICAqcCsrID0gJzonOwotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgcGFzc3dv
cmRTdGFydDsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3b3JkRW5kUHRyID0gdXJsICsg
cGFzc3dvcmRFbmQ7Ci0gICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgcGFzc3dvcmRFbmRQdHIp
IHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnN0clB0cisrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIHBhc3N3b3JkRW5kUG9zID0gcCAtIGJ1ZmZlcjsKLSAgICAgICAgCi0g
ICAgICAgIC8vIElmIHdlIGhhZCBhbnkgdXNlciBpbmZvLCBhZGQgIkAiCi0gICAgICAgIGlmIChw
IC0gYnVmZmVyICE9IHVzZXJTdGFydFBvcykgewotICAgICAgICAgICAgKnArKyA9ICdAJzsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gY29weSBpbiB0aGUgaG9zdCwgZXhjZXB0IGlu
IHRoZSBjYXNlIG9mIGEgZmlsZSBVUkwgd2l0aCBhdXRob3JpdHk9ImxvY2FsaG9zdCIKLSAgICAg
ICAgaWYgKCEoaXNGaWxlICYmIGhvc3RJc0xvY2FsSG9zdCAmJiAhaGF2ZU5vbkhvc3RBdXRob3Jp
dHlQYXJ0KSkgewotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgaG9zdFN0YXJ0OwotICAgICAg
ICAgICAgY29uc3QgY2hhciAqaG9zdEVuZFB0ciA9IHVybCArIGhvc3RFbmQ7Ci0gICAgICAgICAg
ICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgewotICAgICAgICAgICAgICAgICpwKysgPSAq
c3RyUHRyKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaG9zdEVuZFBvcyA9
IHAgLSBidWZmZXI7Ci0gICAgICAgIAotICAgICAgICAvLyBjb3B5IGluIHRoZSBwb3J0Ci0gICAg
ICAgIGlmIChwb3J0RW5kICE9IHBvcnRTdGFydCkgewotICAgICAgICAgICAgKnArKyA9ICc6JzsK
LSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIHBvcnRTdGFydDsKLSAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnBvcnRFbmRQdHIgPSB1cmwgKyBwb3J0RW5kOwotICAgICAgICAgICAgd2hpbGUgKHN0
clB0ciA8IHBvcnRFbmRQdHIpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnN0clB0cisrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHBvcnRFbmRQb3MgPSBwIC0gYnVmZmVy
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHVzZXJTdGFydFBvcyA9IHVzZXJFbmRQb3MgPSBwYXNz
d29yZEVuZFBvcyA9IGhvc3RFbmRQb3MgPSBwb3J0RW5kUG9zID0gcCAtIGJ1ZmZlcjsKLSAgICB9
Ci0KLSAgICAvLyBGb3IgY2Fub25pY2FsaXphdGlvbiwgZW5zdXJlIHdlIGhhdmUgYSAnLycgZm9y
IG5vIHBhdGguCi0gICAgLy8gT25seSBkbyB0aGlzIGZvciBodHRwIGFuZCBodHRwcy4KLSAgICBp
ZiAoaXNIVFRQb3JIVFRQUyAmJiBwYXRoRW5kIC0gcGF0aFN0YXJ0ID09IDApIHsKLSAgICAgICAg
KnArKyA9ICcvJzsKLSAgICB9Ci0gICAgICAgCi0gICAgLy8gYWRkIHBhdGgsIGVzY2FwaW5nIGJh
ZCBjaGFyYWN0ZXJzCi0gICAgCi0gICAgaWYgKGhpZXJhcmNoaWNhbCAmJiBoYXNTbGFzaERvdE9y
RG90RG90KHVybCkpIHsKLSAgICAgICAgVmVjdG9yPGNoYXIsIDQwOTY+IHBhdGhfYnVmZmVyKHBh
dGhFbmQgLSBwYXRoU3RhcnQgKyAxKTsKLSAgICAgICAgY29weVBhdGhSZW1vdmluZ0RvdHMocGF0
aF9idWZmZXIsIHVybCwgcGF0aFN0YXJ0LCBwYXRoRW5kKTsKLSAgICAgICAgYXBwZW5kRXNjYXBp
bmdCYWRDaGFycyhwLCBwYXRoX2J1ZmZlciwgc3RybGVuKHBhdGhfYnVmZmVyKSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGFwcGVuZEVzY2FwaW5nQmFkQ2hhcnMocCwgdXJsICsgcGF0aFN0YXJ0LCBw
YXRoRW5kIC0gcGF0aFN0YXJ0KTsKLQotICAgIHBhdGhFbmRQb3MgPSBwIC0gYnVmZmVyOwotICAg
IAotICAgIAotICAgIC8vIGFkZCBxdWVyeSwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMKLSAgICBh
cHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHF1ZXJ5U3RhcnQsIHF1ZXJ5RW5kIC0gcXVl
cnlTdGFydCk7Ci0gICAgcXVlcnlFbmRQb3MgPSBwIC0gYnVmZmVyOwotICAgIAotICAgIC8vIGFk
ZCBmcmFnbWVudCwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMKLSAgICBpZiAoZnJhZ21lbnRFbmQg
IT0gcXVlcnlFbmQpIHsKLSAgICAgICAgKnArKyA9ICcjJzsKLSAgICAgICAgYXBwZW5kRXNjYXBp
bmdCYWRDaGFycyhwLCB1cmwgKyBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50
U3RhcnQpOwotICAgIH0KLSAgICBmcmFnbWVudEVuZFBvcyA9IHAgLSBidWZmZXI7Ci0KLSAgICAv
LyBJZiB3ZSBkaWRuJ3QgZW5kIHVwIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBvcmlnaW5hbCBzdHJp
bmcgYW5kCi0gICAgLy8gaXQgc3RhcnRlZCBhcyBhIFFTdHJpbmcsIGp1c3QgcmV1c2UgaXQsIHRv
IGF2b2lkIGV4dHJhCi0gICAgLy8gYWxsb2NhdGlvbi4KLSAgICBpZiAob3JpZ2luYWxTdHJpbmcg
JiYgc3RybmNtcChidWZmZXIsIHVybCwgZnJhZ21lbnRFbmRQb3MpID09IDApIHsKLSAgICAgICAg
dXJsU3RyaW5nID0gKm9yaWdpbmFsU3RyaW5nOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHVybFN0
cmluZyA9IFFTdHJpbmcoYnVmZmVyLCBmcmFnbWVudEVuZFBvcyk7Ci0gICAgfQotCi0gICAgQVNT
RVJUKHAgLSBidWZmZXIgPD0gKGludClidWZmZXIuc2l6ZSgpKTsKLX0KLQotYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEtVUkwgJmEsIGNvbnN0IEtVUkwgJmIpCi17Ci0gICAgcmV0dXJuIGEudXJsU3Ry
aW5nID09IGIudXJsU3RyaW5nOwotfQotCi1ib29sIHVybGNtcChjb25zdCBRU3RyaW5nICZhLCBj
b25zdCBRU3RyaW5nICZiLCBib29sIGlnbm9yZVRyYWlsaW5nU2xhc2gsIGJvb2wgaWdub3JlUmVm
KQotewotICAgIGlmIChpZ25vcmVSZWYpIHsKLSAgICAgICAgS1VSTCBhVVJMKGEpOwotICAgICAg
ICBLVVJMIGJVUkwoYik7Ci0gICAgICAgIGlmIChhVVJMLm1faXNWYWxpZCAmJiBiVVJMLm1faXNW
YWxpZCkgewotICAgICAgICAgICAgcmV0dXJuIGFVUkwudXJsU3RyaW5nLmxlZnQoYVVSTC5xdWVy
eUVuZFBvcykgPT0gYlVSTC51cmxTdHJpbmcubGVmdChiVVJMLnF1ZXJ5RW5kUG9zKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gYSA9PSBiOwotfQotCi1RU3RyaW5nIEtVUkw6OmVuY29k
ZV9zdHJpbmcoY29uc3QgUVN0cmluZyYgbm90RW5jb2RlZFN0cmluZykKLXsKLSAgICBRQ1N0cmlu
ZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKLSAgICAKLSAgICBWZWN0b3I8Y2hh
ciwgNDA5Nj4gYnVmZmVyKGFzVVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKLSAgICBjaGFyICpwID0g
YnVmZmVyOwotCi0gICAgY29uc3QgY2hhciAqc3RyID0gYXNVVEY4OwotICAgIGNvbnN0IGNoYXIg
KnN0ckVuZCA9IHN0ciArIGFzVVRGOC5sZW5ndGgoKTsKLSAgICB3aGlsZSAoc3RyIDwgc3RyRW5k
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpzdHIrKzsKLSAgICAgICAgaWYgKGlzQmFk
Q2hhcihjKSkgewotICAgICAgICAgICAgKnArKyA9ICclJzsKLSAgICAgICAgICAgICpwKysgPSBo
ZXhEaWdpdHNbYyA+PiA0XTsKLSAgICAgICAgICAgICpwKysgPSBoZXhEaWdpdHNbYyAmIDB4Rl07
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICBRU3RyaW5nIHJlc3VsdChidWZmZXIsIHAgLSBidWZmZXIpOwotICAgIAot
ICAgIEFTU0VSVChwIC0gYnVmZmVyIDw9IChpbnQpYnVmZmVyLnNpemUoKSk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiBDRlVSTFJlZiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CiB7CiAg
ICAgY29uc3QgVUludDggKmJ5dGVzID0gKGNvbnN0IFVJbnQ4ICopdXJsU3RyaW5nLmxhdGluMSgp
OwpAQCAtMTI5NSwyNTMgKzcwLDMgQEAgTlNVUkwgKktVUkw6OmdldE5TVVJMKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gS1dRQ0ZBdXRvcmVsZWFzZShjcmVhdGVDRlVSTCgpKTsKIH0KLQotc3RhdGlj
IFFTdHJpbmcgZW5jb2RlSG9zdG5hbWUoY29uc3QgUVN0cmluZyAmcykKLXsKLSAgICAvLyBOZWVk
cyB0byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBG
b3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2Rpbmcs
IHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5h
bWVCdWZmZXJMZW5ndGggPSAyMDQ4OwotCi0gICAgaWYgKHMuaXNBbGxBU0NJSSgpIHx8IHMubGVu
Z3RoKCkgPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCkgewotICAgICAgICByZXR1cm4gczsKLSAgICB9
Ci0KLSAgICBVQ2hhciBidWZmZXJbaG9zdG5hbWVCdWZmZXJMZW5ndGhdOyAgICAKLSAgICBVRXJy
b3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0Nv
bnZlcnRlZCA9IHVpZG5hX0lETlRvQVNDSUkKLSAgICAgICAgKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIgKj4ocy51bmljb2RlKCkpLCBzLmxlbmd0aCgpLCBidWZmZXIsIGhvc3RuYW1lQnVm
ZmVyTGVuZ3RoLCBVSUROQV9BTExPV19VTkFTU0lHTkVELCAwLCAmZXJyb3IpOwotICAgIGlmIChl
cnJvciAhPSBVX1pFUk9fRVJST1IpIHsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgfQotICAgIHJl
dHVybiBRU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIgKj4oYnVmZmVyKSwgbnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCk7Ci19Ci0KLXN0YXRpYyBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiBmaW5k
SG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgUVN0cmluZyAmcykKLXsKLSAgICAvLyBJbiBhIG1h
aWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQg
d2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIG9yIGVuZCBvZiBzdHJpbmcgY2hhcmFjdGVyLgotICAg
IC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3Qg
Y29uZnVzZSB1cy4KLSAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUg
cGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KLQotICAg
IFZlY3RvcjxwYWlyPGludCwgaW50PiA+IGE7Ci0KLSAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUg
KDEpIHsKLSAgICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0
cmluZy4KLSAgICAgICAgaW50IGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9IHMuZmluZChRUmVnRXhw
KCJbXCJAP10iKSwgcCk7Ci0gICAgICAgIGlmIChob3N0bmFtZU9yU3RyaW5nU3RhcnQgPT0gLTEp
IHsKLSAgICAgICAgICAgIHJldHVybiBhOwotICAgICAgICB9Ci0gICAgICAgIFFDaGFyIGMgPSBz
W2hvc3RuYW1lT3JTdHJpbmdTdGFydF07Ci0gICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3Rh
cnQgKyAxOwotCi0gICAgICAgIGlmIChjID09ICc/JykgewotICAgICAgICAgICAgcmV0dXJuIGE7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAgICAg
ICAgLy8gRmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgaW50IGhvc3RuYW1lU3Rh
cnQgPSBwOwotICAgICAgICAgICAgaW50IGhvc3RuYW1lRW5kID0gcy5maW5kKFFSZWdFeHAoIls+
LD9dIiksIHApOwotICAgICAgICAgICAgYm9vbCBkb25lOwotICAgICAgICAgICAgaWYgKGhvc3Ru
YW1lRW5kID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgaG9zdG5hbWVFbmQgPSBzLmxlbmd0aCgp
OwotICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwID0gaG9zdG5hbWVFbmQ7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IGZh
bHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhLmFwcGVuZChtYWtlX3BhaXIoaG9z
dG5hbWVTdGFydCwgaG9zdG5hbWVFbmQpKTsKLQotICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBT
a2lwIHF1b3RlZCBzdHJpbmcuCi0gICAgICAgICAgICBBU1NFUlQoYyA9PSAnIicpOwotICAgICAg
ICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpbnQgZXNjYXBlZENoYXJhY3Rlck9y
U3RyaW5nRW5kID0gcy5maW5kKFFSZWdFeHAoIltcIlxcXSIpLCBwKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID09IC0xKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYTsKLQotICAgICAgICAgICAgICAgIGMgPSBzW2VzY2FwZWRDaGFyYWN0ZXJP
clN0cmluZ0VuZF07Ci0gICAgICAgICAgICAgICAgcCA9IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmlu
Z0VuZCArIDE7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJl
IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBi
YWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnIicp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIC8vIFNraXAgZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgQVNTRVJU
KGMgPT0gJ1xcJyk7Ci0gICAgICAgICAgICAgICAgaWYgKHAgPT0gc3RhdGljX2Nhc3Q8aW50Pihz
Lmxlbmd0aCgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7Ci0KLSAgICAgICAgICAg
ICAgICArK3A7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyBi
b29sIGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKGNvbnN0IFFTdHJpbmcgJnMsIGludCAm
c3RhcnRPZmZzZXQsIGludCAmZW5kT2Zmc2V0KQotewotICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFt
ZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0gICAgLy8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBz
ZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVycyBwcmVjZWRpbmcuCi0gICAgLy8gSWYgZW5k
cyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciBhICI6IiBvciBhIHBhdGggc2VnbWVudCBl
bmRpbmcgY2hhcmFjdGVyLgotICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhl
IGhvc3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCi0gICAgaW50IHNlcGFy
YXRvciA9IHMuZmluZCgiOi8vIik7Ci0gICAgaWYgKHNlcGFyYXRvciA8PSAwKSB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJz
IGJlZm9yZSB0aGUgOi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KLSAgICBpZiAoIWlz
U2NoZW1lRmlyc3RDaGFyKHNbMF0ubGF0aW4xKCkpKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzZXBhcmF0b3I7ICsraSkgewotICAgICAg
ICBpZiAoIWlzU2NoZW1lQ2hhcihzW2ldLmxhdGluMSgpKSkgewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU3RhcnQgYWZ0ZXIgdGhlIHNlcGFy
YXRvci4KLSAgICBpbnQgYXV0aG9yaXR5U3RhcnQgPSBzZXBhcmF0b3IgKyAzOwotCi0gICAgLy8g
RmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCi0gICAgaW50IGxlbmd0aCA9IHMubGVuZ3RoKCk7
Ci0gICAgaW50IGhvc3RuYW1lRW5kID0gbGVuZ3RoOwotICAgIGZvciAoaW50IGkgPSBhdXRob3Jp
dHlTdGFydDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNoYXIgYyA9IHNbaV0ubGF0aW4x
KCk7Ci0gICAgICAgIGlmIChjID09ICc6JyB8fCAoaXNQYXRoU2VnbWVudEVuZENoYXIoYykgJiYg
YyAhPSAnXDAnKSkgewotICAgICAgICAgICAgaG9zdG5hbWVFbmQgPSBpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGaW5kICJAIiBmb3IgdGhlIHN0YXJ0
IG9mIHRoZSBob3N0IG5hbWUuCi0gICAgaW50IHVzZXJJbmZvVGVybWluYXRvciA9IHMuZmluZCgn
QCcsIGF1dGhvcml0eVN0YXJ0KTsKLSAgICBpbnQgaG9zdG5hbWVTdGFydDsKLSAgICBpZiAodXNl
ckluZm9UZXJtaW5hdG9yID09IC0xIHx8IHVzZXJJbmZvVGVybWluYXRvciA+IGhvc3RuYW1lRW5k
KSB7Ci0gICAgICAgIGhvc3RuYW1lU3RhcnQgPSBhdXRob3JpdHlTdGFydDsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBob3N0bmFtZVN0YXJ0ID0gdXNlckluZm9UZXJtaW5hdG9yICsgMTsKLSAgICB9
Ci0KLSAgICBzdGFydE9mZnNldCA9IGhvc3RuYW1lU3RhcnQ7Ci0gICAgZW5kT2Zmc2V0ID0gaG9z
dG5hbWVFbmQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBRU3RyaW5nIGVuY29kZUhv
c3RuYW1lcyhjb25zdCBRU3RyaW5nICZzKQotewotICAgIGlmIChzLnN0YXJ0c1dpdGgoIm1haWx0
bzoiLCBmYWxzZSkpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9z
dG5hbWVSYW5nZXMgPSBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwocyk7Ci0gICAgICAgIGludCBu
ID0gaG9zdG5hbWVSYW5nZXMuc2l6ZSgpOwotICAgICAgICBpZiAobiAhPSAwKSB7Ci0gICAgICAg
ICAgICBRU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgICAgIHVpbnQgcCA9IDA7Ci0gICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IHBh
aXI8aW50LCBpbnQ+ICZyID0gaG9zdG5hbWVSYW5nZXNbaV07Ci0gICAgICAgICAgICAgICAgcmVz
dWx0ICs9IHMubWlkKHAsIHIuZmlyc3QpOwotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBlbmNv
ZGVIb3N0bmFtZShzLm1pZChyLmZpcnN0LCByLnNlY29uZCAtIHIuZmlyc3QpKTsKLSAgICAgICAg
ICAgICAgICBwID0gci5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHQg
Kz0gcy5taWQocCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaW50IGhvc3RTdGFydCwgaG9zdEVuZDsKLSAgICAgICAgaWYgKGZp
bmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKHMsIGhvc3RTdGFydCwgaG9zdEVuZCkpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzLmxlZnQoaG9zdFN0YXJ0KSArIGVuY29kZUhvc3RuYW1lKHMubWlk
KGhvc3RTdGFydCwgaG9zdEVuZCAtIGhvc3RTdGFydCkpICsgcy5taWQoaG9zdEVuZCk7IAotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi1zdGF0aWMgY2hhciAqZW5jb2RlUmVs
YXRpdmVTdHJpbmcoY29uc3QgS1VSTCAmYmFzZSwgY29uc3QgUVN0cmluZyAmcmVsLCBjb25zdCBR
VGV4dENvZGVjICpjb2RlYykKLXsKLSAgICBRU3RyaW5nIHMgPSBlbmNvZGVIb3N0bmFtZXMocmVs
KTsKLQotICAgIGNoYXIgKnN0ckJ1ZmZlcjsKLQotICAgIHN0YXRpYyBjb25zdCBRVGV4dENvZGVj
IFVURjhDb2RlYyhrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpOwotCi0gICAgY29uc3QgUVRleHRDb2Rl
YyAqcGF0aENvZGVjID0gY29kZWMgPyBjb2RlYyA6ICZVVEY4Q29kZWM7Ci0gICAgY29uc3QgUVRl
eHRDb2RlYyAqb3RoZXJDb2RlYyA9IHBhdGhDb2RlYzsKLSAgICAKLSAgICAvLyBBbHdheXMgdXNl
IFVURi04IGZvciBtYWlsdG8gVVJMcyBiZWNhdXNlIHRoYXQncyB3aGF0IG1haWwgYXBwbGljYXRp
b25zIGV4cGVjdC4KLSAgICAvLyBBbHdheXMgdXNlIFVURi04IGZvciBwYXRocyBpbiBmaWxlIGFu
ZCBoZWxwIFVSTHMsIHNpbmNlIHRoZXkgYXJlIGxvY2FsIGZpbGVzeXN0ZW0gcGF0aHMsCi0gICAg
Ly8gYW5kIGhlbHAgY29udGVudCBpcyBvZnRlbiBkZWZpbmVkIHdpdGggdGhpcyBpbiBtaW5kLCBi
dXQgdXNlIG5hdGl2ZSBlbmNvZGluZyBmb3IgdGhlCi0gICAgLy8gbm9uLXBhdGggcGFydHMgb2Yg
dGhlIFVSTC4KLSAgICBpZiAoKnBhdGhDb2RlYyAhPSBVVEY4Q29kZWMpIHsKLSAgICAgICAgUVN0
cmluZyBwcm90b2NvbDsKLSAgICAgICAgaWYgKHJlbC5sZW5ndGgoKSA+IDAgJiYgaXNTY2hlbWVG
aXJzdENoYXIocmVsLmF0KDApLmxhdGluMSgpKSkgewotICAgICAgICAgICAgZm9yICh1aW50IGkg
PSAxOyBpIDwgcmVsLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjaGFyIHAgPSBy
ZWwuYXQoaSkubGF0aW4xKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHAgPT0gJzonKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHByb3RvY29sID0gcmVsLmxlZnQoaSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWlzU2No
ZW1lQ2hhcihwKSkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwcm90b2NvbCkgewot
ICAgICAgICAgICAgcHJvdG9jb2wgPSBiYXNlLnByb3RvY29sKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcHJvdG9jb2wgPSBwcm90b2NvbC5sb3dlcigpOwotICAgICAgICBpZiAocHJvdG9jb2wgPT0g
ImZpbGUiIHx8IHByb3RvY29sID09ICJoZWxwIikgewotICAgICAgICAgICAgcGF0aENvZGVjID0g
JlVURjhDb2RlYzsKLSAgICAgICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PSAibWFpbHRvIikgewot
ICAgICAgICAgICAgcGF0aENvZGVjID0gJlVURjhDb2RlYzsKLSAgICAgICAgICAgIG90aGVyQ29k
ZWMgPSAmVVRGOENvZGVjOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGludCBwYXRoRW5k
ID0gLTE7Ci0gICAgaWYgKCpwYXRoQ29kZWMgIT0gKm90aGVyQ29kZWMpIHsKLSAgICAgICAgcGF0
aEVuZCA9IHMuZmluZChRUmVnRXhwKCJbPyNdIikpOwotICAgIH0KLSAgICBpZiAocGF0aEVuZCA9
PSAtMSkgewotICAgICAgICBRQ1N0cmluZyBkZWNvZGVkID0gcGF0aENvZGVjLT5mcm9tVW5pY29k
ZShzKTsKLSAgICAgICAgaW50IGRlY29kZWRMZW5ndGggPSBkZWNvZGVkLmxlbmd0aCgpOwotICAg
ICAgICBzdHJCdWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyICo+KGZhc3RNYWxsb2MoZGVjb2RlZExl
bmd0aCArIDEpKTsKLSAgICAgICAgbWVtY3B5KHN0ckJ1ZmZlciwgZGVjb2RlZCwgZGVjb2RlZExl
bmd0aCk7Ci0gICAgICAgIHN0ckJ1ZmZlcltkZWNvZGVkTGVuZ3RoXSA9IDA7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgUUNTdHJpbmcgcGF0aERlY29kZWQgPSBwYXRoQ29kZWMtPmZyb21Vbmljb2Rl
KHMubGVmdChwYXRoRW5kKSk7Ci0gICAgICAgIFFDU3RyaW5nIG90aGVyRGVjb2RlZCA9IG90aGVy
Q29kZWMtPmZyb21Vbmljb2RlKHMubWlkKHBhdGhFbmQpKTsKLSAgICAgICAgaW50IHBhdGhEZWNv
ZGVkTGVuZ3RoID0gcGF0aERlY29kZWQubGVuZ3RoKCk7Ci0gICAgICAgIGludCBvdGhlckRlY29k
ZWRMZW5ndGggPSBvdGhlckRlY29kZWQubGVuZ3RoKCk7Ci0gICAgICAgIHN0ckJ1ZmZlciA9IHN0
YXRpY19jYXN0PGNoYXIgKj4oZmFzdE1hbGxvYyhwYXRoRGVjb2RlZExlbmd0aCArIG90aGVyRGVj
b2RlZExlbmd0aCArIDEpKTsKLSAgICAgICAgbWVtY3B5KHN0ckJ1ZmZlciwgcGF0aERlY29kZWQs
IHBhdGhEZWNvZGVkTGVuZ3RoKTsKLSAgICAgICAgbWVtY3B5KHN0ckJ1ZmZlciArIHBhdGhEZWNv
ZGVkTGVuZ3RoLCBvdGhlckRlY29kZWQsIG90aGVyRGVjb2RlZExlbmd0aCk7Ci0gICAgICAgIHN0
ckJ1ZmZlcltwYXRoRGVjb2RlZExlbmd0aCArIG90aGVyRGVjb2RlZExlbmd0aF0gPSAwOwotICAg
IH0KLQotICAgIHJldHVybiBzdHJCdWZmZXI7Ci19Ci0KLXN0YXRpYyBRU3RyaW5nIHN1YnN0aXR1
dGVCYWNrc2xhc2hlcyhjb25zdCBRU3RyaW5nICZzdHJpbmcpCi17Ci0gICAgaW50IHF1ZXN0aW9u
UG9zID0gc3RyaW5nLmZpbmQoJz8nKTsKLSAgICBpbnQgaGFzaFBvcyA9IHN0cmluZy5maW5kKCcj
Jyk7Ci0gICAgdW5zaWduZWQgcGF0aEVuZDsKLSAgICAKLSAgICBpZiAoaGFzaFBvcyA+PSAwICYm
IChxdWVzdGlvblBvcyA8IDAgfHwgcXVlc3Rpb25Qb3MgPiBoYXNoUG9zKSkgewotICAgICAgICBw
YXRoRW5kID0gaGFzaFBvczsKLSAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uUG9zID49IDApIHsKLSAg
ICAgICAgcGF0aEVuZCA9IHF1ZXN0aW9uUG9zOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBhdGhF
bmQgPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0cmluZy5sZWZ0KHBh
dGhFbmQpLnJlcGxhY2UoJ1xcJywnLycpICsgc3RyaW5nLm1pZChwYXRoRW5kKTsKLX0KLQotYm9v
bCBLVVJMOjppc0hpZXJhcmNoaWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhc3NlcnQodXJsU3RyaW5nW3NjaGVtZUVuZFBvc10g
PT0gJzonKTsKLSAgICByZXR1cm4gdXJsU3RyaW5nW3NjaGVtZUVuZFBvcyArIDFdID09ICcvJzsK
LX0KSW5kZXg6IHBsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9LVVJMLmgJ
KHJldmlzaW9uIDEyOTQ2KQorKysgcGxhdGZvcm0vS1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAKIGNsYXNzIFFUZXh0Q29kZWM7CiAKKyNpZiBfX0FQUExFX18KICNpZmRl
ZiBfX09CSkNfXwogQGNsYXNzIE5TRGF0YTsKIEBjbGFzcyBOU1VSTDsKQEAgLTM3LDYgKzM4LDcg
QEAgY2xhc3MgUVRleHRDb2RlYzsKIGNsYXNzIE5TRGF0YTsKIGNsYXNzIE5TVVJMOwogI2VuZGlm
CisjZW5kaWYKIAogY2xhc3MgS1VSTCB7CiBwdWJsaWM6CkBAIC00NCw3ICs0Niw5IEBAIHB1Ymxp
YzoKICAgICBLVVJMKGNvbnN0IGNoYXIgKik7CiAgICAgS1VSTChjb25zdCBLVVJMICYsIGNvbnN0
IFFTdHJpbmcgJiwgY29uc3QgUVRleHRDb2RlYyAqID0gMCk7CiAgICAgS1VSTChjb25zdCBRU3Ry
aW5nICYpOworI2lmIF9fQVBQTEVfXwogICAgIEtVUkwoTlNVUkwgKik7CisjZW5kaWYKICAgICAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpOyB9
IAogICAgIGJvb2wgaXNNYWxmb3JtZWQoKSBjb25zdCB7IHJldHVybiAhbV9pc1ZhbGlkOyB9CkBA
IC03NSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlZihjb25zdCBRU3RyaW5nICYp
OwogCiAgICAgUVN0cmluZyBwcmV0dHlVUkwoKSBjb25zdDsKLSAgICAKKwogI2lmIF9fQVBQTEVf
XwogICAgIENGVVJMUmVmIGNyZWF0ZUNGVVJMKCkgY29uc3Q7CiAgICAgTlNVUkwgKmdldE5TVVJM
KCkgY29uc3Q7CkluZGV4OiBkb20vRG9jdW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0Rv
Y3VtZW50SW1wbC5oCShyZXZpc2lvbiAxMjk1MikKKysrIGRvbS9Eb2N1bWVudEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgImRlY29kZXIuaCIKICNpbmNs
dWRlICJkb20yX3RyYXZlcnNhbGltcGwuaCIKICNpbmNsdWRlICJkb21fZWxlbWVudGltcGwuaCIK
LSNpbmNsdWRlIDxrdXJsLmg+CisjaW5jbHVkZSA8S1VSTC5oPgogI2luY2x1ZGUgPGt4bWxjb3Jl
L0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8a3htbGNvcmUvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHFvYmplY3QuaD4KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEyOTUyKQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw5IEBACiAJCTY1ODJBMTYyMDk5OTlENkQwMEJFRUI2RCAvKiBTY3Jl
ZW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTgyQTE1NDA5OTk5RDZEMDBCRUVCNkQgLyogU2NyZWVuTWFjLm1tICovOyB9OwogCQk2NTgyQTE2
MzA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGltZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE1NTA5OTk5RDZEMDBCRUVCNkQgLyog
U3lzdGVtVGltZU1hYy5jcHAgKi87IH07CiAJCTY1ODJBMTc4MDk5OTlFQTAwMEJFRUI2RCAvKiBR
U3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU4MkExNzcwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMubW0gKi87IH07CisJCTY1
OTM5MjM3MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJM
LmNwcCAqLzsgfTsKKwkJNjU5MzkyMzgwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYw
MDJDNTMxRiAvKiBLVVJMLmggKi87IH07CisJCTY1OTM5MjNBMDlBRTQzNUMwMDJDNTMxRiAvKiBL
VVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gKi87IH07CiAJCTY1QTIxNDY4
MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyB9
OwogCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5
MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovOyB9OwogCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi87IH07CkBAIC0y
MjgsNyArMjMxLDYgQEAKIAkJOTNGMTk5NUIwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtMb2NhbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NUZB
MDJERTM4MjAwMUVBNDEyMiAvKiBLV1FLTG9jYWxlLmggKi87IH07CiAJCTkzRjE5OTYwMDgyNDVF
NTkwMDFFOUFCQyAvKiBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjZCMDJERTNCMzIwMUVBNDEyMiAv
KiBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIuaCAqLzsgfTsKIAkJOTNGMTk5NjMwODI0NUU1OTAw
MUU5QUJDIC8qIEtXUUtTU0xLZXlHZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBLV1FLU1NMS2V5R2Vu
LmggKi87IH07Ci0JCTkzRjE5OTY3MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLVVJMLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODYwMjAyREUzODIw
MDFFQTQxMjIgLyogS1dRS1VSTC5oICovOyB9OwogCQk5M0YxOTk2QjA4MjQ1RTU5MDAxRTlBQkMg
LyogS1dRTGluZUVkaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1ODc4Njk4MDJERTNCODYwMUVBNDEyMiAvKiBLV1FMaW5lRWRpdC5oICovOyB9Owog
CQk5M0YxOTk2QzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTGlzdEJveC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg1MTMwMkRFMzc1OTAxRUE0MTIy
IC8qIEtXUUxpc3RCb3guaCAqLzsgfTsKIAkJOTNGMTk5NkQwODI0NUU1OTAwMUU5QUJDIC8qIEtX
UUxpc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTg3ODUxNTAyREUzNzU5MDFFQTQxMjIgLyogS1dRTGlzdEltcGwuaCAqLzsgfTsKQEAgLTMy
OSw3ICszMzEsNiBAQAogCQk5M0YxOUEzMDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0pvYkNsYXNz
ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3
ODUwMTAyREUzNzU5MDFFQTQxMjIgLyogS1dRS0pvYkNsYXNzZXMubW0gKi87IH07CiAJCTkzRjE5
QTMxMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODUwMzAyREUzNzU5MDFFQTQxMjIgLyogS1dR
TG9hZGVyLm1tICovOyB9OwogCQk5M0YxOUEzMjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0xvY2Fs
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4
NTA0MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLTG9jYWxlLm1tICovOyB9OwotCQk5M0YxOUEzNjA4
MjQ1RTU5MDAxRTlBQkMgLyogS1dRS1VSTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTBFMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLVVJMLm1t
ICovOyB9OwogCQk5M0YxOUEzQTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTGluZUVkaXQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODUxMjAyREUz
NzU5MDFFQTQxMjIgLyogS1dRTGluZUVkaXQubW0gKi87IH07CiAJCTkzRjE5QTNCMDgyNDVFNTkw
MDFFOUFCQyAvKiBLV1FMaXN0Qm94Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjU4Nzg1MTQwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUxpc3RCb3gubW0g
Ki87IH07CiAJCTkzRjE5QTNDMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FMaXN0SW1wbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODUxNjAyREUz
NzU5MDFFQTQxMjIgLyogS1dRTGlzdEltcGwuY3BwICovOyB9OwpAQCAtMTE1Miw2ICsxMTUzLDkg
QEAKIAkJNjU4MkExNzcwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUVN0cmluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5MTJCMEQwNTg2OTIxMDAwMTIzQTY5IC8qIHhtbHNlcmlh
bGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0geG1sc2VyaWFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk2NTkxMkIwRTA1ODY5MjEwMDAxMjNBNjkgLyog
eG1sc2VyaWFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSB4bWxzZXJpYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyog
S1VSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gS1VSTC5jcHA7
IHBhdGggPSBwbGF0Zm9ybS9LVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEtVUkwuaDsgcGF0aCA9IHBsYXRmb3JtL0tVUkwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1VSTE1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJl
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVUcmVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVU
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgwLDcgKzIxODQsNiBAQAog
CQlGNTg3ODUwMTAyREUzNzU5MDFFQTQxMjIgLyogS1dRS0pvYkNsYXNzZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FLSm9i
Q2xhc3Nlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1ODc4NTAzMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FMb2FkZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBL
V1FMb2FkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODUwNDAyREUzNzU5MDFFQTQxMjIgLyogS1dRS0xvY2FsZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEtXUUtMb2NhbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotCQlGNTg3ODUwRTAyREUzNzU5MDFFQTQxMjIgLyogS1dRS1VSTC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEtXUUtVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODUxMjAyREUzNzU5MDFFQTQxMjIgLyogS1dRTGluZUVkaXQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBLV1FMaW5lRWRpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTEzMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FMaXN0Qm94
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtX
UUxpc3RCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1ODc4NTE0MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FMaXN0Qm94Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
S1dRTGlzdEJveC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC0yMjE5LDcgKzIyMjIsNiBAQAogCQlGNTg3ODVGMzAyREUzODIwMDFF
QTQxMjIgLyogS1dRS0NvbmZpZ0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRS0NvbmZpZ0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NUY0MDJERTM4MjAw
MUVBNDEyMiAvKiBLV1FLRGVidWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gS1dRS0RlYnVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODVGQTAyREUzODIwMDFFQTQxMjIg
LyogS1dRS0xvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBLV1FLTG9jYWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTg3ODYwMjAyREUzODIwMDFFQTQxMjIgLyogS1dR
S1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLV1FLVVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODYzQTAyREUzQTE0MDFFQTQxMjIgLyogS1dRS0hUTUxTZXR0aW5n
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBL
V1FLSFRNTFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODY0NTAyREUzQTc3MDFFQTQxMjIgLyogS1dRS0phdmFB
cHBsZXRXaWRnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS1dRS0phdmFBcHBsZXRXaWRnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NjQ5MDJERTNBOUEwMUVBNDEy
MiAvKiBLV1FLSU9HbG9iYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS1dRS0lPR2xvYmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMjM3Miw2ICsyMzc0LDcgQEAKIAkJCQk2
NTgyQTE1MDA5OTk5RDZEMDBCRUVCNkQgLyogSW50UmVjdE1hYy5tbSAqLywKIAkJCQk2NTgyQTE1
MTA5OTk5RDZEMDBCRUVCNkQgLyogSW50U2l6ZU1hYy5tbSAqLywKIAkJCQk2NTgyQTE1MjA5OTk5
RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTY1OTM5MjM5MDlBRTQz
NUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1tICovLAogCQkJCTY1ODJBMTUzMDk5OTlENkQwMEJFRUI2
RCAvKiBQREZEb2N1bWVudEltYWdlLm1tICovLAogCQkJCTY1ODJBMTc3MDk5OTlFQTAwMEJFRUI2
RCAvKiBRU3RyaW5nTWFjLm1tICovLAogCQkJCTY1MUI0RDhFMDlBQzg1OUYwMDI5RjFFRiAvKiBR
U3RyaW5nTGlzdE1hYy5tbSAqLywKQEAgLTMyOTAsNiArMzI5Myw4IEBACiAJCQkJQkNCMTZBRjgw
OTc5QTA4NTAwNDY3NzQxIC8qIEludFJlY3QuaCAqLywKIAkJCQlCQ0YxQTVFRjA5NzgzOTYwMDA2
MUExMjMgLyogSW50U2l6ZS5oICovLAogCQkJCUJDNkI3QkJCMDk5MzYxMUEwMDUyODY3QiAvKiBQ
REZEb2N1bWVudEltYWdlLmggKi8sCisJCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtV
UkwuY3BwICovLAorCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCiAJ
CQkJQkNDOEQxNzEwOTg4MzAxMjAwMTQwQkYyIC8qIFBlbi5jcHAgKi8sCiAJCQkJQkNDOEQxNzIw
OTg4MzAxMjAwMTQwQkYyIC8qIFBlbi5oICovLAogCQkJCTkzQ0Q0RkVCMDk5NUZEMkEwMDdFQ0M5
NyAvKiBQbGF0Zm9ybVN0cmluZy5oICovLApAQCAtMzc2Myw4ICszNzY4LDYgQEAKIAkJCQlGNTg3
ODVGNDAyREUzODIwMDFFQTQxMjIgLyogS1dRS0RlYnVnLmggKi8sCiAJCQkJRjU4Nzg1RkEwMkRF
MzgyMDAxRUE0MTIyIC8qIEtXUUtMb2NhbGUuaCAqLywKIAkJCQlGNTg3ODUwNDAyREUzNzU5MDFF
QTQxMjIgLyogS1dRS0xvY2FsZS5tbSAqLywKLQkJCQlGNTg3ODYwMjAyREUzODIwMDFFQTQxMjIg
LyogS1dRS1VSTC5oICovLAotCQkJCUY1ODc4NTBFMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLVVJM
Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBrZGVjb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTM5MjgsNyArMzkzMSw2IEBACiAJCQkJOTNGMTk5NUIwODI0NUU1OTAwMUU5QUJD
IC8qIEtXUUtMb2NhbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTYwMDgyNDVFNTkwMDFF
OUFCQyAvKiBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjE5OTYzMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLU1NMS2V5R2VuLmggaW4gSGVhZGVycyAqLywK
LQkJCQk5M0YxOTk2NzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS1VSTC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNGMTk5NkIwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUxpbmVFZGl0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0YxOTk2QzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTGlzdEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5NkQwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUxpc3RJbXBsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQzODgsNiArNDM5MCw3IEBACiAJCQkJRUQyQkE4M0MwOUEyNEI5
MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M0N0Uy
NzA5QTNENkYxMDBBREI3NzEgLyogRm9udEZhbWlseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUx
QjREODYwOUFDODMzNzAwMjlGMUVGIC8qIFFTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01
MDM2LDcgKzUwMzksNiBAQAogCQkJCTkzRjE5QTMwMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLSm9i
Q2xhc3Nlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTMxMDgyNDVFNTkwMDFFOUFCQyAv
KiBLV1FMb2FkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUEzMjA4MjQ1RTU5MDAxRTlB
QkMgLyogS1dRS0xvY2FsZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTkzRjE5QTM2MDgyNDVFNTkw
MDFFOUFCQyAvKiBLV1FLVVJMLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBM0EwODI0NUU1
OTAwMUU5QUJDIC8qIEtXUUxpbmVFZGl0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBM0Iw
ODI0NUU1OTAwMUU5QUJDIC8qIEtXUUxpc3RCb3gubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0Yx
OUEzQzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTGlzdEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC01NDk4LDYgKzU1MDAsOCBAQAogCQkJCUJDQzQ3RTI2MDlBM0Q2RjEwMEFEQjc3MSAvKiBGb250
RmFtaWx5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MUI0RDg1MDlBQzgzMzcwMDI5RjFFRiAv
KiBRU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTFCNEQ4RjA5QUM4NTlGMDAy
OUYxRUYgLyogUVN0cmluZ0xpc3RNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk2NTkzOTIzNzA5
QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTkzOTIzQTA5
QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTI5NTMpCisrKyBDaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAwNi0wMi0yMyAgTWFjaWVqIFN0
YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBNb3ZlIEtVUkwgZnJvbSBrd3EgdG8gcGxhdGZv
cm0sIG1ha2UgcG9ydGFibGUKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NDM3CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL2Nzc19ydWxlaW1wbC5jcHA6CisgICAgICAgICog
Y3NzL2Nzc3BhcnNlci5jcHA6CisgICAgICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEltcGwuaDoKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxf
YmFzZWltcGwuY3BwOgorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9kb2N1bWVudGltcGwuY3Bw
OgorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHA6CisgICAgICAgICoga2h0
bWwveGJsL3hibF9iaW5kaW5nLmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJ
bXBsLmNwcDoKKyAgICAgICAgKiBrd3EvS1dRVGV4dENvZGVjLmNwcDoKKyAgICAgICAgKFFUZXh0
Q29kZWM6OmNvZGVjRm9yTmFtZSk6CisgICAgICAgIChRVGV4dENvZGVjOjp1dGY4Q29kZWMpOgor
ICAgICAgICAoUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lRWlnaHRCaXRPbmx5KToKKyAgICAgICAg
KFFUZXh0Q29kZWM6OmNvZGVjRm9yTG9jYWxlKToKKyAgICAgICAgKFFUZXh0Q29kZWM6Om5hbWUp
OgorICAgICAgICAoUVRleHRDb2RlYzo6bWFrZURlY29kZXIpOgorICAgICAgICAqIGt3cS9LV1FU
ZXh0Q29kZWMuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkT2JqZWN0LmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRG9jTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
ICogcGxhdGZvcm0vS1VSTC5jcHA6IEFkZGVkLgorICAgICAgICAoS1VSTDo6ZGVjb2RlX3N0cmlu
Zyk6CisgICAgICAgIChlbmNvZGVSZWxhdGl2ZVN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0v
S1VSTC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbTogQWRkZWQu
CisgICAgICAgIChLVVJMOjpnZXROU1VSTCk6CisgICAgICAgICogeG1sL3htbGh0dHByZXF1ZXN0
Lmg6CisKIDIwMDYtMDItMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBjc3MvY3NzX3J1bGVpbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBjc3MvY3NzX3J1bGVpbXBsLmNwcAkocmV2aXNpb24gMTI5NTIpCisr
KyBjc3MvY3NzX3J1bGVpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgImNzc19zdHlsZXNoZWV0aW1wbC5oIgog
I2luY2x1ZGUgImNzc3BhcnNlci5oIgotI2luY2x1ZGUgPGt1cmwuaD4KKyNpbmNsdWRlIDxLVVJM
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogY3NzL2Nzc3BhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDEyOTUyKQorKysgY3NzL2Nz
c3BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJj
c3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiY3NzdmFsdWVzLmgiCiAjaW5jbHVkZSAiaGVscGVy
LmgiCi0jaW5jbHVkZSA8a3VybC5oPgorI2luY2x1ZGUgPEtVUkwuaD4KICNpbmNsdWRlIDxreG1s
Y29yZS9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKSW5kZXg6IGNzcy9jc3Nz
dHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJ
KHJldmlzaW9uIDEyOTUyKQorKysgY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAicmVuZGVyX3N0eWxlLmgiCiAjaW5jbHVk
ZSAicmVuZGVyX3RoZW1lLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8a3VybC5o
PgorI2luY2x1ZGUgPEtVUkwuaD4KICNpbmNsdWRlIDxreG1sY29yZS9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8UVN0cmluZy5oPgogI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KSW5kZXg6IGtzdmcyL3N2
Zy9TVkdEb2N1bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdEb2N1bWVu
dEltcGwuY3BwCShyZXZpc2lvbiAxMjk1MikKKysrIGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgU1ZHX1NVUFBPUlQKICNp
bmNsdWRlIDxhc3NlcnQuaD4KIAotI2luY2x1ZGUgPGt1cmwuaD4KKyNpbmNsdWRlIDxLVVJMLmg+
CiAjaW5jbHVkZSA8a2xvY2FsZS5oPgogCiAjaW5jbHVkZSA8a2RvbS9IZWxwZXIuaD4KSW5kZXg6
IHhtbC94bWxodHRwcmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHhtbC94bWxodHRwcmVxdWVzdC5o
CShyZXZpc2lvbiAxMjk1MikKKysrIHhtbC94bWxodHRwcmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIFhNTEhUVFBSRVFVRVNUX0hfCiAjZGVmaW5lIFhN
TEhUVFBSRVFVRVNUX0hfCiAKLSNpbmNsdWRlIDxrdXJsLmg+CisjaW5jbHVkZSA8S1VSTC5oPgog
I2luY2x1ZGUgPGt4bWxjb3JlL0hhc2hNYXAuaD4KICNpbmNsdWRlIDxreG1sY29yZS9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8cWd1YXJkZWRwdHIuaD4KSW5kZXg6IGt3cS9LV1FUZXh0Q29kZWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGt3cS9LV1FUZXh0Q29kZWMuY3BwCShyZXZpc2lvbiAxMjk1MikKKysr
IGt3cS9LV1FUZXh0Q29kZWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxNCArOTksMTkgQEAg
c3RhdGljIFFUZXh0Q29kZWMgKmNvZGVjRm9yQ0ZTdHJpbmdFbmNvZAogICAgIHJldHVybiBjb2Rl
YzsKIH0KIAotUVRleHRDb2RlYyAqUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKGNvbnN0IGNoYXIg
Km5hbWUpCitRVGV4dENvZGVjKiBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoY29uc3QgY2hhciog
bmFtZSkKIHsKICAgICBLV1FFbmNvZGluZ0ZsYWdzIGZsYWdzOwogICAgIENGU3RyaW5nRW5jb2Rp
bmcgZW5jb2RpbmcgPSBLV1FDRlN0cmluZ0VuY29kaW5nRnJvbUlBTkFDaGFyc2V0TmFtZShuYW1l
LCAmZmxhZ3MpOwogICAgIHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoZW5jb2Rpbmcs
IGZsYWdzKTsKIH0KIAotUVRleHRDb2RlYyAqUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lRWlnaHRC
aXRPbmx5KGNvbnN0IGNoYXIgKm5hbWUpCitRVGV4dENvZGVjKiBRVGV4dENvZGVjOjp1dGY4Q29k
ZWMoKQoreworICAgIHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2Rpbmcoa0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCBOb0VuY29kaW5nRmxhZ3MpOworfQorCitRVGV4dENvZGVjKiBRVGV4dENvZGVj
Ojpjb2RlY0Zvck5hbWVFaWdodEJpdE9ubHkoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBLV1FF
bmNvZGluZ0ZsYWdzIGZsYWdzOwogICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBLV1FD
RlN0cmluZ0VuY29kaW5nRnJvbUlBTkFDaGFyc2V0TmFtZShuYW1lLCAmZmxhZ3MpOwpAQCAtMTE4
LDE3ICsxMjMsMTcgQEAgUVRleHRDb2RlYyAqUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lRWlnaAog
ICAgIHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoZW5jb2RpbmcsIGZsYWdzKTsKIH0K
IAotUVRleHRDb2RlYyAqUVRleHRDb2RlYzo6Y29kZWNGb3JMb2NhbGUoKQorUVRleHRDb2RlYyog
UVRleHRDb2RlYzo6Y29kZWNGb3JMb2NhbGUoKQogewogICAgIHJldHVybiBjb2RlY0ZvckNGU3Ry
aW5nRW5jb2RpbmcoQ0ZTdHJpbmdHZXRTeXN0ZW1FbmNvZGluZygpLCBOb0VuY29kaW5nRmxhZ3Mp
OwogfQogCi1jb25zdCBjaGFyICpRVGV4dENvZGVjOjpuYW1lKCkgY29uc3QKK2NvbnN0IGNoYXIq
IFFUZXh0Q29kZWM6Om5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBLV1FDRlN0cmluZ0VuY29k
aW5nVG9JQU5BQ2hhcnNldE5hbWUoX2VuY29kaW5nKTsKIH0KIAotUVRleHREZWNvZGVyICpRVGV4
dENvZGVjOjptYWtlRGVjb2RlcigpIGNvbnN0CitRVGV4dERlY29kZXIqIFFUZXh0Q29kZWM6Om1h
a2VEZWNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbmV3IEtXUVRleHREZWNvZGVyKF9lbmNv
ZGluZywgX2ZsYWdzKTsKIH0KSW5kZXg6IGt3cS9LV1FUZXh0Q29kZWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrd3EvS1dRVGV4dENvZGVjLmgJKHJldmlzaW9uIDEyOTUyKQorKysga3dxL0tXUVRleHRDb2Rl
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCwxMCBAQCBjbGFzcyBRVGV4dERlY29kZXI7
CiAKIGNsYXNzIFFUZXh0Q29kZWMgewogcHVibGljOgotICAgIHN0YXRpYyBRVGV4dENvZGVjICpj
b2RlY0Zvck5hbWUoY29uc3QgY2hhciAqKTsKLSAgICBzdGF0aWMgUVRleHRDb2RlYyAqY29kZWNG
b3JOYW1lRWlnaHRCaXRPbmx5KGNvbnN0IGNoYXIgKik7Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMg
KmNvZGVjRm9yTG9jYWxlKCk7CisgICAgc3RhdGljIFFUZXh0Q29kZWMqIGNvZGVjRm9yTmFtZShj
b25zdCBjaGFyICopOworICAgIHN0YXRpYyBRVGV4dENvZGVjKiBjb2RlY0Zvck5hbWVFaWdodEJp
dE9ubHkoY29uc3QgY2hhciAqKTsKKyAgICBzdGF0aWMgUVRleHRDb2RlYyogY29kZWNGb3JMb2Nh
bGUoKTsKKyAgICBzdGF0aWMgUVRleHRDb2RlYyogdXRmOENvZGVjKCk7CiAKICNpZiBfX0FQUExF
X18KICAgICBleHBsaWNpdCBRVGV4dENvZGVjKENGU3RyaW5nRW5jb2RpbmcgZSwgS1dRRW5jb2Rp
bmdGbGFncyBmID0gTm9FbmNvZGluZ0ZsYWdzKSA6IF9lbmNvZGluZyhlKSwgX2ZsYWdzKGYpIHsg
fQpJbmRleDogbG9hZGVyL0NhY2hlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0Nh
Y2hlZE9iamVjdC5jcHAJKHJldmlzaW9uIDEyOTUyKQorKysgbG9hZGVyL0NhY2hlZE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRPYmpl
Y3QuaCIKIAogI2luY2x1ZGUgIkNhY2hlLmgiCi0jaW5jbHVkZSA8a3VybC5oPgorI2luY2x1ZGUg
PEtVUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBsb2FkZXIvRG9jTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gMTI5NTIp
CisrKyBsb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QAogI2luY2x1ZGUgIktXUUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAKLSNpbmNsdWRl
IDxrdXJsLmg+CisjaW5jbHVkZSA8S1VSTC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5k
ZXg6IHBhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEy
OTUyKQorKysgcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiZWRpdF9hY3Rpb25zLmgiCiAjaW5jbHVkZSAidGV4dF9hZmZpbml0eS5oIgogI2lu
Y2x1ZGUgInRleHRfZ3JhbnVsYXJpdHkuaCIKLSNpbmNsdWRlIDxrdXJsLmg+CisjaW5jbHVkZSA8
S1VSTC5oPgogI2luY2x1ZGUgPHFzY3JvbGxiYXIuaD4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdC5o
PgogI2luY2x1ZGUgPGt4bWxjb3JlL05vbmNvcHlhYmxlLmg+Cg==
</data>
<flag name="review"
          id="1691"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>