<?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>162711</bug_id>
          
          <creation_ts>2016-09-28 19:10:51 -0700</creation_ts>
          <short_desc>URLParser should ignore tabs at all possible locations</short_desc>
          <delta_ts>2016-09-29 11:20:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1234662</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-28 19:10:51 -0700</bug_when>
    <thetext>URLParser should ignore tabs at all possible locations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234663</commentid>
    <comment_count>1</comment_count>
      <attachid>290161</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-28 19:14:11 -0700</bug_when>
    <thetext>Created attachment 290161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234664</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-28 19:17:04 -0700</bug_when>
    <thetext>Attachment 290161 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234688</commentid>
    <comment_count>3</comment_count>
      <attachid>290171</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-28 20:36:13 -0700</bug_when>
    <thetext>Created attachment 290171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1234874</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-29 11:20:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/206592</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290161</attachid>
            <date>2016-09-28 19:14:11 -0700</date>
            <delta_ts>2016-09-28 20:36:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162711-20160928191110.patch</filename>
            <type>text/plain</type>
            <size>24715</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA5LTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBpZ25vcmUgdGFicyBhdCBhbGwgcG9zc2libGUgbG9jYXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1dp
bmRvd3NEcml2ZUxldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmFwcGVuZFdp
bmRvd3NEcml2ZUxldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzUGVyY2Vu
dEVuY29kZWREb3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NpbmdsZURvdFBh
dGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRo
U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQ
YXRoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVE
b3RQYXRoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNBdExvY2FsaG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzTG9jYWxob3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNQZXJjZW50RW5jb2RlZERvdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzRG91YmxlRG90UGF0aFNlZ21lbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxQ
YXJzZXI6OmFkdmFuY2UpOgorCiAyMDE2LTA5LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJMUGFyc2VyIHNob3VsZCBwcm9wZXJseSBo
YW5kbGUgdW5leHBlY3RlZCBwZXJpb2RzIGFuZCBvdmVyZmxvd3MgaW4gSVB2NCBhZGRyZXNzZXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjA2NTU0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE0LDEyICs0MTQsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
QUxXQVlTXwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBz
dGF0aWMgYm9vbCBpc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KSB7IHJldHVybiBjaGFyYWN0ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFj
dGVyXSAmIFNjaGVtZTsgfQogc3RhdGljIGJvb2wgc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0
ZSh1aW50OF90IGJ5dGUpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVy
eVBlcmNlbnQ7IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9u
IHJlcG9ydFN5bnRheFZpb2xhdGlvbj4KIEFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFk
dmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbikKIHsKICAgICArK2l0ZXJhdG9yOwogICAgIHdoaWxlIChVTkxJS0VMWSghaXRl
cmF0b3IuYXRFbmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgewotICAgICAgICBz
eW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAg
ICAgIGlmIChyZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZ
ZXMpCisgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbik7CiAgICAgICAgICsraXRlcmF0b3I7CiAgICAgfQogfQpAQCAtNDI5LDE1ICs0
MzAsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRAogewogICAg
IGlmIChpdGVyYXRvci5hdEVuZCgpIHx8ICFpc0FTQ0lJQWxwaGEoKml0ZXJhdG9yKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwogICAgIGlm
IChpdGVyYXRvci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCppdGVy
YXRvciA9PSAnOicpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChVTkxJS0VMWSgqaXRl
cmF0b3IgPT0gJ3wnKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAg
IGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0gJ3wnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDY0LDYgKzQ2Myw4IEBAIHZvaWQgVVJM
UGFyc2VyOjphcHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIKICAgICBhZHZhbmNlKGl0ZXJhdG9yKTsK
ICAgICBBU1NFUlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwogICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0g
JzonIHx8ICppdGVyYXRvciA9PSAnfCcpOworICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQorICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOwogICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
JzonKTsKICAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKIH0KQEAgLTgxOCw2MiArODE5LDYyIEBAIHZv
aWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKIHN0YXRpYyBjb25zdCBjaGFy
KiBkb3RBU0NJSUNvZGUgPSAiMmUiOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2Vy
Ojppc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMp
CiB7CiAgICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgq
YyAhPSAnJScpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICArK2M7CisgICAgYWR2YW5jZTxD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKICAgICBpZiAoYy5h
dEVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCpjICE9IGRvdEFTQ0lJQ29k
ZVswXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5k
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdG9BU0NJSUxvd2VyKCpjKSA9
PSBkb3RBU0NJSUNvZGVbMV07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJz
ZXI6OmlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gYykKIHsKICAgICBpZiAoYy5hdEVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCpjID09ICcuJykgewotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAgICAgICAgIHJldHVybiBjLmF0
RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKICAgICB9CiAgICAgaWYgKCpjICE9
ICclJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJh
Y3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5k
KCkgfHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
KytjOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpO
bz4oYyk7CiAgICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICArK2M7Cisg
ICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
Yyk7CiAgICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpj
KTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0RvdWJsZURvdFBhdGhTZWdt
ZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCitBTFdBWVNfSU5MSU5FIGJv
b2wgVVJMUGFyc2VyOjppc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGMpCiB7CiAgICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICgqYyA9PSAnLicpIHsKLSAgICAgICAgKytjOworICAgICAgICBhZHZhbmNl
PENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgICAgICBy
ZXR1cm4gaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKICAgICB9CiAgICAgaWYgKCpjICE9ICcl
JykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5kKCkg
fHwgKmMgIT0gZG90QVNDSUlDb2RlWzBdKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKytj
OworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4o
Yyk7CiAgICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0
b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewpAQCAtODg0LDI3ICs4ODUsMjcg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0RvdWJsZURvdFBhdAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHZvaWQgY29uc3VtZVNpbmdsZURvdFBh
dGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQordm9pZCBVUkxQ
YXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYgYykKIHsKICAgICBBU1NFUlQoaXNTaW5nbGVEb3RQYXRoU2VnbWVudChjKSk7
CiAgICAgaWYgKCpjID09ICcuJykgewotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2UoYyk7
CiAgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CiAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
ICpjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/
JyB8fCAqYyA9PSAnIycpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KCpjID09ICclJyk7Ci0gICAgICAgICsrYzsKKyAgICAgICAgYWR2YW5jZShjKTsKICAgICAgICAg
QVNTRVJUKCpjID09IGRvdEFTQ0lJQ29kZVswXSk7Ci0gICAgICAgICsrYzsKKyAgICAgICAgYWR2
YW5jZShjKTsKICAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlcigqYykgPT0gZG90QVNDSUlDb2Rl
WzFdKTsKLSAgICAgICAgKytjOworICAgICAgICBhZHZhbmNlKGMpOwogICAgICAgICBpZiAoIWMu
YXRFbmQoKSkgewogICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKQotICAg
ICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBhZHZhbmNlKGMpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKTsK
ICAgICAgICAgfQpAQCAtOTEyLDE4ICs5MTMsMTggQEAgc3RhdGljIHZvaWQgY29uc3VtZVNpbmds
ZURvdFBhdGhTZWdtZW50KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
c3RhdGljIHZvaWQgY29uc3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBjKQordm9pZCBVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRo
U2VnbWVudChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgYykKIHsKICAgICBBU1NF
UlQoaXNEb3VibGVEb3RQYXRoU2VnbWVudChjKSk7CiAgICAgaWYgKCpjID09ICcuJykKLSAgICAg
ICAgKytjOworICAgICAgICBhZHZhbmNlKGMpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQo
KmMgPT0gJyUnKTsKLSAgICAgICAgKytjOworICAgICAgICBhZHZhbmNlKGMpOwogICAgICAgICBB
U1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKLSAgICAgICAgKytjOworICAgICAgICBhZHZh
bmNlKGMpOwogICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJSUNvZGVb
MV0pOwotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2UoYyk7CiAgICAgfQogICAgIGNvbnN1
bWVTaW5nbGVEb3RQYXRoU2VnbWVudChjKTsKIH0KQEAgLTk5MSw2ICs5OTIsNDYgQEAgdm9pZCBV
UkxQYXJzZXI6OmZhaWx1cmUoKQogICAgIG1fdXJsLm1fc3RyaW5nID0gbV9pbnB1dFN0cmluZzsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgVVJMUGFyc2VyOjpj
aGVja0xvY2FsaG9zdENvZGVQb2ludChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIFVDaGFyMzIgY29kZVBvaW50KQoreworICAgIGlmIChpdGVyYXRvci5hdEVuZCgp
IHx8IHRvQVNDSUlMb3dlcigqaXRlcmF0b3IpICE9IGNvZGVQb2ludCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpObz4oaXRlcmF0b3IpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBVUkxQYXJzZXI6OmlzQXRMb2NhbGhvc3QoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCit7CisgICAgaWYgKCFjaGVja0xvY2Fs
aG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdvJykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAn
YycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQ
b2ludChpdGVyYXRvciwgJ2EnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hl
Y2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICdsJykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnaCcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVy
YXRvciwgJ28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhv
c3RDb2RlUG9pbnQoaXRlcmF0b3IsICdzJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAndCcpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGl0ZXJhdG9yLmF0RW5kKCk7Cit9CisKK2Jvb2wgVVJMUGFy
c2VyOjppc0xvY2FsaG9zdChTdHJpbmdWaWV3IHZpZXcpCit7CisgICAgaWYgKHZpZXcuaXM4Qml0
KCkpCisgICAgICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPExDaGFy
Pih2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcuY2hhcmFjdGVyczgoKSArIHZpZXcubGVuZ3RoKCkp
KTsKKyAgICByZXR1cm4gaXNBdExvY2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxVQ2hhcj4odmll
dy5jaGFyYWN0ZXJzMTYoKSwgdmlldy5jaGFyYWN0ZXJzMTYoKSArIHZpZXcubGVuZ3RoKCkpKTsK
K30KKwogQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IFVSTFBhcnNlcjo6cGFyc2VkRGF0YVZpZXco
c2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChVTkxJS0VMWShtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikpIHsKQEAgLTEwMjgsOSArMTA2OSwyMCBAQCBVUkxQYXJzZXI6OlVS
TFBhcnNlcihjb25zdCBTdHJpbmcmIGlucHV0CiAgICAgICAgIG1faW5wdXRCZWdpbiA9IGlucHV0
LmNoYXJhY3RlcnMxNigpOwogICAgICAgICBwYXJzZShpbnB1dC5jaGFyYWN0ZXJzMTYoKSwgaW5w
dXQubGVuZ3RoKCksIGJhc2UsIGVuY29kaW5nKTsKICAgICB9CisKICAgICBBU1NFUlQoIW1fdXJs
Lm1faXNWYWxpZAogICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwu
c3RyaW5nKCkgIT0gaW5wdXQpCiAgICAgICAgIHx8IChpbnB1dC5pc0VtcHR5KCkgJiYgbV91cmwu
bV9zdHJpbmcgPT0gYmFzZS5tX3N0cmluZykpOworICAgIEFTU0VSVChpbnRlcm5hbFZhbHVlc0Nv
bnNpc3RlbnQobV91cmwpKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKCFtX2RpZFNl
ZVN5bnRheFZpb2xhdGlvbikgeworICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2aW9sYXRpb24g
YXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdC4KKyAg
ICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBiYXNlLCBlbmNv
ZGluZyk7CisgICAgICAgIFVSTCBwYXJzZWQgPSBwYXJzZXIucmVzdWx0KCk7CisgICAgICAgIGlm
IChwYXJzZWQuaXNWYWxpZCgpKQorICAgICAgICAgICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBh
cnNlci5yZXN1bHQoKSwgbV91cmwpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEzNDIsMjMgKzEzOTQsMjUgQEAgdm9pZCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgfSB3aGlsZSAoIWMuYXRF
bmQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6SG9zdDoKLSAg
ICAgICAgICAgIExPR19TVEFURSgiSG9zdCIpOwotICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8
fCAqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhv
c3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9z
dEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICgqYyA9PSAnPycgfHwgKmMgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycp
OwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJl
bnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RB
VEUoIkhvc3QiKTsKKyAgICAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8ICpjID09ICc/JyB8
fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBj
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAoKmMgPT0gJz8nIHx8ICpjID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9B
U0NJSUJ1ZmZlcignLycpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0
ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYyk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXRlID0g
U3RhdGU6OlBhdGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgbV9o
b3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOwotICAgICAgICAgICAgKytjOworICAgICAg
ICAgICAgICAgIGlmIChpc1BlcmNlbnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAg
ICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsr
YzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgU3RhdGU6OkZpbGU6CiAgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGUi
KTsKQEAgLTE0MjYsOCArMTQ4MCw4IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFy
YWN0ZXJUeXAKICAgICAgICAgICAgIGlmIChMSUtFTFkoKmMgPT0gJy8nIHx8ICpjID09ICdcXCcp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICdcXCcpKQogICAgICAgICAg
ICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgKytjOwogICAg
ICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAgICBh
ZHZhbmNlKGMpOwogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlclN0YXJ0ID0gY3VycmVudFBv
c2l0aW9uKGMpOwogICAgICAgICAgICAgICAgIG1fdXJsLm1fdXNlckVuZCA9IG1fdXJsLm1fdXNl
clN0YXJ0OwogICAgICAgICAgICAgICAgIG1fdXJsLm1fcGFzc3dvcmRFbmQgPSBtX3VybC5tX3Vz
ZXJTdGFydDsKQEAgLTE0NjMsNTUgKzE1MTcsNTcgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNv
bnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpGaWxlSG9zdDoKLSAgICAgICAgICAg
IExPR19TVEFURSgiRmlsZUhvc3QiKTsKLSAgICAgICAgICAgIGlmIChpc1NsYXNoUXVlc3Rpb25P
ckhhc2goKmMpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCB3aW5kb3dzUXVpcmsgPSBjLmNvZGVV
bml0c1NpbmNlKGF1dGhvcml0eU9ySG9zdEJlZ2luKSA9PSAyICYmIGlzV2luZG93c0RyaXZlTGV0
dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1
aXJrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihhdXRob3JpdHlPckhv
c3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsK
LSAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9y
SG9zdEJlZ2luKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRv
d3NRdWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh3aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVudFBvc2l0aW9u
KGMpIC0gMSwgMSkgPT0gIi8iKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpj
ID09ICc/JykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihjKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoIi8/IiwgMik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Vy
bC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAtIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RT
bGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlF1ZXJ5OworICAg
ICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIExPR19TVEFURSgiRmlsZUhvc3QiKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKSkgeworICAgICAgICAg
ICAgICAgICAgICBib29sIHdpbmRvd3NRdWlyayA9IGMuY29kZVVuaXRzU2luY2UoYXV0aG9yaXR5
T3JIb3N0QmVnaW4pID09IDIgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYXV0aG9yaXR5T3JIb3N0
QmVnaW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93c1F1aXJrKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLycpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9z
dEJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93c1F1aXJrIHx8IGF1dGhvcml0eU9ySG9zdEJlZ2luID09IGMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCh3aW5kb3dzUXVpcmsgfHwgcGFyc2VkRGF0YVZpZXcoY3VycmVu
dFBvc2l0aW9uKGMpIC0gMSwgMSkgPT0gIi8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWSgqYyA9PSAnPycpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lu
dGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVND
SUlCdWZmZXIoIi8/IiwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytjOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3Vy
cmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5t
X3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpRdWVyeTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3ludGF4VmlvbGF0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFRvQVNDSUlCdWZmZXIoIi8jIiwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KytjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gY3VycmVudFBvc2l0aW9uKGMpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3F1ZXJ5RW5kID0gbV91cmwubV9wYXRoQWZ0ZXJM
YXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJh
Z21lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRo
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCpjID09ICcjJykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KGF1dGhvcml0eU9ySG9zdEJlZ2luLCBjKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWx1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMb2Nh
bGhvc3QocGFyc2VkRGF0YVZpZXcobV91cmwubV9wYXNzd29yZEVuZCwgY3VycmVudFBvc2l0aW9u
KGMpIC0gbV91cmwubV9wYXNzd29yZEVuZCkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJ
SUJ1ZmZlcigiLyMiLCAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoID0gY3VycmVudFBvc2l0
aW9uKGMpIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEVuZCA9IG1f
dXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1f
dXJsLm1fcGFzc3dvcmRFbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9ob3N0
RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlSG9zdEFuZFBvcnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4oYXV0
aG9yaXR5T3JIb3N0QmVnaW4sIGMpKSkgewotICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcnNl
ZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1fdXJs
Lm1fcGFzc3dvcmRFbmQpLCAibG9jYWxob3N0IikpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgbV9hc2NpaUJ1ZmZlci5zaHJp
bmsobV91cmwubV9wYXNzd29yZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9z
dEVuZCA9IGN1cnJlbnRQb3NpdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgbV91cmwubV9w
b3J0RW5kID0gbV91cmwubV9ob3N0RW5kOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoU3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNQZXJjZW50
T3JOb25BU0NJSSgqYykpCi0gICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9yTm9uQVND
SUkgPSB0cnVlOwotICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGlmIChpc1BlcmNl
bnRPck5vbkFTQ0lJKCpjKSkKKyAgICAgICAgICAgICAgICAgICAgbV9ob3N0SGFzUGVyY2VudE9y
Tm9uQVNDSUkgPSB0cnVlOworICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgIH0gd2hp
bGUgKCFjLmF0RW5kKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6
OlBhdGhTdGFydDoKICAgICAgICAgICAgIExPR19TVEFURSgiUGF0aFN0YXJ0Iik7CkBAIC0xNzc3
LDcgKzE4MzMsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAg
ICAgICAgIH0KIAogICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3Jk
RW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSwgImxvY2FsaG9z
dCIpKSB7CisgICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bh
c3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsK
ICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwog
ICAgICAgICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwogICAgICAg
ICAgICAgbV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOwpAQCAtMTgzNSw3ICsxODkx
LDYgQEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgIH0KICAg
ICBtX3VybC5tX2lzVmFsaWQgPSB0cnVlOwogICAgIExPRyhVUkxQYXJzZXIsICJQYXJzZWQgVVJM
IDwlcz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoaW50ZXJu
YWxWYWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkocmV2aXNpb24g
MjA2NTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDEyICs2NiwyMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgcGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CiAKICAgICB2b2lkIGZhaWx1cmUoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGl0ZXJhdG9yKSB7IGFkdmFuY2UoaXRlcmF0b3IsIGl0ZXJhdG9yKTsgfQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBlbnVtIGNsYXNzIFJl
cG9ydFN5bnRheFZpb2xhdGlvbiB7IE5vLCBZZXMgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9u
ID0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikgeyBhZHZhbmNlPENoYXJhY3RlclR5
cGUsIHJlcG9ydFN5bnRheFZpb2xhdGlvbj4oaXRlcmF0b3IsIGl0ZXJhdG9yKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHZvaWQgZnJhZ21lbnRTeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIGlzUGVyY2VudEVuY29kZWREb3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNXaW5k
b3dzRHJpdmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNTaW5nbGVEb3RQYXRoU2VnbWVu
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIHNob3VsZENvcHlGaWxlVVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGNoZWNrTG9j
YWxob3N0Q29kZVBvaW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgVUNoYXIz
Mik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0F0TG9jYWxo
b3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICBib29sIGlzTG9jYWxo
b3N0KFN0cmluZ1ZpZXcpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25z
dW1lRG91YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4m
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZFdpbmRv
d3NEcml2ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCBjdXJyZW50UG9zaXRpb24oY29u
c3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPiB2b2lkIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIo
VW5zaWduZWRJbnRlZ2VyVHlwZSk7CkBAIC05Miw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHVz
aW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXpl
SVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoVVJMUGFy
c2VyOjpJUHY2QWRkcmVzcyk7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2KElQdjZBZGRyZXNzKTsK
IAogICAgIGVudW0gY2xhc3MgVVJMUGFydDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiB2b2lkIGNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYgYmFzZSwgVVJMUGFydCwg
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjU3NCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTA5LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVVJMUGFyc2VyIHNob3VsZCBpZ25vcmUgdGFicyBhdCBhbGwgcG9zc2libGUgbG9jYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6RXhwZWN0ZWRQYXJ0czo6aXNJbnZhbGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTYt
MDktMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVBJIHRlc3QgV2ViS2l0Mi5BdXRvTGF5b3V0SW50ZWdyYXRpb24gaXMgYSBmbGFreSB0aW1lb3V0
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2Vy
LmNwcAkocmV2aXNpb24gMjA2NTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1VSTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDE4IEBAIHN0cnVj
dCBFeHBlY3RlZFBhcnRzIHsKICAgICBTdHJpbmcgcXVlcnk7CiAgICAgU3RyaW5nIGZyYWdtZW50
OwogICAgIFN0cmluZyBzdHJpbmc7CisKKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gcHJvdG9jb2wuaXNFbXB0eSgpCisgICAgICAgICAgICAmJiB1c2Vy
LmlzRW1wdHkoKQorICAgICAgICAgICAgJiYgcGFzc3dvcmQuaXNFbXB0eSgpCisgICAgICAgICAg
ICAmJiBob3N0LmlzRW1wdHkoKQorICAgICAgICAgICAgJiYgIXBvcnQKKyAgICAgICAgICAgICYm
IHBhdGguaXNFbXB0eSgpCisgICAgICAgICAgICAmJiBxdWVyeS5pc0VtcHR5KCkKKyAgICAgICAg
ICAgICYmIGZyYWdtZW50LmlzRW1wdHkoKTsKKyAgICB9CiB9OwogCiBzdGF0aWMgYm9vbCBlcShj
b25zdCBTdHJpbmcmIHMxLCBjb25zdCBTdHJpbmcmIHMyKQpAQCAtNTcsNyArNjksNyBAQCBzdGF0
aWMgYm9vbCBlcShjb25zdCBTdHJpbmcmIHMxLCBjb25zdCBTCiAgICAgcmV0dXJuIHMxLnV0Zjgo
KSA9PSBzMi51dGY4KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cykKK3N0YXRpYyB2b2lkIGNoZWNr
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywg
Ym9vbCBjaGVja1RhYnMgPSB0cnVlKQogewogICAgIGJvb2wgd2FzRW5hYmxlZCA9IFVSTFBhcnNl
cjo6ZW5hYmxlZCgpOwogICAgIFVSTFBhcnNlcjo6c2V0RW5hYmxlZCh0cnVlKTsKQEAgLTg5LDYg
KzEwMSwxNCBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0CiAgICAg
RVhQRUNUX1RSVUUoVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbCh1cmwsIG9sZFVSTCkpOwogICAg
IEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwog
ICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG9sZFVS
TCkpOworCisgICAgaWYgKGNoZWNrVGFicykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHVybFN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgdXJsU3Ry
aW5nV2l0aFRhYiA9IG1ha2VTdHJpbmcodXJsU3RyaW5nLnN1YnN0cmluZygwLCBpKSwgIlx0Iiwg
dXJsU3RyaW5nLnN1YnN0cmluZyhpKSk7CisgICAgICAgICAgICBFeHBlY3RlZFBhcnRzIGludmFs
aWRQYXJ0c1dpdGhUYWIgPSB7IiIsICIiLCAiIiwgIiIsIDAsICIiICwgIiIsICIiLCB1cmxTdHJp
bmdXaXRoVGFifTsKKyAgICAgICAgICAgIGNoZWNrVVJMKHVybFN0cmluZ1dpdGhUYWIsIHBhcnRz
LmlzSW52YWxpZCgpID8gaW52YWxpZFBhcnRzV2l0aFRhYiA6IHBhcnRzLCBmYWxzZSk7CisgICAg
ICAgIH0KKyAgICB9CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+CkBAIC04NTksMTMgKzg3
OSwxMyBAQCBURVNUX0YoVVJMUGFyc2VyVGVzdCwgQWRkaXRpb25hbFRlc3RzKQogICAgICAgICB7
IndzIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgIndzOiJ9LAogICAgICAgICB7IndzIiwg
IiIsICIiLCAiIiwgMCwgInM6IiwgIiIsICIiLCAid3M6czoifSk7CiAgICAgY2hlY2tSZWxhdGl2
ZVVSTCgibm90c3BlY2lhbDoiLCAiaHR0cDovL2V4YW1wbGUub3JnL2Zvby9iYXIiLCB7Im5vdHNw
ZWNpYWwiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCAibm90c3BlY2lhbDoifSk7Ci0gICAg
CisKICAgICBjb25zdCB3Y2hhcl90IHN1cnJvZ2F0ZUJlZ2luID0gMHhEODAwOwogICAgIGNvbnN0
IHdjaGFyX3QgdmFsaWRTdXJyb2dhdGVFbmQgPSAweERENTU7CiAgICAgY29uc3Qgd2NoYXJfdCBp
bnZhbGlkU3Vycm9nYXRlRW5kID0gJ0EnOwogICAgIGNoZWNrVVJMKHV0ZjE2U3RyaW5nPDEyPih7
J2gnLCAndCcsICd0JywgJ3AnLCAnOicsICcvJywgJy8nLCAndycsICcvJywgc3Vycm9nYXRlQmVn
aW4sIHZhbGlkU3Vycm9nYXRlRW5kLCAnXDAnfSksCi0gICAgICAgIHsiaHR0cCIsICIiLCAiIiwg
InciLCAwLCAiLyVGMCU5MCU4NSU5NSIsICIiLCAiIiwgImh0dHA6Ly93LyVGMCU5MCU4NSU5NSJ9
KTsKLSAgICAKKyAgICAgICAgeyJodHRwIiwgIiIsICIiLCAidyIsIDAsICIvJUYwJTkwJTg1JTk1
IiwgIiIsICIiLCAiaHR0cDovL3cvJUYwJTkwJTg1JTk1In0sIGZhbHNlKTsKKwogICAgIC8vIFVS
TFBhcnNlciBtYXRjaGVzIENocm9tZSBhbmQgRmlyZWZveCBidXQgbm90IFVSTDo6cGFyc2UuCiAg
ICAgY2hlY2tVUkxEaWZmZXJlbmNlcyh1dGYxNlN0cmluZzwxMj4oeydoJywgJ3QnLCAndCcsICdw
JywgJzonLCAnLycsICcvJywgJ3cnLCAnLycsIHN1cnJvZ2F0ZUJlZ2luLCBpbnZhbGlkU3Vycm9n
YXRlRW5kfSksCiAgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgInciLCAwLCAiLyVFRiVCRiVCREEi
LCAiIiwgIiIsICJodHRwOi8vdy8lRUYlQkYlQkRBIn0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290171</attachid>
            <date>2016-09-28 20:36:13 -0700</date>
            <delta_ts>2016-09-29 11:17:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162711-20160928203313.patch</filename>
            <type>text/plain</type>
            <size>29293</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjU1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA5LTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBpZ25vcmUgdGFicyBhdCBhbGwgcG9zc2libGUgbG9jYXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgVVJMIHNwZWMgc2F5cyB0
byByZW1vdmUgYWxsIHRhYnMgYW5kIG5ld2xpbmVzIGJlZm9yZSBwYXJzaW5nIGEgVVJMLgorICAg
ICAgICBUbyByZWR1Y2UgcGFzc2VzIG9uIHRoZSBVUkwgYW5kIGNvcGllcyBvZiBkYXRhLCBJIGNo
b3NlIHRvIGp1c3QgaWdub3JlIHRoZW0gZXZlcnkgdGltZSBJIGluY3JlbWVudCB0aGUgaXRlcmF0
b3IuCisgICAgICAgIFRoaXMgaXMgZnJhZ2lsZSwgYnV0IGZhc3Rlci4gIEl0IGNhbiBiZSBjb21w
bGV0ZWx5IHRlc3RlZCwgdGhvdWdoLiAgVGhhdCBpcyB3aGF0IHRoaXMgcGF0Y2ggZG9lcy4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGFuIGFkZGl0aW9uIHRvIHRoZSBBUEkgdGVzdHMgdGhhdCB0cmll
cyBpbnNlcnRpbmcgb25lIHRhYiBhdCBlYWNoIGxvY2F0aW9uIG9mIGVhY2ggdGVzdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1dpbmRvd3NEcml2
ZUxldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmFwcGVuZFdpbmRvd3NEcml2
ZUxldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzUGVyY2VudEVuY29kZWRE
b3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NpbmdsZURvdFBhdGhTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNEb3VibGVEb3RQYXRoU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVTaW5nbGVEb3RQYXRoU2VnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2Vn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNBdExvY2FsaG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzTG9jYWxob3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFy
c2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNQZXJjZW50RW5jb2RlZERvdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjppc1NpbmdsZURvdFBhdGhTZWdtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzRG91YmxlRG90UGF0aFNlZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVEb3VibGVEb3RQYXRoU2VnbWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmFk
dmFuY2UpOgorCiAyMDE2LTA5LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVVJMUGFyc2VyIHNob3VsZCBwcm9wZXJseSBoYW5kbGUgdW5l
eHBlY3RlZCBwZXJpb2RzIGFuZCBvdmVyZmxvd3MgaW4gSVB2NCBhZGRyZXNzZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjA2NTU0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE0
LDEyICs0MTQsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTXwog
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBpc1ZhbGlkU2NoZW1lQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKSB7IHJldHVy
biBjaGFyYWN0ZXIgPD0gJ3onICYmIGNoYXJhY3RlckNsYXNzVGFibGVbY2hhcmFjdGVyXSAmIFNj
aGVtZTsgfQogc3RhdGljIGJvb2wgc2hvdWxkUGVyY2VudEVuY29kZVF1ZXJ5Qnl0ZSh1aW50OF90
IGJ5dGUpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbYnl0ZV0gJiBRdWVyeVBlcmNlbnQ7
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIFVSTFBhcnNlcjo6UmVwb3J0U3ludGF4VmlvbGF0aW9uIHJlcG9ydFN5
bnRheFZpb2xhdGlvbj4KIEFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFkdmFuY2UoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBjb25zdCBDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bikKIHsKICAgICArK2l0ZXJhdG9yOwogICAgIHdoaWxlIChVTkxJS0VMWSghaXRlcmF0b3IuYXRF
bmQoKSAmJiBpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSkgewotICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CisgICAgICAgIGlmIChy
ZXBvcnRTeW50YXhWaW9sYXRpb24gPT0gUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpZZXMpCisgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlv
bik7CiAgICAgICAgICsraXRlcmF0b3I7CiAgICAgfQogfQpAQCAtNDI5LDE1ICs0MzAsMTMgQEAg
QUxXQVlTX0lOTElORSBib29sIFVSTFBhcnNlcjo6aXNXaW5kb3dzRAogewogICAgIGlmIChpdGVy
YXRvci5hdEVuZCgpIHx8ICFpc0FTQ0lJQWxwaGEoKml0ZXJhdG9yKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGFkdmFuY2UoaXRlcmF0b3IpOworICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlw
ZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwogICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCppdGVyYXRvciA9PSAn
OicpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChVTkxJS0VMWSgqaXRlcmF0b3IgPT0g
J3wnKSkgewotICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3IpOworICAgIGlmIChVTkxJ
S0VMWSgqaXRlcmF0b3IgPT0gJ3wnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDY0LDYgKzQ2Myw4IEBAIHZvaWQgVVJMUGFyc2VyOjph
cHBlbmRXaW5kb3dzRHJpdmVMZXR0ZXIKICAgICBhZHZhbmNlKGl0ZXJhdG9yKTsKICAgICBBU1NF
UlQoIWl0ZXJhdG9yLmF0RW5kKCkpOwogICAgIEFTU0VSVCgqaXRlcmF0b3IgPT0gJzonIHx8ICpp
dGVyYXRvciA9PSAnfCcpOworICAgIGlmICgqaXRlcmF0b3IgPT0gJ3wnKQorICAgICAgICBzeW50
YXhWaW9sYXRpb24oaXRlcmF0b3IpOwogICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJzonKTsKICAg
ICBhZHZhbmNlKGl0ZXJhdG9yKTsKIH0KQEAgLTgxOCw5MyArODE5LDkzIEBAIHZvaWQgVVJMUGFy
c2VyOjpjb3B5VVJMUGFydHNVbnRpbChjb25zdCAKIHN0YXRpYyBjb25zdCBjaGFyKiBkb3RBU0NJ
SUNvZGUgPSAiMmUiOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc1BlcmNlbnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+IGMpCitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFyc2VyOjppc1BlcmNl
bnRFbmNvZGVkRG90KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCiB7CiAgICAg
aWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgqYyAhPSAnJScp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICArK2M7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJU
eXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihjKTsKICAgICBpZiAoYy5hdEVuZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCpjICE9IGRvdEFTQ0lJQ29kZVswXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5kKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdG9BU0NJSUxvd2VyKCpjKSA9PSBkb3RBU0NJ
SUNvZGVbMV07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGlzU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gYykKK0FMV0FZU19JTkxJTkUgYm9vbCBVUkxQYXJzZXI6OmlzU2lu
Z2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKIHsK
ICAgICBpZiAoYy5hdEVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCpjID09
ICcuJykgewotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAgICAgICAgIHJldHVybiBjLmF0RW5kKCkgfHwg
aXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKICAgICB9CiAgICAgaWYgKCpjICE9ICclJykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUs
IFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5kKCkgfHwgKmMg
IT0gZG90QVNDSUlDb2RlWzBdKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKytjOworICAg
IGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAg
ICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0b0FTQ0lJ
TG93ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICArK2M7CisgICAgICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAgICAg
ICAgIHJldHVybiBjLmF0RW5kKCkgfHwgaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpjKTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCitBTFdBWVNfSU5MSU5FIGJvb2wgVVJMUGFy
c2VyOjppc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGMpCiB7CiAgICAgaWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICgqYyA9PSAnLicpIHsKLSAgICAgICAgKytjOworICAgICAgICBhZHZhbmNlPENoYXJhY3Rl
clR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgICAgICByZXR1cm4gaXNT
aW5nbGVEb3RQYXRoU2VnbWVudChjKTsKICAgICB9CiAgICAgaWYgKCpjICE9ICclJykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICsrYzsKKyAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJl
cG9ydFN5bnRheFZpb2xhdGlvbjo6Tm8+KGMpOwogICAgIGlmIChjLmF0RW5kKCkgfHwgKmMgIT0g
ZG90QVNDSUlDb2RlWzBdKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKytjOworICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAgICAg
aWYgKGMuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0b0FTQ0lJTG93
ZXIoKmMpID09IGRvdEFTQ0lJQ29kZVsxXSkgewotICAgICAgICArK2M7CisgICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oYyk7CiAgICAgICAg
IHJldHVybiBpc1NpbmdsZURvdFBhdGhTZWdtZW50KGMpOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgdm9pZCBj
b25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4mIGMpCit2b2lkIFVSTFBhcnNlcjo6Y29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQ
b2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBjKQogewogICAgIEFTU0VSVChpc1NpbmdsZURv
dFBhdGhTZWdtZW50KGMpKTsKICAgICBpZiAoKmMgPT0gJy4nKSB7Ci0gICAgICAgICsrYzsKKyAg
ICAgICAgYWR2YW5jZShjKTsKICAgICAgICAgaWYgKCFjLmF0RW5kKCkpIHsKICAgICAgICAgICAg
IGlmICgqYyA9PSAnLycgfHwgKmMgPT0gJ1xcJykKLSAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZShjKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBBU1NFUlQoKmMgPT0gJz8nIHx8ICpjID09ICcjJyk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlQoKmMgPT0gJyUnKTsKLSAgICAgICAgKytjOworICAgICAgICBhZHZh
bmNlKGMpOwogICAgICAgICBBU1NFUlQoKmMgPT0gZG90QVNDSUlDb2RlWzBdKTsKLSAgICAgICAg
KytjOworICAgICAgICBhZHZhbmNlKGMpOwogICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyKCpj
KSA9PSBkb3RBU0NJSUNvZGVbMV0pOwotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2UoYyk7
CiAgICAgICAgIGlmICghYy5hdEVuZCgpKSB7CiAgICAgICAgICAgICBpZiAoKmMgPT0gJy8nIHx8
ICpjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGFkdmFu
Y2UoYyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUKCpjID09ICc/
JyB8fCAqYyA9PSAnIycpOwogICAgICAgICB9CkBAIC05MTIsMTggKzkxMywxOCBAQCBzdGF0aWMg
dm9pZCBjb25zdW1lU2luZ2xlRG90UGF0aFNlZ21lbnQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgdm9pZCBjb25zdW1lRG91YmxlRG90UGF0aFNlZ21lbnQo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGMpCit2b2lkIFVSTFBhcnNlcjo6Y29u
c3VtZURvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
JiBjKQogewogICAgIEFTU0VSVChpc0RvdWJsZURvdFBhdGhTZWdtZW50KGMpKTsKICAgICBpZiAo
KmMgPT0gJy4nKQotICAgICAgICArK2M7CisgICAgICAgIGFkdmFuY2UoYyk7CiAgICAgZWxzZSB7
CiAgICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOwotICAgICAgICArK2M7CisgICAgICAgIGFkdmFu
Y2UoYyk7CiAgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJSUNvZGVbMF0pOwotICAgICAgICAr
K2M7CisgICAgICAgIGFkdmFuY2UoYyk7CiAgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMp
ID09IGRvdEFTQ0lJQ29kZVsxXSk7Ci0gICAgICAgICsrYzsKKyAgICAgICAgYWR2YW5jZShjKTsK
ICAgICB9CiAgICAgY29uc3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KGMpOwogfQpAQCAtOTkxLDYg
Kzk5Miw0NiBAQCB2b2lkIFVSTFBhcnNlcjo6ZmFpbHVyZSgpCiAgICAgbV91cmwubV9zdHJpbmcg
PSBtX2lucHV0U3RyaW5nOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
Ym9vbCBVUkxQYXJzZXI6OmNoZWNrTG9jYWxob3N0Q29kZVBvaW50KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgVUNoYXIzMiBjb2RlUG9pbnQpCit7CisgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkgfHwgdG9BU0NJSUxvd2VyKCppdGVyYXRvcikgIT0gY29kZVBvaW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBv
cnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIFVSTFBhcnNlcjo6aXNBdExv
Y2FsaG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAg
ICBpZiAoIWNoZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbCcpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwg
J28nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2Rl
UG9pbnQoaXRlcmF0b3IsICdjJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNo
ZWNrTG9jYWxob3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnYScpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ2wnKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRl
cmF0b3IsICdoJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNoZWNrTG9jYWxo
b3N0Q29kZVBvaW50KGl0ZXJhdG9yLCAnbycpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGVja0xvY2FsaG9zdENvZGVQb2ludChpdGVyYXRvciwgJ3MnKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghY2hlY2tMb2NhbGhvc3RDb2RlUG9pbnQoaXRlcmF0b3IsICd0
JykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXRlcmF0b3IuYXRFbmQoKTsK
K30KKworYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmluZ1ZpZXcgdmlldykKK3sKKyAg
ICBpZiAodmlldy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGlzQXRMb2NhbGhvc3QoQ29kZVBv
aW50SXRlcmF0b3I8TENoYXI+KHZpZXcuY2hhcmFjdGVyczgoKSwgdmlldy5jaGFyYWN0ZXJzOCgp
ICsgdmlldy5sZW5ndGgoKSkpOworICAgIHJldHVybiBpc0F0TG9jYWxob3N0KENvZGVQb2ludEl0
ZXJhdG9yPFVDaGFyPih2aWV3LmNoYXJhY3RlcnMxNigpLCB2aWV3LmNoYXJhY3RlcnMxNigpICsg
dmlldy5sZW5ndGgoKSkpOworfQorCiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgVVJMUGFyc2Vy
OjpwYXJzZWREYXRhVmlldyhzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYg
KFVOTElLRUxZKG1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkgewpAQCAtMTAyOCw5ICsxMDY5LDIw
IEBAIFVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKICAgICAgICAgbV9p
bnB1dEJlZ2luID0gaW5wdXQuY2hhcmFjdGVyczE2KCk7CiAgICAgICAgIHBhcnNlKGlucHV0LmNo
YXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgYmFzZSwgZW5jb2RpbmcpOwogICAgIH0KKwog
ICAgIEFTU0VSVCghbV91cmwubV9pc1ZhbGlkCiAgICAgICAgIHx8IG1fZGlkU2VlU3ludGF4Vmlv
bGF0aW9uID09IChtX3VybC5zdHJpbmcoKSAhPSBpbnB1dCkKICAgICAgICAgfHwgKGlucHV0Lmlz
RW1wdHkoKSAmJiBtX3VybC5tX3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nKSk7CisgICAgQVNTRVJU
KGludGVybmFsVmFsdWVzQ29uc2lzdGVudChtX3VybCkpOworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7CisgICAgICAgIC8vIEZvcmNlIGEg
c3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhl
IHNhbWUgcmVzdWx0LgorICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAiLCBp
bnB1dCksIGJhc2UsIGVuY29kaW5nKTsKKyAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1
bHQoKTsKKyAgICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBBU1NFUlQo
YWxsVmFsdWVzRXF1YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOworICAgIH0KKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTIxMSw3ICsxMjYzLDcg
QEAgdm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgICAgICAgICAg
aWYgKCpjID09ICcvJykgewogICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8n
KTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpBdXRob3JpdHlPckhvc3Q7Ci0gICAg
ICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGFkdmFuY2UoYyk7CiAgICAgICAgICAg
ICAgICAgbV91cmwubV91c2VyU3RhcnQgPSBjdXJyZW50UG9zaXRpb24oYyk7CiAgICAgICAgICAg
ICAgICAgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPSBjOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTEzMDUsNiArMTM1Nyw3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFyYWN0ZXJU
eXAKICAgICAgICAgICAgICAgICAgICAgYXV0byBsYXN0QXQgPSBjOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGZpbmRMYXN0QXQgPSBjOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWZp
bmRMYXN0QXQuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HKFVSTFBhcnNl
ciwgIkZpbmRpbmcgbGFzdCBAOiAlYyIsICpmaW5kTGFzdEF0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgqZmluZExhc3RBdCA9PSAnQCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdEF0ID0gZmluZExhc3RBdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNT
bGFzaCA9ICpmaW5kTGFzdEF0ID09ICcvJyB8fCAobV91cmxJc1NwZWNpYWwgJiYgKmZpbmRMYXN0
QXQgPT0gJ1xcJyk7CkBAIC0xMzQyLDIzICsxMzk1LDI1IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJz
ZShjb25zdCBDaGFyYWN0ZXJUeXAKICAgICAgICAgICAgIH0gd2hpbGUgKCFjLmF0RW5kKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6Okhvc3Q6Ci0gICAgICAgICAg
ICBMT0dfU1RBVEUoIkhvc3QiKTsKLSAgICAgICAgICAgIGlmICgqYyA9PSAnLycgfHwgKmMgPT0g
Jz8nIHx8ICpjID09ICcjJykgewotICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9y
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwg
YykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKmMgPT0g
Jz8nIHx8ICpjID09ICcjJykgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKLSAgICAg
ICAgICAgICAgICAgICAgbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRp
b24oYyk7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgTE9HX1NUQVRFKCJIb3N0
Iik7CisgICAgICAgICAgICAgICAgaWYgKCpjID09ICcvJyB8fCAqYyA9PSAnPycgfHwgKmMgPT0g
JyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg
KCpjID09ICc/JyB8fCAqYyA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRh
eFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZm
ZXIoJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNs
YXNoID0gY3VycmVudFBvc2l0aW9uKGMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQ
YXRoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGlzUGVyY2VudE9yTm9uQVNDSUkoKmMpKQotICAgICAgICAgICAgICAgIG1faG9zdEhhc1Bl
cmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKLSAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNQZXJjZW50T3JOb25BU0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9z
dEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAg
ICAgICAgICB9IHdoaWxlICghYy5hdEVuZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFN0YXRlOjpGaWxlOgogICAgICAgICAgICAgTE9HX1NUQVRFKCJGaWxlIik7CkBAIC0x
NDI2LDggKzE0ODEsOCBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlw
CiAgICAgICAgICAgICBpZiAoTElLRUxZKCpjID09ICcvJyB8fCAqYyA9PSAnXFwnKSkgewogICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnXFwnKSkKICAgICAgICAgICAgICAgICAg
ICAgc3ludGF4VmlvbGF0aW9uKGMpOwotICAgICAgICAgICAgICAgICsrYzsKICAgICAgICAgICAg
ICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7CisgICAgICAgICAgICAgICAgYWR2YW5jZShj
KTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJTdGFydCA9IGN1cnJlbnRQb3NpdGlvbihj
KTsKICAgICAgICAgICAgICAgICBtX3VybC5tX3VzZXJFbmQgPSBtX3VybC5tX3VzZXJTdGFydDsK
ICAgICAgICAgICAgICAgICBtX3VybC5tX3Bhc3N3b3JkRW5kID0gbV91cmwubV91c2VyU3RhcnQ7
CkBAIC0xNDYzLDU1ICsxNTE4LDU3IEBAIHZvaWQgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBDaGFy
YWN0ZXJUeXAKICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OlBhdGg7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6RmlsZUhvc3Q6Ci0gICAgICAgICAgICBMT0dfU1RB
VEUoIkZpbGVIb3N0Iik7Ci0gICAgICAgICAgICBpZiAoaXNTbGFzaFF1ZXN0aW9uT3JIYXNoKCpj
KSkgewotICAgICAgICAgICAgICAgIGJvb2wgd2luZG93c1F1aXJrID0gYy5jb2RlVW5pdHNTaW5j
ZShhdXRob3JpdHlPckhvc3RCZWdpbikgPT0gMiAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihhdXRo
b3JpdHlPckhvc3RCZWdpbik7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgewot
ICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYXV0aG9yaXR5T3JIb3N0QmVnaW4p
OwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCcvJyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdp
bik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh3aW5kb3dzUXVpcmsg
fHwgYXV0aG9yaXR5T3JIb3N0QmVnaW4gPT0gYykgewotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlvbihjKSAtIDEs
IDEpID09ICIvIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnPycp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVyKCIvPyIsIDIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRo
QWZ0ZXJMYXN0U2xhc2ggPSBjdXJyZW50UG9zaXRpb24oYykgLSAxOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV91cmwubV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpRdWVyeTsKKyAgICAgICAgICAg
IGRvIHsKKyAgICAgICAgICAgICAgICBMT0dfU1RBVEUoIkZpbGVIb3N0Iik7CisgICAgICAgICAg
ICAgICAgaWYgKGlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqYykpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYm9vbCB3aW5kb3dzUXVpcmsgPSBjLmNvZGVVbml0c1NpbmNlKGF1dGhvcml0eU9ySG9zdEJl
Z2luKSA9PSAyICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NRdWlyaykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGF1dGhvcml0eU9ySG9zdEJlZ2luKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIoJy8nKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFdpbmRvd3NEcml2ZUxldHRlcihhdXRob3JpdHlPckhvc3RCZWdpbik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd3NR
dWlyayB8fCBhdXRob3JpdHlPckhvc3RCZWdpbiA9PSBjKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQod2luZG93c1F1aXJrIHx8IHBhcnNlZERhdGFWaWV3KGN1cnJlbnRQb3NpdGlv
bihjKSAtIDEsIDEpID09ICIvIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoKmMgPT0gJz8nKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZpb2xh
dGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FTQ0lJQnVmZmVy
KCIvPyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3Np
dGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwubV9wYXRoRW5k
ID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUgPSBTdGF0ZTo6UXVlcnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoKmMgPT0gJyMnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUb0FT
Q0lJQnVmZmVyKCIvIyIsIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1
cnJlbnRQb3NpdGlvbihjKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91cmwu
bV9wYXRoRW5kID0gbV91cmwubV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV91cmwubV9xdWVyeUVuZCA9IG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNo
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkZyYWdtZW50Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyA9PSAnIycpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghcGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PihhdXRob3JpdHlPckhvc3RCZWdpbiwgYykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
YWlsdXJlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTG9jYWxob3N0KHBh
cnNlZERhdGFWaWV3KG1fdXJsLm1fcGFzc3dvcmRFbmQsIGN1cnJlbnRQb3NpdGlvbihjKSAtIG1f
dXJsLm1fcGFzc3dvcmRFbmQpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheFZp
b2xhdGlvbihjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvQVNDSUlCdWZmZXIo
Ii8jIiwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2M7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCA9IGN1cnJlbnRQb3NpdGlvbihjKSAt
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VybC5tX3BhdGhFbmQgPSBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcXVlcnlF
bmQgPSBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlID0gU3RhdGU6OkZyYWdtZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2FzY2lpQnVmZmVyLnNocmluayhtX3VybC5tX3Bh
c3N3b3JkRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1faG9zdEVuZCA9IGN1
cnJlbnRQb3NpdGlvbihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVu
ZCA9IG1fdXJsLm1faG9zdEVuZDsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpQYXRoOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFwYXJz
ZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KGF1dGhvcml0eU9y
SG9zdEJlZ2luLCBjKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSgpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChVTkxJS0VMWShlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZWREYXRhVmll
dyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3
b3JkRW5kKSwgImxvY2FsaG9zdCIpKSkgewotICAgICAgICAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJs
Lm1fcGFzc3dvcmRFbmQpOwotICAgICAgICAgICAgICAgICAgICBtX3VybC5tX2hvc3RFbmQgPSBj
dXJyZW50UG9zaXRpb24oYyk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdXJsLm1fcG9ydEVuZCA9
IG1fdXJsLm1faG9zdEVuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6UGF0aFN0YXJ0OwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzUGVyY2VudE9yTm9uQVND
SUkoKmMpKQotICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJID0gdHJ1
ZTsKLSAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50T3JOb25B
U0NJSSgqYykpCisgICAgICAgICAgICAgICAgICAgIG1faG9zdEhhc1BlcmNlbnRPck5vbkFTQ0lJ
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICB9IHdoaWxlICghYy5h
dEVuZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpQYXRoU3Rh
cnQ6CiAgICAgICAgICAgICBMT0dfU1RBVEUoIlBhdGhTdGFydCIpOwpAQCAtMTU1MywxNiArMTYx
MCwxNSBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RnJhZ21lbnQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNQZXJjZW50RW5jb2RlZERvdChjKSkg
ewotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgqYyAhPSAnLicpKQotICAgICAgICAgICAg
ICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNQ
ZXJjZW50RW5jb2RlZERvdChjKSkpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24o
Yyk7CiAgICAgICAgICAgICAgICAgYXBwZW5kVG9BU0NJSUJ1ZmZlcignLicpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVCgqYyA9PSAnJScpOwotICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAg
ICAgICAgICBhZHZhbmNlKGMpOwogICAgICAgICAgICAgICAgIEFTU0VSVCgqYyA9PSBkb3RBU0NJ
SUNvZGVbMF0pOwotICAgICAgICAgICAgICAgICsrYzsKKyAgICAgICAgICAgICAgICBhZHZhbmNl
KGMpOwogICAgICAgICAgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXIoKmMpID09IGRvdEFTQ0lJ
Q29kZVsxXSk7Ci0gICAgICAgICAgICAgICAgKytjOworICAgICAgICAgICAgICAgIGFkdmFuY2Uo
Yyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB1
dGY4UGVyY2VudEVuY29kZTxpc0luRGVmYXVsdEVuY29kZVNldD4oYyk7CkBAIC0xNzc3LDcgKzE4
MzMsNyBAQCB2b2lkIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgICAg
IH0KIAogICAgICAgICBzeW50YXhWaW9sYXRpb24oYyk7Ci0gICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3JkRW5kLCBj
dXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSwgImxvY2FsaG9zdCIpKSB7
CisgICAgICAgIGlmIChpc0xvY2FsaG9zdChwYXJzZWREYXRhVmlldyhtX3VybC5tX3Bhc3N3b3Jk
RW5kLCBjdXJyZW50UG9zaXRpb24oYykgLSBtX3VybC5tX3Bhc3N3b3JkRW5kKSkpIHsKICAgICAg
ICAgICAgIG1fYXNjaWlCdWZmZXIuc2hyaW5rKG1fdXJsLm1fcGFzc3dvcmRFbmQpOwogICAgICAg
ICAgICAgbV91cmwubV9ob3N0RW5kID0gY3VycmVudFBvc2l0aW9uKGMpOwogICAgICAgICAgICAg
bV91cmwubV9wb3J0RW5kID0gbV91cmwubV9ob3N0RW5kOwpAQCAtMTgzNSw3ICsxODkxLDYgQEAg
dm9pZCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IENoYXJhY3RlclR5cAogICAgIH0KICAgICBtX3Vy
bC5tX2lzVmFsaWQgPSB0cnVlOwogICAgIExPRyhVUkxQYXJzZXIsICJQYXJzZWQgVVJMIDwlcz4i
LCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KG1fdXJsKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkocmV2aXNpb24gMjA2NTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDEyICs2NiwyMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGJvb2wgcGFyc2VQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CiAKICAgICB2b2lkIGZhaWx1cmUoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiB2b2lkIGFkdmFuY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0
ZXJhdG9yKSB7IGFkdmFuY2UoaXRlcmF0b3IsIGl0ZXJhdG9yKTsgfQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVy
YXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICBlbnVtIGNsYXNzIFJlcG9ydFN5
bnRheFZpb2xhdGlvbiB7IE5vLCBZZXMgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb24gcmVwb3J0U3ludGF4VmlvbGF0aW9uID0gUmVw
b3J0U3ludGF4VmlvbGF0aW9uOjpZZXM+CisgICAgdm9pZCBhZHZhbmNlKENvZGVQb2ludEl0ZXJh
dG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikgeyBhZHZhbmNlPENoYXJhY3RlclR5cGUsIHJl
cG9ydFN5bnRheFZpb2xhdGlvbj4oaXRlcmF0b3IsIGl0ZXJhdG9yKTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xhdGlvbiA9IFJlcG9ydFN5
bnRheFZpb2xhdGlvbjo6WWVzPgorICAgIHZvaWQgYWR2YW5jZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHN5bnRheFZpb2xhdGlvbihjb25zdCBDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHZvaWQgZnJhZ21lbnRTeW50YXhWaW9sYXRpb24oY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIGlzUGVyY2VudEVuY29kZWREb3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4p
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNXaW5kb3dzRHJp
dmVMZXR0ZXIoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNTaW5nbGVEb3RQYXRoU2VnbWVudChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYm9vbCBpc0RvdWJsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIHNob3VsZENvcHlGaWxlVVJMKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGNoZWNrTG9jYWxob3N0
Q29kZVBvaW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgVUNoYXIzMik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0F0TG9jYWxob3N0KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKKyAgICBib29sIGlzTG9jYWxob3N0KFN0
cmluZ1ZpZXcpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgY29u
c3VtZVNpbmdsZURvdFBhdGhTZWdtZW50KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBjb25zdW1lRG91
YmxlRG90UGF0aFNlZ21lbnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZFdpbmRvd3NEcml2
ZUxldHRlcihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCBjdXJyZW50UG9zaXRpb24oY29uc3QgQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
bnNpZ25lZEludGVnZXJUeXBlPiB2b2lkIGFwcGVuZE51bWJlclRvQVNDSUlCdWZmZXIoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSk7CkBAIC05Miw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIElQ
djZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2NlBp
ZWNlKHVpbnQxNl90IHBpZWNlKTsKLSAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoVVJMUGFyc2VyOjpJ
UHY2QWRkcmVzcyk7CisgICAgdm9pZCBzZXJpYWxpemVJUHY2KElQdjZBZGRyZXNzKTsKIAogICAg
IGVudW0gY2xhc3MgVVJMUGFydDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIGNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IFVSTCYgYmFzZSwgVVJMUGFydCwgY29uc3Qg
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjU3NCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTI4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
VVJMUGFyc2VyIHNob3VsZCBpZ25vcmUgdGFicyBhdCBhbGwgcG9zc2libGUgbG9jYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6RXhwZWN0ZWRQYXJ0czo6aXNJbnZhbGlkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTYtMDktMjgg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQVBJIHRl
c3QgV2ViS2l0Mi5BdXRvTGF5b3V0SW50ZWdyYXRpb24gaXMgYSBmbGFreSB0aW1lb3V0CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAko
cmV2aXNpb24gMjA2NTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDE4IEBAIHN0cnVjdCBFeHBl
Y3RlZFBhcnRzIHsKICAgICBTdHJpbmcgcXVlcnk7CiAgICAgU3RyaW5nIGZyYWdtZW50OwogICAg
IFN0cmluZyBzdHJpbmc7CisKKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gcHJvdG9jb2wuaXNFbXB0eSgpCisgICAgICAgICAgICAmJiB1c2VyLmlzRW1w
dHkoKQorICAgICAgICAgICAgJiYgcGFzc3dvcmQuaXNFbXB0eSgpCisgICAgICAgICAgICAmJiBo
b3N0LmlzRW1wdHkoKQorICAgICAgICAgICAgJiYgIXBvcnQKKyAgICAgICAgICAgICYmIHBhdGgu
aXNFbXB0eSgpCisgICAgICAgICAgICAmJiBxdWVyeS5pc0VtcHR5KCkKKyAgICAgICAgICAgICYm
IGZyYWdtZW50LmlzRW1wdHkoKTsKKyAgICB9CiB9OwogCiBzdGF0aWMgYm9vbCBlcShjb25zdCBT
dHJpbmcmIHMxLCBjb25zdCBTdHJpbmcmIHMyKQpAQCAtNTcsNyArNjksNyBAQCBzdGF0aWMgYm9v
bCBlcShjb25zdCBTdHJpbmcmIHMxLCBjb25zdCBTCiAgICAgcmV0dXJuIHMxLnV0ZjgoKSA9PSBz
Mi51dGY4KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cykKK3N0YXRpYyB2b2lkIGNoZWNrVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgYm9vbCBj
aGVja1RhYnMgPSB0cnVlKQogewogICAgIGJvb2wgd2FzRW5hYmxlZCA9IFVSTFBhcnNlcjo6ZW5h
YmxlZCgpOwogICAgIFVSTFBhcnNlcjo6c2V0RW5hYmxlZCh0cnVlKTsKQEAgLTg5LDYgKzEwMSwx
NCBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0CiAgICAgRVhQRUNU
X1RSVUUoVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbCh1cmwsIG9sZFVSTCkpOwogICAgIEVYUEVD
VF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KHVybCkpOwogICAgIEVY
UEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG9sZFVSTCkpOwor
CisgICAgaWYgKGNoZWNrVGFicykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVy
bFN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgdXJsU3RyaW5nV2l0
aFRhYiA9IG1ha2VTdHJpbmcodXJsU3RyaW5nLnN1YnN0cmluZygwLCBpKSwgIlx0IiwgdXJsU3Ry
aW5nLnN1YnN0cmluZyhpKSk7CisgICAgICAgICAgICBFeHBlY3RlZFBhcnRzIGludmFsaWRQYXJ0
c1dpdGhUYWIgPSB7IiIsICIiLCAiIiwgIiIsIDAsICIiICwgIiIsICIiLCB1cmxTdHJpbmdXaXRo
VGFifTsKKyAgICAgICAgICAgIGNoZWNrVVJMKHVybFN0cmluZ1dpdGhUYWIsIHBhcnRzLmlzSW52
YWxpZCgpID8gaW52YWxpZFBhcnRzV2l0aFRhYiA6IHBhcnRzLCBmYWxzZSk7CisgICAgICAgIH0K
KyAgICB9CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+CkBAIC0yNzUsNyArMjk1LDcgQEAg
VEVTVF9GKFVSTFBhcnNlclRlc3QsIEJhc2ljKQogICAgIGNoZWNrVVJMKCJodHRwOi8vOkBob3N0
IiwgeyJodHRwIiwgIiIsICIiLCAiaG9zdCIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL2hvc3Qv
In0pOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMm
IHBhcnRzKQorc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBw
YXJ0cywgYm9vbCBjaGVja1RhYnMgPSB0cnVlKQogewogICAgIGJvb2wgd2FzRW5hYmxlZCA9IFVS
TFBhcnNlcjo6ZW5hYmxlZCgpOwogICAgIFVSTFBhcnNlcjo6c2V0RW5hYmxlZCh0cnVlKTsKQEAg
LTMwNyw2ICszMjcsMTQgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJp
bgogICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6YWxsVmFsdWVzRXF1YWwodXJsLCBvbGRVUkwp
KTsKICAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1
cmwpKTsKICAgICBFWFBFQ1RfVFJVRShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVu
dChvbGRVUkwpKTsKKyAgICAKKyAgICBpZiAoY2hlY2tUYWJzKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdXJsU3RyaW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFN0
cmluZyB1cmxTdHJpbmdXaXRoVGFiID0gbWFrZVN0cmluZyh1cmxTdHJpbmcuc3Vic3RyaW5nKDAs
IGkpLCAiXHQiLCB1cmxTdHJpbmcuc3Vic3RyaW5nKGkpKTsKKyAgICAgICAgICAgIEV4cGVjdGVk
UGFydHMgaW52YWxpZFBhcnRzV2l0aFRhYiA9IHsiIiwgIiIsICIiLCAiIiwgMCwgIiIgLCAiIiwg
IiIsIHVybFN0cmluZ1dpdGhUYWJ9OworICAgICAgICAgICAgY2hlY2tSZWxhdGl2ZVVSTCh1cmxT
dHJpbmdXaXRoVGFiLCBiYXNlVVJMU3RyaW5nLCBwYXJ0cy5pc0ludmFsaWQoKSA/IGludmFsaWRQ
YXJ0c1dpdGhUYWIgOiBwYXJ0cywgZmFsc2UpOworICAgICAgICB9CisgICAgfQogfQogCiBURVNU
X0YoVVJMUGFyc2VyVGVzdCwgUGFyc2VSZWxhdGl2ZSkKQEAgLTQwMyw2ICs0MzEsOCBAQCBzdGF0
aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0CiAgICAgRVhQRUNUX0ZBTFNFKFVS
TFBhcnNlcjo6YWxsVmFsdWVzRXF1YWwodXJsLCBvbGRVUkwpKTsKICAgICBFWFBFQ1RfVFJVRShV
UkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudCh1cmwpKTsKICAgICBFWFBFQ1RfVFJV
RShVUkxQYXJzZXI6OmludGVybmFsVmFsdWVzQ29uc2lzdGVudChvbGRVUkwpKTsKKyAgICAKKyAg
ICAvLyBGSVhNRTogY2hlY2sgdGFicyBoZXJlIGxpa2Ugd2UgZG8gZm9yIGNoZWNrVVJMIGFuZCBj
aGVja1JlbGF0aXZlVVJMLgogfQogCiBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmlu
ZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHNOZXcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBh
cnRzT2xkKQpAQCAtNDM3LDYgKzQ2Nyw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxE
aWZmZXJlbmNlcygKICAgICBFWFBFQ1RfRkFMU0UoVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbCh1
cmwsIG9sZFVSTCkpOwogICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1ZXND
b25zaXN0ZW50KHVybCkpOwogICAgIEVYUEVDVF9UUlVFKFVSTFBhcnNlcjo6aW50ZXJuYWxWYWx1
ZXNDb25zaXN0ZW50KG9sZFVSTCkpOworCisgICAgLy8gRklYTUU6IGNoZWNrIHRhYnMgaGVyZSBs
aWtlIHdlIGRvIGZvciBjaGVja1VSTCBhbmQgY2hlY2tSZWxhdGl2ZVVSTC4KIH0KIAogLy8gVGhl
c2UgYXJlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG5ldyBVUkxQYXJzZXIgYW5kIHRoZSBvbGQg
VVJMOjpwYXJzZSB3aGljaCBtYWtlIFVSTFBhcnNlciBtb3JlIHN0YW5kYXJkcyBjb21wbGlhbnQu
CkBAIC04NTksMTMgKzg5MSwxMyBAQCBURVNUX0YoVVJMUGFyc2VyVGVzdCwgQWRkaXRpb25hbFRl
c3RzKQogICAgICAgICB7IndzIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgIndzOiJ9LAog
ICAgICAgICB7IndzIiwgIiIsICIiLCAiIiwgMCwgInM6IiwgIiIsICIiLCAid3M6czoifSk7CiAg
ICAgY2hlY2tSZWxhdGl2ZVVSTCgibm90c3BlY2lhbDoiLCAiaHR0cDovL2V4YW1wbGUub3JnL2Zv
by9iYXIiLCB7Im5vdHNwZWNpYWwiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCAibm90c3Bl
Y2lhbDoifSk7Ci0gICAgCisKICAgICBjb25zdCB3Y2hhcl90IHN1cnJvZ2F0ZUJlZ2luID0gMHhE
ODAwOwogICAgIGNvbnN0IHdjaGFyX3QgdmFsaWRTdXJyb2dhdGVFbmQgPSAweERENTU7CiAgICAg
Y29uc3Qgd2NoYXJfdCBpbnZhbGlkU3Vycm9nYXRlRW5kID0gJ0EnOwogICAgIGNoZWNrVVJMKHV0
ZjE2U3RyaW5nPDEyPih7J2gnLCAndCcsICd0JywgJ3AnLCAnOicsICcvJywgJy8nLCAndycsICcv
Jywgc3Vycm9nYXRlQmVnaW4sIHZhbGlkU3Vycm9nYXRlRW5kLCAnXDAnfSksCi0gICAgICAgIHsi
aHR0cCIsICIiLCAiIiwgInciLCAwLCAiLyVGMCU5MCU4NSU5NSIsICIiLCAiIiwgImh0dHA6Ly93
LyVGMCU5MCU4NSU5NSJ9KTsKLSAgICAKKyAgICAgICAgeyJodHRwIiwgIiIsICIiLCAidyIsIDAs
ICIvJUYwJTkwJTg1JTk1IiwgIiIsICIiLCAiaHR0cDovL3cvJUYwJTkwJTg1JTk1In0sIGZhbHNl
KTsKKwogICAgIC8vIFVSTFBhcnNlciBtYXRjaGVzIENocm9tZSBhbmQgRmlyZWZveCBidXQgbm90
IFVSTDo6cGFyc2UuCiAgICAgY2hlY2tVUkxEaWZmZXJlbmNlcyh1dGYxNlN0cmluZzwxMj4oeydo
JywgJ3QnLCAndCcsICdwJywgJzonLCAnLycsICcvJywgJ3cnLCAnLycsIHN1cnJvZ2F0ZUJlZ2lu
LCBpbnZhbGlkU3Vycm9nYXRlRW5kfSksCiAgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgInciLCAw
LCAiLyVFRiVCRiVCREEiLCAiIiwgIiIsICJodHRwOi8vdy8lRUYlQkYlQkRBIn0sCkBAIC04OTcs
NiArOTI5LDggQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdAogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5zdHJpbmcsIHVybC5zdHJpbmcoKSkpOworCisgICAgLy8gRklY
TUU6IGNoZWNrIHRhYnMgaGVyZSBsaWtlIHdlIGRvIGZvciBjaGVja1VSTCBhbmQgY2hlY2tSZWxh
dGl2ZVVSTC4KIH0KIAogVEVTVF9GKFVSTFBhcnNlclRlc3QsIFF1ZXJ5RW5jb2RpbmcpCg==
</data>
<flag name="review"
          id="313369"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>