<?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>22878</bug_id>
          
          <creation_ts>2008-12-16 05:42:22 -0800</creation_ts>
          <short_desc>It should be possible to post (clone) built-in JS objects to Workers</short_desc>
          <delta_ts>2009-10-06 22:03:08 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hamaji</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102653</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-16 05:42:22 -0800</bug_when>
    <thetext>Worker.postMessage only takes strings now, but the spec has been recently changed to allow arbitrary JS objects, such as Arrays and Objects. We need to support this.

This is similar to JSON, but not quite the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102654</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-16 05:43:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/6448422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152597</commentid>
    <comment_count>2</comment_count>
      <attachid>40694</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-10-05 23:16:21 -0700</bug_when>
    <thetext>Created attachment 40694
It should be possible to post (clone) built-in JS objects to Workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152612</commentid>
    <comment_count>3</comment_count>
      <attachid>40699</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-10-06 00:21:09 -0700</bug_when>
    <thetext>Created attachment 40699
It should be possible to post (clone) built-in JS objects to Workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152882</commentid>
    <comment_count>4</comment_count>
      <attachid>40699</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-10-06 15:36:29 -0700</bug_when>
    <thetext>Comment on attachment 40699
It should be possible to post (clone) built-in JS objects to Workers

In the test case, I&apos;d suggest renaming &apos;equal&apos; to something more descriptive (I initially wondered, &quot;why not just use ==&quot; :-) ).  Maybe &apos;isCloneOf&apos;?

In SerializedArray, all index values should be less than &apos;m_length&apos;.

In SerializedScriptValueData, I think &apos;operator bool ()&apos; should be &apos;operator bool()&apos; – a quick grep of JSC would seem to agree with this.

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152948</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-10-06 21:58:31 -0700</bug_when>
    <thetext>Landed r49214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152949</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-10-06 22:03:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Landed r49214

This expected.txt contains this line:

&gt; CONSOLE MESSAGE: line 54: RangeError: Maximum call stack size exceeded.

Is this OK?

Also... it is very nice if you modify the test so that the results don&apos;t contain &quot;PST&quot; . Maybe we can use the value of getTime like

    if (equal(actualValue, expectedValue)) {
        if (expectedValue &amp;&amp; expectedValue.getTime) {
            expectedValue = expectedValue.getTime() + &quot; (the value of getTime)
        }
        console.innerHTML += &quot;PASS: &quot; + actual + &quot; is &quot; + expectedValue + &quot; of type &quot; + typeof actualValue + &quot;&lt;br&gt;&quot;;
    } else

?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40694</attachid>
            <date>2009-10-05 23:16:21 -0700</date>
            <delta_ts>2009-10-06 00:21:05 -0700</delta_ts>
            <desc>It should be possible to post (clone) built-in JS objects to Workers</desc>
            <filename>bug-22878-20091005231620.patch</filename>
            <type>text/plain</type>
            <size>100245</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1MWE0OTZiLi5kNmZhMDc0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUgcG9z
c2libGUgdG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2VycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKworICAg
ICAgICBFeHBvc2UgaGVscGVycyB0byB0aHJvdyBjb3JyZWN0IGV4Y2VwdGlvbnMgZHVyaW5nIG9i
amVjdCBncmFwaCB3YWxrCisgICAgICAgIHVzZWQgZm9yIGNsb25pbmcgYW5kIGFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0byBjcmVhdGUgRGF0ZSBpbnN0YW5jZXMKKyAgICAgICAgd2l0aG91dCBnb2lu
ZyB0aHJvdWdoIHRoZSBKUyBEYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oOgorCiAyMDA5LTEwLTA1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIHd4IGJ1aWxkIGZpeC4gQWRkIFN5bWJpYW4gZmls
ZXMgdG8gdGhlIGxpc3Qgb2YgZXhjbHVkZXMuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggMDkzN2IyNi4uZDk0ZGNmYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTA0
LDYgKzEwNCw3IEBAIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRU4zV1RG
MTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFCiBfX1pOM0pTQzExUGFyc2VyQXJl
bmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBT
b3VyY2VDb2RlRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTRpbmZvRQorX19aTjNKU0MxMkRhdGVJ
bnN0YW5jZUMxRVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVu
dERhdGFEMkV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRFdgogX19aTjNK
U0MxMkpTR2xvYmFsRGF0YTEyc3RvcFNhbXBsaW5nRXYKQEAgLTE0MSw3ICsxNDIsOSBAQCBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Rud0VtUE5T
XzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MxNFNhbXBsaW5nVGhyZWFkNHN0b3BFdgogX19aTjNK
U0MxNFNhbXBsaW5nVGhyZWFkNXN0YXJ0RWoKK19fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlk
VGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2
CitfX1pOM0pTQzE1Y3JlYXRlVHlwZUVycm9yRVBOU185RXhlY1N0YXRlRVBLYwogX19aTjNKU0Mx
NUpTV3JhcHBlck9iamVjdDEybWFya0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0Mx
NXRvSW50MzJTbG93Q2FzZUVkUmIKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNGluZm9FCkBA
IC0xNzEsNyArMTc0LDkgQEAgX19aTjNKU0MyME1hcmtlZEFyZ3VtZW50QnVmZmVyMTBzbG93QXBw
ZW5kRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyNGR1bXBF
dgogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3RyaW5nRVBOU185RXhlY1N0YXRlRVBOU184
SlNPYmplY3RFTlNfN0pTVmFsdWVFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDMjNzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdEVQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoRW50cnlFUE5TXzhKU09iamVj
dEVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzI0Y3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyNWV2YWx1YXRlSW5H
bG9iYWxDYWxsRnJhbWVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFUE5TXzE0SlNHbG9iYWxP
YmplY3RFCitfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25FUE5T
XzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291bnRFdgogX19aTjNKU0M0
SGVhcDE0cHJpbWFyeUhlYXBFbmRFdgogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0K
QEAgLTIxMyw2ICsyMTgsNyBAQCBfX1pOM0pTQzZQYXJzZXI1cGFyc2VFUE5TXzEySlNHbG9iYWxE
YXRhRVBpUE5TXzdVU3RyaW5nRQogX19aTjNKU0M3Q1N0cmluZ0QxRXYKIF9fWk4zSlNDN0NTdHJp
bmdhU0VSS1MwXwogX19aTjNKU0M3SlNBcnJheTRpbmZvRQorX19aTjNKU0M3SlNBcnJheTlzZXRM
ZW5ndGhFagogX19aTjNKU0M3SlNBcnJheUMxRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFCiBfX1pOM0pTQzdKU0FycmF5QzFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRy
SU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3UHJvZmlsZTEwcmVzdG9y
ZUFsbEV2CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZmU2YjM0Li5mMTA4Yjc3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI0NSw3ICsyNDUsNyBAQAogCQlCQzE4QzNGQzBFMTZGNUNEMDBCMzQ0NjAgLyogRGVx
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODYx
MTFEMENDODI0ODMwMDgxNDEyQiAvKiBEZXF1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDM0ZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEaXNh
bGxvd0NUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzhDNEY2QjBDQTA2QkNFMDBEOTMxMEEgLyogRGlzYWxsb3dDVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDM0ZFMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBkdG9hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTFGNjQxMzAzOUQ1QjVGMDA3ODM5NUMgLyogZHRvYS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMThDNDAwMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVs
cGVycy5oICovOyB9OworCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
NzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQwMjBFMTZGNUNEMDBC
MzQ0NjAgLyogRmFzdE1hbGxvYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVFMjE3QkEwOEU3RUVDQzAwMjNFNUY2IC8qIEZhc3RNYWxsb2MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQwMzBF
MTZGNUNEMDBCMzQ0NjAgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM1QUY0NjkwOUU5RDlEQjAwQUNEMUQ4IC8qIEZvcndhcmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQw
NDBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTky
IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCmlu
ZGV4IDZiNDc5YWUuLmU3Mjc0NDUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogewogfQogCitEYXRlSW5zdGFuY2U6
OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB0aW1lKQorICAgIDogSlNXcmFw
cGVyT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGF0ZVN0cnVjdHVyZSgpKQor
ICAgICwgbV9jYWNoZSgwKQoreworICAgIHNldEludGVybmFsVmFsdWUoanNOdW1iZXIoZXhlYywg
dGltZUNsaXAodGltZSkpKTsKK30KKwogRGF0ZUluc3RhbmNlOjp+RGF0ZUluc3RhbmNlKCkKIHsK
ICAgICBkZWxldGUgbV9jYWNoZTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCmlu
ZGV4IGM4ZWRjMmYuLmVlY2JiNzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERhdGVJbnN0
YW5jZSA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0
YW5jZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgdmlydHVhbCB+RGF0
ZUluc3RhbmNlKCk7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCmluZGV4IGNjMThiOTUuLjViZWFkOTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAgSlNWYWx1ZSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBjcmVhdGVFcnJvcihl
eGVjLCBSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CiB9
CiAKK0pTVmFsdWUgY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
bWVzc2FnZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgVHlwZUVycm9yLCBtZXNz
YWdlKTsKK30KKwogSlNWYWx1ZSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCA0YzViZWMxLi5lNzM5
ZDA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBKU1ZhbHVlIGNyZWF0ZUludGVy
cnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIEpTVmFsdWUgY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90QW5PYmplY3RF
cnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSosIGJvb2wgaXNO
dWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxv
Y2sqKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhMmNhOGYyLi41NDNkY2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKworICAgICAgICBB
ZGQgYSB0ZXN0IGZvciBvYmplY3QgY2xvbmluZyBmb3IgcG9zdE1lc3NhZ2UsIGFuZCB1cGRhdGUg
ZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdG8gcmVmbGVjdCB0aGUgbmV3IGNsb25pbmcgc2VtYW50
aWNzLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9u
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtY2xvbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5p
dC1ldmVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NjcmlwdC10ZXN0
cy9pbml0LWV2ZW50cy5qczoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3VzZS1t
YWNoaW5lLXN0YWNrLmpzOgorCiAyMDA5LTEwLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3IgbWVkaWEgdGVzdHMg
YWZ0ZXIgY29udHJvbGxlciBjaGFuZ2UgdG8gYWRkIHRoZSBmdWxsc2NyZWVuIGJ1dHRvbi4gCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVkZWQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IFJhbmdlRXJyb3I6IE1heGltdW0gY2Fs
bCBzdGFjayBzaXplIGV4Y2VlZGVkLgorVGVzdHMgdGhhdCB3ZSBjbG9uZSBvYmplY3QgaGllcmFy
Y2hpZXMKK1BBU1M6ICdwb3N0TWVzc2FnZShjeWNsaWNPYmplY3QpJyB0aHJldyBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogY3ljbGljT2JqZWN0CitQQVNTOiAncG9zdE1lc3Nh
Z2UoY3ljbGljT2JqZWN0KScgdGhyZXcgVHlwZUVycm9yOiBDYW5ub3QgcG9zdCBjeWNsaWMgc3Ry
dWN0dXJlcy4KK1BBU1M6ICdwb3N0TWVzc2FnZShjeWNsaWNBcnJheSknIHRocmV3IFR5cGVFcnJv
cjogQ2Fubm90IHBvc3QgY3ljbGljIHN0cnVjdHVyZXMuCitQQVNTOiAncG9zdE1lc3NhZ2UocmVh
bGx5RGVlcEFycmF5KScgdGhyZXcgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuCitQQVNTOiAncG9zdE1lc3NhZ2Uod2luZG93KScgdGhyZXcgVHlwZUVycm9yOiBD
YW5ub3QgcG9zdCBjeWNsaWMgc3RydWN0dXJlcy4KK1BBU1M6IGV2ZW50RGF0YSBpcyBudWxsIG9m
IHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgdW5kZWZpbmVkIG9mIHR5cGUgdW5kZWZp
bmVkCitQQVNTOiBldmVudERhdGEgaXMgMSBvZiB0eXBlIG51bWJlcgorUEFTUzogZXZlbnREYXRh
IGlzIHRydWUgb2YgdHlwZSBib29sZWFuCitQQVNTOiBldmVudERhdGEgaXMgMSBvZiB0eXBlIHN0
cmluZworUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgT2JqZWN0XSBvZiB0eXBlIG9iamVjdAor
UEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgT2JqZWN0XSBvZiB0eXBlIG9iamVjdAorUEFTUzog
ZXZlbnREYXRhIGlzIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgMSwyLDMgb2Yg
dHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyAsLDEgb2YgdHlwZSBvYmplY3QKK1BBU1M6
IGV2ZW50RGF0YSBpcyBudWxsIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgV2Vk
IERlYyAzMSAxOTY5IDE2OjAwOjAwIEdNVC0wODAwIChQU1QpIG9mIHR5cGUgb2JqZWN0CitQQVNT
OiBldmVudERhdGEgaXMgb2YgdHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBkb25lIG9m
IHR5cGUgc3RyaW5nCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lOWFiMWU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS5odG1sCkBAIC0wLDAgKzEsMTE4IEBA
Cis8aHRtbD4KKzxoZWFkPjwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBj
b25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKwordmFyIG1lc3Nh
Z2VzID0gW107CisKK2Z1bmN0aW9uIGVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYg
KHR5cGVvZiBhY3R1YWwgIT09IHR5cGVvZiBleHBlY3RlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUpIHx8IChleHBlY3RlZCBpbnN0YW5jZW9mIERh
dGUpKSB7CisgICAgICAgIGlmICgoYWN0dWFsIGluc3RhbmNlb2YgRGF0ZSkgJiYgKGV4cGVjdGVk
IGluc3RhbmNlb2YgRGF0ZSkpCisgICAgICAgICAgICByZXR1cm4gKGV4cGVjdGVkIGluc3RhbmNl
b2YgRGF0ZSkgJiYgYWN0dWFsLmdldFRpbWUoKSA9PSBleHBlY3RlZC5nZXRUaW1lKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0dWFsKSB8
fCBBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkgeworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXko
YWN0dWFsKSB8fCAhQXJyYXkuaXNBcnJheShleHBlY3RlZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChhY3R1YWwubGVuZ3RoICE9IGV4cGVjdGVkLmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1
YWwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgoaSBpbiBhY3R1YWwpIF4gKGkgaW4g
ZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZXF1YWwoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2YXIg
a2V5cyA9IE9iamVjdC5rZXlzKGFjdHVhbCk7CisgICAgaWYgKCFlcXVhbChrZXlzLCBPYmplY3Qu
a2V5cyhleHBlY3RlZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoIWVxdWFsKGFjdHVhbFtpXSwg
ZXhwZWN0ZWRbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBh
Y3R1YWxWYWx1ZSA9IGV2YWwoYWN0dWFsKTsKKyAgICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV2YWwo
ZXhwZWN0ZWQpOworICAgIGlmIChlcXVhbChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSkpCisg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9ICJQQVNTOiAiICsgYWN0dWFsICsgIiBpcyAiICsg
ZXhwZWN0ZWRWYWx1ZSArICIgb2YgdHlwZSAiICsgdHlwZW9mIGFjdHVhbFZhbHVlICsgIjxicj4i
OworICAgIGVsc2UKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gIkZBSUw6ICIgKyBhY3R1
YWwgKyAiIGlzICIgKyBhY3R1YWxWYWx1ZSArICIgc2hvdWxkIGJlICIgKyBleHBlY3RlZFZhbHVl
ICsgIiBvZiB0eXBlICIgKyB0eXBlb2YgZXhwZWN0ZWRWYWx1ZSArICI8YnI+IjsKK30KKworZnVu
Y3Rpb24gb25tZXNzYWdlKGV2dCkgeworICAgIGV2ZW50RGF0YSA9IGV2dC5kYXRhCisgICAgc2hv
dWxkQmUoImV2ZW50RGF0YSIsIG1lc3NhZ2VzLnNoaWZ0KCkpOworCisgICAgaWYgKGV2dC5kYXRh
ID09ICdkb25lJyAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBvbm1lc3NhZ2UsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3Nh
Z2UobWVzc2FnZSwgc2hvdWxkVGhyb3csIGV4cGVjdGVkKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
dmFyIHZhbHVlID0gZXZhbChtZXNzYWdlKTsKKyAgICAgICAgcG9zdE1lc3NhZ2UodmFsdWUsICIq
Iik7CisgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MICs9ICJGQUlMOiAncG9zdE1lc3NhZ2UoIittZXNzYWdlKyIpJyBzaG91bGQgdGhyb3cgYnV0
IGRpZG4ndDxicj4iOworICAgICAgICBtZXNzYWdlcy5wdXNoKGV4cGVjdGVkIHx8IG1lc3NhZ2Up
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCArPSAiUEFTUzogJ3Bvc3RNZXNzYWdlKCIrbWVzc2FnZSsiKScg
dGhyZXcgIiArIGUgKyAiPGJyPiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUu
aW5uZXJIVE1MICs9ICJGQUlMOiAncG9zdE1lc3NhZ2UoIittZXNzYWdlKyIpJyBzaG91bGQgbm90
IHRocm93IGJ1dCB0aHJldyAiICsgZSArICI8YnI+IjsKKyAgICB9Cit9CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICJUZXN0cyB0aGF0IHdlIGNs
b25lIG9iamVjdCBoaWVyYXJjaGllcyI7CisKK3RyeVBvc3RNZXNzYWdlKCdudWxsJyk7Cit0cnlQ
b3N0TWVzc2FnZSgndW5kZWZpbmVkJyk7Cit0cnlQb3N0TWVzc2FnZSgnMScpOwordHJ5UG9zdE1l
c3NhZ2UoJ3RydWUnKTsKK3RyeVBvc3RNZXNzYWdlKCciMSInKTsKK3RyeVBvc3RNZXNzYWdlKCco
e30pJyk7Cit0cnlQb3N0TWVzc2FnZSgnKHthOjF9KScpOwordHJ5UG9zdE1lc3NhZ2UoJ1tdJyk7
Cit0cnlQb3N0TWVzc2FnZSgnWzEsMiwzXScpOwordHJ5UG9zdE1lc3NhZ2UoJ1ssLDFdJyk7Cit0
cnlQb3N0TWVzc2FnZSgnKGZ1bmN0aW9uKCl7fSknLCBmYWxzZSwgJ251bGwnKTsKK3RyeVBvc3RN
ZXNzYWdlKCduZXcgRGF0ZSgwKScpOwordHJ5UG9zdE1lc3NhZ2UoJ2N5Y2xpY09iamVjdCcsIHRy
dWUpOworY3ljbGljT2JqZWN0PXt9OworY3ljbGljT2JqZWN0LnNlbGYgPSBjeWNsaWNPYmplY3Q7
Cit0cnlQb3N0TWVzc2FnZSgnY3ljbGljT2JqZWN0JywgdHJ1ZSk7CitjeWNsaWNBcnJheT1bXTsK
K2N5Y2xpY0FycmF5WzBdID0gY3ljbGljQXJyYXk7Cit0cnlQb3N0TWVzc2FnZSgnY3ljbGljQXJy
YXknLCB0cnVlKTsKK2RlZXBBcnJheT1bXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykKKyAgICBkZWVwQXJyYXk9W2RlZXBBcnJheV07Cit0cnlQb3N0TWVzc2FnZSgnZGVlcEFycmF5
Jyk7CityZWFsbHlEZWVwQXJyYXk9W107Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgaSsr
KQorICAgIHJlYWxseURlZXBBcnJheT1bcmVhbGx5RGVlcEFycmF5XTsKK3RyeVBvc3RNZXNzYWdl
KCdyZWFsbHlEZWVwQXJyYXknLCB0cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCd3aW5kb3cnLCB0cnVl
KTsKKwordHJ5UG9zdE1lc3NhZ2UoJyJkb25lIicpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50cy1leHBlY3RlZC50
eHQKaW5kZXggYzg3NDE2Yi4uYjY4MmEzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2luaXQtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtNDUsNyArNDUsNyBAQCBQQVNTIHRlc3RJ
bml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCB0cnVlLCBmYWxzZSwgImIiLCAiYyIsICJkIiwgd2lu
ZG93LCBudWxsJykuYgogUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJyJhIiwgZmFsc2Us
IGZhbHNlLCAiYiIsICJjIiwgImQiLCB3aW5kb3csIG51bGwnKS5jYW5jZWxhYmxlIGlzIGZhbHNl
CiBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgdHJ1ZSwgImIiLCAi
YyIsICJkIiwgd2luZG93LCBudWxsJykuY2FuY2VsYWJsZSBpcyB0cnVlCiBQQVNTIHRlc3RJbml0
RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRv
dywgbnVsbCcpLmRhdGEgaXMgJ2InCi1QQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEi
LCBmYWxzZSwgZmFsc2UsIG51bGwsICJjIiwgImQiLCB3aW5kb3csIG51bGwnKS5kYXRhIGlzICdu
dWxsJworUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJyJhIiwgZmFsc2UsIGZhbHNlLCBu
dWxsLCAiYyIsICJkIiwgd2luZG93LCBudWxsJykuZGF0YSBpcyBudWxsCiBQQVNTIHRlc3RJbml0
RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRv
dywgbnVsbCcpLm9yaWdpbiBpcyAnYycKIFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICci
YSIsIGZhbHNlLCBmYWxzZSwgImIiLCBudWxsLCAiZCIsIHdpbmRvdywgbnVsbCcpLm9yaWdpbiBp
cyAnbnVsbCcKIFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxz
ZSwgImIiLCAiYyIsICJkIiwgd2luZG93LCBudWxsJykubGFzdEV2ZW50SWQgaXMgJ2QnCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvaW5pdC1ldmVudHMu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvaW5pdC1ldmVudHMuanMK
aW5kZXggMzRmYTY2Zi4uZTJmM2QxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2NyaXB0LXRlc3RzL2luaXQtZXZlbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NjcmlwdC10ZXN0cy9pbml0LWV2ZW50cy5qcwpAQCAtNTYsNyArNTYsNyBAQCBzaG91bGRC
ZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgdHJ1ZSwgZmFsc2UsIFwiYlwiLCBc
ImNcIiwgXCJkXCIsIHdpbgogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJh
XCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBcImRcIiwgd2luZG93LCBudWxsJykuY2Fu
Y2VsYWJsZSIsICJmYWxzZSIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAn
XCJhXCIsIGZhbHNlLCB0cnVlLCBcImJcIiwgXCJjXCIsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5j
YW5jZWxhYmxlIiwgInRydWUiKTsKIHNob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywg
J1wiYVwiLCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcp
LmRhdGEiLCAiJ2InIik7Ci1zaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFc
IiwgZmFsc2UsIGZhbHNlLCBudWxsLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcpLmRhdGEi
LCAiJ251bGwnIik7CitzaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwg
ZmFsc2UsIGZhbHNlLCBudWxsLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcpLmRhdGEiLCAi
bnVsbCIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNl
LCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBcImRcIiwgd2luZG93LCBudWxsJykub3JpZ2luIiwgIidj
JyIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBm
YWxzZSwgXCJiXCIsIG51bGwsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5vcmlnaW4iLCAiJ251bGwn
Iik7CiBzaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgZmFsc2UsIGZh
bHNlLCBcImJcIiwgXCJjXCIsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5sYXN0RXZlbnRJZCIsICIn
ZCciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvdXNl
LW1hY2hpbmUtc3RhY2suanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3Vz
ZS1tYWNoaW5lLXN0YWNrLmpzCmluZGV4IDE1MDFlYTkuLmIzZjhkYzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvdXNlLW1hY2hpbmUtc3RhY2suanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy91c2UtbWFjaGluZS1zdGFjay5q
cwpAQCAtMTYsNiArMTYsNiBAQCB0cnkgewogICAgIHRyeSB7CiAgICAgICAgIGcoKTsKICAgICB9
IGNhdGNoIChleCkgewotICAgICAgICBwb3N0TWVzc2FnZShleCk7CisgICAgICAgIHBvc3RNZXNz
YWdlKGV4LnRvU3RyaW5nKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZGUxNS4uY2JhOWQ3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OTAgQEAKKzIwMDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUg
cG9zc2libGUgdG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2Vycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKwor
ICAgICAgICBJbXBsZW1lbnQgb2JqZWN0IGNsb25pbmcgc2VtYW50aWNzIGZvciBwb3N0TWVzc2Fn
ZS4gIEN1cnJlbnRseSBvbmx5CisgICAgICAgIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgc3BlYyAtLSBjbG9uaW5nIG9mIEZpbGUsIEZpbGVMaXN0LAorICAgICAgICBJbWFnZURhdGEs
IGFuZCBSZWdFeHAgd2VyZSBsZWZ0IG91dCBhcyB0aGV5IHdvdWxkIGhhdmUgc2lnbmlmaWNhbnRs
eQorICAgICAgICBpbmNyZWFzZWQgcGF0Y2ggc2l6ZS4KKworICAgICAgICBDbG9uaW5nIHJlcXVp
cmVzIG11bHRpcGxlIHRyZWUgd2Fsa3Mgc28gd2UgdXNlIGEgdGVtcGxhdGVkIHRyZWUKKyAgICAg
ICAgd2FsayBmdW5jdGlvbiwgYWxsb3dpbmcgdXMgdG8gc2hhcmUgYSBzaW5nbGUgaW1wbGVtZW50
YXRpb24gZm9yCisgICAgICAgIHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbiwgYW5kIGV2
ZW50dWFsIGRlc3RydWN0aW9uIG9mIHRoZQorICAgICAgICBzZXJpYWxpemVkIG9iamVjdCB0cmVl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRPYmplY3Q6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkT2JqZWN0
OjpuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkT2JqZWN0Ojp2YWx1ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRPYmplY3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRPYmplY3Q6OlNlcmlhbGl6ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZEFycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkQXJyYXk6
OmNhbkRvRmFzdFJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZEFycmF5OjpnZXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkQXJyYXk6OmdldFNwYXJzZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRBcnJheTo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRBcnJheTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZEFycmF5
OjpTZXJpYWxpemVkQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRTZXJpYWxpemVkRGF0YTo6YXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRT
ZXJpYWxpemVkRGF0YTo6YXNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAg
KFdlYkNvcmU6OndhbGspOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVdhbGtlcjo6QmFzZVdhbGtl
cik6CisgICAgICAgIChXZWJDb3JlOjpCYXNlV2Fsa2VyOjpzaG91bGRUZXJtaW5hdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFzZVdhbGtlcjo6dGlja3NVbnRpbE5leHRDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlV2Fsa2VyOjpkaWRUaW1lT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VXYWxrZXI6OnRocm93U3RhY2tPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlV2Fs
a2VyOjp0aHJvd0ludGVycnVwdGVkRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6U2VyaWFsaXppbmdUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OmlzQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpp
bmdUcmVlV2Fsa2VyOjppc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemluZ1Ry
ZWVXYWxrZXI6OmFzSW5wdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemluZ1Ry
ZWVXYWxrZXI6OmFzSW5wdXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjpjcmVhdGVPdXRwdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmNyZWF0ZU91dHB1dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemluZ1RyZWVXYWxrZXI6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmNhbkRvRmFzdFJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXppbmdUcmVlV2Fsa2VyOjpnZXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemlu
Z1RyZWVXYWxrZXI6OmdldFNwYXJzZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpp
bmdUcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpwdXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OnB1dFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6c3RhcnRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmVuZEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6aW5n
VHJlZVdhbGtlcjo6c3RhcnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjplbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlRGF0YTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpE
ZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6aXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6aXNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemlu
Z1RyZWVXYWxrZXI6OmFzSW5wdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6YXNJbnB1dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6Y3JlYXRlT3V0cHV0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNyZWF0ZU91dHB1dE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpjYW5Eb0Zhc3RSZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpnZXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6Z2V0U3BhcnNlSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmdldFByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6cHV0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OnB1dFByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpzdGFydEFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjplbmRBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6c3RhcnRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmVuZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpkZXNlcmlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnNob3VsZFRlcm1pbmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnRpY2tzVW50aWxOZXh0
Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpkaWRUaW1lT3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6dGhyb3dTdGFja092ZXJm
bG93KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6dGhyb3dJbnRlcnJ1
cHRlZEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6Om51
bGwpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjppc0FycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6aXNPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjphc0lucHV0QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjphc0lucHV0T2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6Y3JlYXRlT3V0cHV0QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpjcmVhdGVPdXRwdXRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGVhcmRvd25UcmVlV2Fsa2VyOjpjYW5Eb0Zhc3RSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
YXJkb3duVHJlZVdhbGtlcjo6Z2V0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25U
cmVlV2Fsa2VyOjpnZXRTcGFyc2VJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRy
ZWVXYWxrZXI6OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdh
bGtlcjo6Y29udmVydElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVl
V2Fsa2VyOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJl
ZVdhbGtlcjo6cHV0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2Vy
OjpwdXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnN0
YXJ0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjplbmRBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnN0YXJ0T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6ZW5kT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnRlYXJEb3duU2VyaWFsaXpl
ZERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFNlcmlhbGl6ZWREYXRhOjp+U2hhcmVkU2Vy
aWFsaXplZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0
YTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6flNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0ltbWVkaWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0RvdWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc1N0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc09iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Om9wZXJhdG9yIGJvb2wgKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnJlbGVhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICog
ZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVu
dERhdGEpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjptZXNzYWdlKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRpbWVy
OjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCk6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdl
KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5Lmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29y
a2VyQ29udGV4dFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2Vy
Q29udGV4dFRhc2s6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VX
b3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisKIDIwMDktMTAtMDUgIEpvaG4gQWJkLUVsLU1hbGVr
ICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYmEwNjI3MC4uZjgxYWFlOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTY3MSw2ICsyOTY3MSwx
NCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8
RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTdHJpbmdTb3VyY2VQcm92
aWRlci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyM2M1OGQ0Li4zZjc0NDA2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1NSw2ICsyMzU1LDggQEAKIAkJQTcx
ODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTcwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmNwcCAqLzsgfTsKIAkJQTczNTJDMUEwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1
MkMxODBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCAqLzsgfTsKKwkJQTc1RTQ5
NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjgw
MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLzsgfTsKIAkJQTc1RThCODkwRTFERTJE
NjAwN0YyNDgxIC8qIEZFQmxlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3NUU4QjgxMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmggKi87IH07
CiAJCUE3NUU4QjhBMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4QjgyMEUxREUyRDYw
MDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCAqLzsgfTsKQEAgLTc1NDIsNiArNzU0NCw4IEBA
CiAJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAg
LyogUmVuZGVyU1ZHQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcz
NTJDMTgwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzVFNDk3NTEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQmxlbmQuY3BwOyBwYXRoID0g
ZmlsdGVycy9GRUJsZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RThC
ODEwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRkVCbGVuZC5oOyBwYXRoID0gZmlsdGVycy9GRUJsZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0
cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQ29sb3JNYXRy
aXguY3BwOyBwYXRoID0gZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MjI3LDYgKzE0MjMxLDggQEAKIAkJCQk2NTQ4OEQ2QTBERDVBODNE
MDA5RDgzQjIgLyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlFMUE2NDNGQzBFQzA5
N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJRTFBNjQz
RjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLywKKwkJCQlB
NzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJ
CQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE3OTUzLDYgKzE3OTU5LDcgQEAKIAkJCQlCQzk0NjJEODEwN0E3QjRDMDA4NTcxOTMgLyogQmVm
b3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0NjM0ODEwN0E5MzY2MDA4NTcx
OTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2M0I5MTA3
NkM5N0YwMDJDMjE0MiAvKiBQb2xpY3lDaGVjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc1RTQ5
NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMDA3Myw2ICsyMDA4MCw3IEBACiAJCQkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNC
IC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTQ2MzQ2MTA3
QTkzNEIwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2suY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggN2RkYzVlZC4uY2ZiNTMwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlICJSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtOTUyLDcgKzk1Myw3IEBAIEpTVmFs
dWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKIAogICAgIERPTVdpbmRv
dyogc291cmNlID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5p
bXBsKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwor
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgYXJncy5hdCgwKSk7CiAKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0YzYxYzA0Li4yZTdi
MmQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApA
QCAtNTksNyArNTksNyBAQCBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QQogICAgIGNvbnN0IFVTdHJp
bmcmIHR5cGVBcmcgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwogICAgIGJvb2wgY2FuQnVi
YmxlQXJnID0gYXJncy5hdCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxl
QXJnID0gYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgZGF0
YUFyZyA9IGFyZ3MuYXQoMykudG9TdHJpbmcoZXhlYyk7CisgICAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShl
eGVjLCBhcmdzLmF0KDMpKTsKICAgICBjb25zdCBVU3RyaW5nJiBvcmlnaW5BcmcgPSBhcmdzLmF0
KDQpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0g
YXJncy5hdCg1KS50b1N0cmluZyhleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRv
RE9NV2luZG93KGFyZ3MuYXQoNikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAppbmRleCA3ZTkwOTQzLi4xN2IxZWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uaApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5k
bGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzLCBUKiBpbXBsKQogICAgIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGFyZ3MuYXQo
MCkpOwogICAgICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKICAgICAgICAgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoZXhlYywgYXJncy5hdCgxKSwgcG9ydEFycmF5KTsKICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWYz
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTAsMCArMSw4MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworI2luY2x1ZGUg
PHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZQoreworCitjbGFzcyBTZXJpYWxpemVkT2Jq
ZWN0IDogcHVibGljIFNoYXJlZFNlcmlhbGl6ZWREYXRhCit7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPFVTdHJpbmc6OlJlcD4gPiBQcm9wZXJ0eU5hbWVMaXN0OworICAgIHR5
cGVkZWYgVmVjdG9yPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE+IFZhbHVlTGlzdDsKKyAgICB2
b2lkIHNldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZXMuc2l6
ZSgpID09IG1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIG1fbmFtZXMuYXBwZW5kKHByb3BlcnR5
TmFtZS51c3RyaW5nKCkucmVwKCkpOworICAgICAgICBtX3ZhbHVlcy5hcHBlbmQodmFsdWUpOwor
ICAgIH0KKyAgICBQcm9wZXJ0eU5hbWVMaXN0JiBuYW1lcygpIHsgcmV0dXJuIG1fbmFtZXM7IH0K
KyAgICBWYWx1ZUxpc3QmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZE9iamVjdCk7CisgICAgfQorICAgIHZvaWQgY2xl
YXIoKQorICAgIHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAgICAgICBtX3ZhbHVlcy5j
bGVhcigpOworICAgIH0KK3ByaXZhdGU6CisgICAgU2VyaWFsaXplZE9iamVjdCgpIHsgfQorICAg
IFByb3BlcnR5TmFtZUxpc3QgbV9uYW1lczsKKyAgICBWYWx1ZUxpc3QgbV92YWx1ZXM7Cit9Owor
CitjbGFzcyBTZXJpYWxpemVkQXJyYXkgOiBwdWJsaWMgU2hhcmVkU2VyaWFsaXplZERhdGEKK3sK
KyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4gPiBTcGFyc2VNYXA7CitwdWJsaWM6CisgICAgdm9pZCBzZXRJbmRl
eCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUp
CisgICAgeworICAgICAgICBpZiAoaW5kZXggPT0gbV9jb21wYWN0U3RvcmFnZS5zaXplKCkpCisg
ICAgICAgICAgICBtX2NvbXBhY3RTdG9yYWdlLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fc3BhcnNlU3RvcmFnZS5zZXQoaW5kZXgsIHZhbHVlKTsKKyAgICB9CisK
KyAgICBib29sIGNhbkRvRmFzdFJlYWQodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gaW5kZXggPCBtX2NvbXBhY3RTdG9yYWdlLnNpemUoKTsKKyAgICB9CisKKyAg
ICBjb25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiBnZXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fY29tcGFjdFN0b3JhZ2Uuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1fY29tcGFjdFN0b3JhZ2VbaW5kZXhdOworICAgIH0KKworICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgZ2V0U3BhcnNlSW5kZXgodW5zaWduZWQgaW5kZXgs
IGJvb2wmIGhhc0luZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ID49IG1fY29tcGFj
dFN0b3JhZ2Uuc2l6ZSgpKTsKKyAgICAgICAgU3BhcnNlTWFwOjppdGVyYXRvciBpdGVyID0gbV9z
cGFyc2VTdG9yYWdlLmZpbmQoaW5kZXgpOworICAgICAgICBpZiAoaXRlciA9PSBtX3NwYXJzZVN0
b3JhZ2UuZW5kKCkpIHsKKyAgICAgICAgICAgIGhhc0luZGV4ID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSgpOworICAgICAgICB9CisgICAgICAg
IGhhc0luZGV4ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVu
Z3RoOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VyaWFsaXplZEFycmF5KGxlbmd0aCkpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgbV9jb21wYWN0U3RvcmFnZS5jbGVhcigpOworICAgICAgICBtX3NwYXJzZVN0
b3JhZ2UuY2xlYXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAwOworICAgIH0KK3ByaXZhdGU6Cisg
ICAgU2VyaWFsaXplZEFycmF5KHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBtX2xlbmd0aChs
ZW5ndGgpCisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxTZXJpYWxpemVkU2NyaXB0VmFsdWVE
YXRhPiBtX2NvbXBhY3RTdG9yYWdlOworICAgIFNwYXJzZU1hcCBtX3NwYXJzZVN0b3JhZ2U7Cisg
ICAgdW5zaWduZWQgbV9sZW5ndGg7Cit9OworCitTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBkYXRhKQor
ICAgIDogbV90eXBlKE9iamVjdFR5cGUpCisgICAgLCBtX3NoYXJlZERhdGEoZGF0YSkKK3sKK30K
KworU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShS
ZWZQdHI8U2VyaWFsaXplZEFycmF5PiBkYXRhKQorICAgIDogbV90eXBlKEFycmF5VHlwZSkKKyAg
ICAsIG1fc2hhcmVkRGF0YShkYXRhKQoreworfQorCitTZXJpYWxpemVkQXJyYXkqIFNoYXJlZFNl
cmlhbGl6ZWREYXRhOjphc0FycmF5KCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VyaWFs
aXplZEFycmF5Kj4odGhpcyk7Cit9CisKK1NlcmlhbGl6ZWRPYmplY3QqIFNoYXJlZFNlcmlhbGl6
ZWREYXRhOjphc09iamVjdCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRP
YmplY3QqPih0aGlzKTsKK30KKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJS
ZWN1cnNpb24gPSA0MDAwMDsKK2VudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFycmF5
U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJheUVuZFZpc2l0TWVtYmVyLAor
ICAgIE9iamVjdFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZp
c2l0TWVtYmVyIH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVdhbGtlcj4gdHlwZW5hbWUgVHJl
ZVdhbGtlcjo6T3V0cHV0VHlwZSB3YWxrKFRyZWVXYWxrZXImIGNvbnRleHQsIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6OklucHV0VHlwZSBpbikKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRyZWVXYWxr
ZXI6OklucHV0T2JqZWN0IElucHV0T2JqZWN0OworICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJlZVdh
bGtlcjo6SW5wdXRBcnJheSBJbnB1dEFycmF5OworICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJlZVdh
bGtlcjo6T3V0cHV0T2JqZWN0IE91dHB1dE9iamVjdDsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6Ok91dHB1dEFycmF5IE91dHB1dEFycmF5OworICAgIHR5cGVkZWYgdHlwZW5hbWUg
VHJlZVdhbGtlcjo6SW5wdXRUeXBlIElucHV0VHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6Ok91dHB1dFR5cGUgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6OlByb3BlcnR5TGlzdCBQcm9wZXJ0eUxpc3Q7CisKKyAgICBWZWN0b3I8dWludDMy
X3QsIDE2PiBpbmRleFN0YWNrOworICAgIFZlY3Rvcjx1aW50MzJfdCwgMTY+IGxlbmd0aFN0YWNr
OworICAgIFZlY3RvcjxQcm9wZXJ0eUxpc3QsIDE2PiBwcm9wZXJ0eVN0YWNrOworICAgIFZlY3Rv
cjxJbnB1dE9iamVjdCwgMTY+IGlucHV0T2JqZWN0U3RhY2s7CisgICAgVmVjdG9yPElucHV0QXJy
YXksIDE2PiBpbnB1dEFycmF5U3RhY2s7CisgICAgVmVjdG9yPE91dHB1dE9iamVjdCwgMTY+IG91
dHB1dE9iamVjdFN0YWNrOworICAgIFZlY3RvcjxPdXRwdXRBcnJheSwgMTY+IG91dHB1dEFycmF5
U3RhY2s7CisgICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNj4gc3RhdGVTdGFjazsKKyAgICBXYWxr
ZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKKyAgICBJbnB1dFR5cGUgaW5WYWx1ZSA9IGlu
OworICAgIE91dHB1dFR5cGUgb3V0VmFsdWUgPSBjb250ZXh0Lm51bGwoKTsKKworICAgIHVuc2ln
bmVkIHRpY2tDb3VudCA9IGNvbnRleHQudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgIHdoaWxl
ICgxKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgIGFycmF5U3RhcnRT
dGF0ZToKKyAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNBcnJheShpblZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpICsgaW5wdXRBcnJheVN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aHJvd1N0
YWNrT3ZlcmZsb3coKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIElucHV0QXJyYXkgaW5BcnJh
eSA9IGNvbnRleHQuYXNJbnB1dEFycmF5KGluVmFsdWUpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGNvbnRleHQubGVuZ3RoKGluQXJyYXkpOworICAgICAgICAgICAgICAgIE91
dHB1dEFycmF5IG91dEFycmF5ID0gY29udGV4dC5jcmVhdGVPdXRwdXRBcnJheShsZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5zdGFydEFycmF5KGluQXJyYXksIG91dEFycmF5
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAgICAgICAg
ICAgICAgIGlucHV0QXJyYXlTdGFjay5hcHBlbmQoaW5BcnJheSk7CisgICAgICAgICAgICAgICAg
b3V0cHV0QXJyYXlTdGFjay5hcHBlbmQob3V0QXJyYXkpOworICAgICAgICAgICAgICAgIGluZGV4
U3RhY2suYXBwZW5kKDApOworICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLmFwcGVuZChsZW5n
dGgpOworICAgICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhcnJheVN0YXJ0VmlzaXRNZW1iZXI6CisgICAgICAgICAgICBjYXNlIEFycmF5U3Rh
cnRWaXNpdE1lbWJlcjogeworICAgICAgICAgICAgICAgIGlmICghLS10aWNrQ291bnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZGlkVGltZU91dCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LnRocm93SW50ZXJydXB0ZWRFeGNlcHRpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aWNrQ291bnQgPSBjb250ZXh0LnRpY2tzVW50
aWxOZXh0Q2hlY2soKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJbnB1
dEFycmF5IGFycmF5ID0gaW5wdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCBpbmRleCA9IGluZGV4U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIGlmIChp
bmRleCA9PSBsZW5ndGhTdGFjay5sYXN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5wdXRB
cnJheSBpbkFycmF5ID0gaW5wdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgT3V0cHV0QXJyYXkgb3V0QXJyYXkgPSBvdXRwdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5lbmRBcnJheShpbkFycmF5LCBvdXRBcnJheSk7CisgICAg
ICAgICAgICAgICAgICAgIG91dFZhbHVlID0gb3V0QXJyYXk7CisgICAgICAgICAgICAgICAgICAg
IGlucHV0QXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1
dEFycmF5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQuY2FuRG9GYXN0UmVhZChhcnJheSwgaW5kZXgpKQorICAg
ICAgICAgICAgICAgICAgICBpblZhbHVlID0gY29udGV4dC5nZXRJbmRleChhcnJheSwgaW5kZXgp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0lu
ZGV4ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBjb250ZXh0LmdldFNw
YXJzZUluZGV4KGFycmF5LCBpbmRleCwgaGFzSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWhhc0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3Qo
KSsrOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhcnJheVN0YXJ0VmlzaXRNZW1iZXI7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoT3V0cHV0VHlwZSB0cmFuc2Zvcm1lZCA9IGNvbnRleHQuY29udmVydElmVGVybWlu
YWwoaW5WYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIG91dFZhbHVlID0gdHJhbnNmb3JtZWQ7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2su
YXBwZW5kKEFycmF5RW5kVmlzaXRNZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIHN0
YXRlVW5rbm93bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gZmFsbHRo
cm91Z2gKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJl
cjogeworICAgICAgICAgICAgICAgIE91dHB1dEFycmF5IG91dEFycmF5ID0gb3V0cHV0QXJyYXlT
dGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5wdXRJbmRleChvdXRBcnJheSwg
aW5kZXhTdGFjay5sYXN0KCksIG91dFZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbmRleFN0YWNr
Lmxhc3QoKSsrOworICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToKKyAgICAgICAgICAg
IGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogeworICAgICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0
LmlzT2JqZWN0KGluVmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFj
ay5zaXplKCkgKyBpbnB1dEFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lv
bikgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRocm93U3RhY2tPdmVyZmxvdygpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5udWxsKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIElucHV0T2JqZWN0IGluT2JqZWN0ID0gY29udGV4dC5hc0lu
cHV0T2JqZWN0KGluVmFsdWUpOworICAgICAgICAgICAgICAgIE91dHB1dE9iamVjdCBvdXRPYmpl
Y3QgPSBjb250ZXh0LmNyZWF0ZU91dHB1dE9iamVjdCgpOworICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC5zdGFydE9iamVjdChpbk9iamVjdCwgb3V0T2JqZWN0KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAgICAgICAgICAgICAgIGlucHV0T2JqZWN0
U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFj
ay5hcHBlbmQob3V0T2JqZWN0KTsKKyAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgw
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmdldFByb3BlcnR5TmFtZXMoaW5PYmplY3QsIHBy
b3BlcnR5U3RhY2spOworICAgICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgorICAgICAgICAgICAgY2Fz
ZSBPYmplY3RTdGFydFZpc2l0TWVtYmVyOiB7CisgICAgICAgICAgICAgICAgaWYgKCEtLXRpY2tD
b3VudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5kaWRUaW1lT3V0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlv
bigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRpY2tDb3VudCA9IGNvbnRl
eHQudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIElucHV0T2JqZWN0IG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOworICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gaW5kZXhTdGFjay5sYXN0KCk7CisgICAgICAg
ICAgICAgICAgUHJvcGVydHlMaXN0JiBwcm9wZXJ0aWVzID0gcHJvcGVydHlTdGFjay5sYXN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IHByb3BlcnRpZXMuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIElucHV0T2JqZWN0IGluT2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5s
YXN0KCk7CisgICAgICAgICAgICAgICAgICAgIE91dHB1dE9iamVjdCBvdXRPYmplY3QgPSBvdXRw
dXRPYmplY3RTdGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5kT2Jq
ZWN0KGluT2JqZWN0LCBvdXRPYmplY3QpOworICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSA9
IG91dE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5yZW1vdmVM
YXN0KCk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0YWNrLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5WYWx1ZSA9
IGNvbnRleHQuZ2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0aWVzW2luZGV4XSwgaW5kZXgpOwor
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2hvdWxkVGVybWluYXRlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKworICAgICAgICAgICAgICAgIGlm
IChPdXRwdXRUeXBlIHRyYW5zZm9ybWVkID0gY29udGV4dC5jb252ZXJ0SWZUZXJtaW5hbChpblZh
bHVlKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0VmFsdWUgPSB0cmFuc2Zvcm1lZDsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQo
T2JqZWN0RW5kVmlzaXRNZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXRlVW5r
bm93bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnB1dFByb3BlcnR5KG91dHB1dE9iamVjdFN0YWNrLmxh
c3QoKSwgcHJvcGVydHlTdGFjay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldLCBvdXRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2hvdWxkVGVybWluYXRlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKworICAgICAgICAgICAgICAgIGlu
ZGV4U3RhY2subGFzdCgpKys7CisgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZpc2l0
TWVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGVVbmtub3duOgorICAgICAg
ICAgICAgY2FzZSBTdGF0ZVVua25vd246CisgICAgICAgICAgICAgICAgaWYgKE91dHB1dFR5cGUg
dHJhbnNmb3JtZWQgPSBjb250ZXh0LmNvbnZlcnRJZlRlcm1pbmFsKGluVmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG91dFZhbHVlID0gdHJhbnNmb3JtZWQ7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC5pc0FycmF5KGluVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5U3RhcnRT
dGF0ZTsKKyAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0U3RhdGU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLmxhc3QoKTsKKyAgICAgICAgc3RhdGVTdGFjay5y
ZW1vdmVMYXN0KCk7CisKKyAgICAgICAgaWYgKCEtLXRpY2tDb3VudCkgeworICAgICAgICAgICAg
aWYgKGNvbnRleHQuZGlkVGltZU91dCgpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC50aHJv
d0ludGVycnVwdGVkRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQu
bnVsbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGlja0NvdW50ID0gY29udGV4dC50
aWNrc1VudGlsTmV4dENoZWNrKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG91dFZh
bHVlOworfQorCitzdHJ1Y3QgQmFzZVdhbGtlciB7CisgICAgQmFzZVdhbGtlcihFeGVjU3RhdGUq
IGV4ZWMpCisgICAgICAgIDogbV9leGVjKGV4ZWMpCisgICAgICAgICwgbV90aW1lb3V0Q2hlY2tl
cihleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIpCisgICAgeworICAgICAgICBtX3Rp
bWVvdXRDaGVja2VyLnJlc2V0KCk7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogbV9leGVjOworICAg
IFRpbWVvdXRDaGVja2VyIG1fdGltZW91dENoZWNrZXI7CisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbV9nY0J1ZmZlcjsKKworICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpOworICAgIH0KKworICAgIHVuc2lnbmVk
IHRpY2tzVW50aWxOZXh0Q2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdGltZW91dENo
ZWNrZXIudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgIH0KKworICAgIGJvb2wgZGlkVGltZU91
dCgpCisgICAgeworICAgICAgICByZXR1cm4gbV90aW1lb3V0Q2hlY2tlci5kaWRUaW1lT3V0KG1f
ZXhlYyk7CisgICAgfQorCisgICAgdm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3coKQorICAgIHsKKyAg
ICAgICAgbV9leGVjLT5zZXRFeGNlcHRpb24oY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhl
YykpOworICAgIH0KKworICAgIHZvaWQgdGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlvbigpCisgICAg
eworICAgICAgICBtX2V4ZWMtPnNldEV4Y2VwdGlvbihjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbigmbV9leGVjLT5nbG9iYWxEYXRhKCkpKTsKKyAgICB9Cit9OworCitzdHJ1Y3Qg
U2VyaWFsaXppbmdUcmVlV2Fsa2VyIDogcHVibGljIEJhc2VXYWxrZXIgeworICAgIHR5cGVkZWYg
SlNWYWx1ZSBJbnB1dFR5cGU7CisgICAgdHlwZWRlZiBKU0FycmF5KiBJbnB1dEFycmF5OworICAg
IHR5cGVkZWYgSlNPYmplY3QqIElucHV0T2JqZWN0OworICAgIHR5cGVkZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YSBPdXRwdXRUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPFNlcmlhbGl6ZWRB
cnJheT4gT3V0cHV0QXJyYXk7CisgICAgdHlwZWRlZiBSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4g
T3V0cHV0T2JqZWN0OworICAgIHR5cGVkZWYgUHJvcGVydHlOYW1lQXJyYXkgUHJvcGVydHlMaXN0
OworCisgICAgU2VyaWFsaXppbmdUcmVlV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAg
OiBCYXNlV2Fsa2VyKGV4ZWMpCisgICAgeworICAgIH0KKworICAgIE91dHB1dFR5cGUgbnVsbCgp
IHsgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoKTsgfQorCisgICAgYm9vbCBpc0Fy
cmF5KEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CisgICAgICAgIHJldHVybiBpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFs
RGF0YSgpLCBvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OmluZm8pOworICAg
IH0KKworICAgIGJvb2wgaXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2YWx1ZS5pc09iamVjdCgpOworICAgIH0KKworICAgIEpTQXJyYXkqIGFzSW5wdXRBcnJh
eShKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFzQXJyYXkodmFsdWUpOwor
ICAgIH0KKworICAgIEpTT2JqZWN0KiBhc0lucHV0T2JqZWN0KEpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUpOworICAgIH0KKworICAgIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZEFycmF5PiBjcmVhdGVPdXRwdXRBcnJheSh1bnNpZ25lZCBsZW5ndGgpCisg
ICAgeworICAgICAgICByZXR1cm4gU2VyaWFsaXplZEFycmF5OjpjcmVhdGUobGVuZ3RoKTsKKyAg
ICB9CisKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+IGNyZWF0ZU91dHB1dE9iamVj
dCgpCisgICAgeworICAgICAgICByZXR1cm4gU2VyaWFsaXplZE9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgfQorCisgICAgdWludDMyX3QgbGVuZ3RoKEpTVmFsdWUgYXJyYXkpCisgICAgeworICAgICAg
ICBBU1NFUlQoYXJyYXkuaXNPYmplY3QoKSk7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChhcnJheSk7CisgICAgICAgIHJldHVybiBvYmplY3QtPmdldChtX2V4ZWMsIG1fZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9VSW50MzIobV9leGVjKTsKKyAgICB9CisKKyAg
ICBib29sIGNhbkRvRmFzdFJlYWQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5
KSAmJiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpOworICAgIH0KKworICAgIEpTVmFsdWUgZ2V0
SW5kZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAgfQorCisgICAgSlNWYWx1ZSBnZXRTcGFy
c2VJbmRleChKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIGJvb2wmIGhh
c0luZGV4KQorICAgIHsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICAg
ICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkgeworICAgICAgICAgICAgaGFzSW5kZXggPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisgICAgICAg
IGhhc0luZGV4ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICB9CisKKyAg
ICBKU1ZhbHVlIGdldFByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQpCisgICAgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QpOworICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QobV9leGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUo
bV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgfQor
CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBjb252ZXJ0SWZUZXJtaW5hbChKU1ZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAg
IHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKHZhbHVlKTsKKworICAgICAgICBpZiAo
dmFsdWUuaXNTdHJpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWVEYXRhKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHZhbHVlLmlz
TnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpOdW1iZXJUeXBlLCB2YWx1ZS51bmNoZWNrZWRHZXRO
dW1iZXIoKSk7CisKKyAgICAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QodmFs
dWUpLT5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjppbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkRhdGVU
eXBlLCBhc0RhdGVJbnN0YW5jZSh2YWx1ZSktPmludGVybmFsTnVtYmVyKCkpOworCisgICAgICAg
IGlmIChpc0FycmF5KHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0
VmFsdWVEYXRhKCk7CisKKyAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsKKyAgICAgICAgaWYg
KHZhbHVlLmlzT2JqZWN0KCkgJiYgdmFsdWUuZ2V0Q2FsbERhdGEodW51c2VkRGF0YSkgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEo
KTsKKworICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlhbGl6
ZSBhcyBudWxsLgorICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShqc051
bGwoKSk7CisgICAgfQorCisgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTY+JiBwcm9wZXJ0eVN0YWNrKQorICAgIHsK
KyAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
CisgICAgICAgIG9iamVjdC0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX2V4ZWMsIHByb3BlcnR5U3Rh
Y2subGFzdCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHB1dEluZGV4KFJlZlB0cjxTZXJpYWxpemVk
QXJyYXk+IGFycmF5LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIGNvbnN0IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXJyYXktPnNldEluZGV4KHByb3Bl
cnR5TmFtZSwgdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgcHV0UHJvcGVydHkoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBj
b25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9i
amVjdC0+c2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIH0KKworICAgIGJvb2wgc3RhcnRB
cnJheShKU0FycmF5KiBpbkFycmF5LCBSZWZQdHI8U2VyaWFsaXplZEFycmF5PikKKyAgICB7Cisg
ICAgICAgIC8vIEN5Y2xlIGRldGVjdGlvbgorICAgICAgICBpZiAoIW1fY3ljbGVEZXRlY3Rvci5h
ZGQoaW5BcnJheSkuc2Vjb25kKSB7CisgICAgICAgICAgICBtX2V4ZWMtPnNldEV4Y2VwdGlvbihj
cmVhdGVUeXBlRXJyb3IobV9leGVjLCAiQ2Fubm90IHBvc3QgY3ljbGljIHN0cnVjdHVyZXMuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1fZ2NCdWZm
ZXIuYXBwZW5kKGluQXJyYXkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2
b2lkIGVuZEFycmF5KEpTQXJyYXkqIGluQXJyYXksIFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+KQor
ICAgIHsKKyAgICAgICAgbV9jeWNsZURldGVjdG9yLnJlbW92ZShpbkFycmF5KTsKKyAgICAgICAg
bV9nY0J1ZmZlci5yZW1vdmVMYXN0KCk7CisgICAgfQorCisgICAgYm9vbCBzdGFydE9iamVjdChK
U09iamVjdCogaW5PYmplY3QsIFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PikKKyAgICB7CisgICAg
ICAgIC8vIEN5Y2xlIGRldGVjdGlvbgorICAgICAgICBpZiAoIW1fY3ljbGVEZXRlY3Rvci5hZGQo
aW5PYmplY3QpLnNlY29uZCkgeworICAgICAgICAgICAgbV9leGVjLT5zZXRFeGNlcHRpb24oY3Jl
YXRlVHlwZUVycm9yKG1fZXhlYywgIkNhbm5vdCBwb3N0IGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2djQnVmZmVy
LmFwcGVuZChpbk9iamVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZv
aWQgZW5kT2JqZWN0KEpTT2JqZWN0KiBpbk9iamVjdCwgUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+
KQorICAgIHsKKyAgICAgICAgbV9jeWNsZURldGVjdG9yLnJlbW92ZShpbk9iamVjdCk7CisgICAg
ICAgIG1fZ2NCdWZmZXIucmVtb3ZlTGFzdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNo
U2V0PEpTT2JqZWN0Kj4gbV9jeWNsZURldGVjdG9yOworfTsKKworU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpzZXJpYWxpemUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGluVmFsdWUpCit7CisgICAgU2VyaWFsaXppbmdUcmVlV2Fsa2VyIGNvbnRl
eHQoZXhlYyk7CisgICAgcmV0dXJuIHdhbGs8U2VyaWFsaXppbmdUcmVlV2Fsa2VyPihjb250ZXh0
LCBpblZhbHVlKTsKK30KKworCitzdHJ1Y3QgRGVzZXJpYWxpemluZ1RyZWVXYWxrZXIgOiBwdWJs
aWMgQmFzZVdhbGtlciB7CisgICAgdHlwZWRlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhIElu
cHV0VHlwZTsKKyAgICB0eXBlZGVmIFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IElucHV0QXJyYXk7
CisgICAgdHlwZWRlZiBSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gSW5wdXRPYmplY3Q7CisgICAg
dHlwZWRlZiBKU1ZhbHVlIE91dHB1dFR5cGU7CisgICAgdHlwZWRlZiBKU0FycmF5KiBPdXRwdXRB
cnJheTsKKyAgICB0eXBlZGVmIEpTT2JqZWN0KiBPdXRwdXRPYmplY3Q7CisgICAgdHlwZWRlZiBT
ZXJpYWxpemVkT2JqZWN0OjpQcm9wZXJ0eU5hbWVMaXN0IFByb3BlcnR5TGlzdDsKKworICAgIERl
c2VyaWFsaXppbmdUcmVlV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBtdXN0Q29weSkKKyAg
ICAgICAgOiBCYXNlV2Fsa2VyKGV4ZWMpCisgICAgICAgICwgbV9tdXN0Q29weShtdXN0Q29weSkK
KyAgICB7CisgICAgfQorCisgICAgT3V0cHV0VHlwZSBudWxsKCkgeyByZXR1cm4ganNOdWxsKCk7
IH0KKworICAgIGJvb2wgaXNBcnJheShjb25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZS50eXBlKCkgPT0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YTo6QXJyYXlUeXBlOworICAgIH0KKworICAgIGJvb2wgaXNPYmplY3QoY29u
c3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gdmFsdWUudHlwZSgpID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok9iamVjdFR5cGU7
CisgICAgfQorCisgICAgU2VyaWFsaXplZEFycmF5KiBhc0lucHV0QXJyYXkoY29uc3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUu
YXNBcnJheSgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRPYmplY3QqIGFzSW5wdXRPYmplY3Qo
Y29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdmFsdWUuYXNPYmplY3QoKTsKKyAgICB9CisKKyAgICBKU0FycmF5KiBjcmVhdGVPdXRw
dXRBcnJheSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkobV9leGVjKTsKKyAgICAgICAgYXJyYXktPnNldExlbmd0aChs
ZW5ndGgpOworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGNy
ZWF0ZU91dHB1dE9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlP
YmplY3QobV9leGVjKTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBsZW5ndGgoUmVmUHRyPFNlcmlh
bGl6ZWRBcnJheT4gYXJyYXkpCisgICAgeworICAgICAgICByZXR1cm4gYXJyYXktPmxlbmd0aCgp
OworICAgIH0KKworICAgIGJvb2wgY2FuRG9GYXN0UmVhZChSZWZQdHI8U2VyaWFsaXplZEFycmF5
PiBhcnJheSwgdW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gYXJyYXktPmNh
bkRvRmFzdFJlYWQoaW5kZXgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURh
dGEgZ2V0SW5kZXgoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAgfQor
CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBnZXRTcGFyc2VJbmRleChSZWZQdHI8U2Vy
aWFsaXplZEFycmF5PiBhcnJheSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBib29sJiBoYXNJbmRl
eCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcnJheS0+Z2V0U3BhcnNlSW5kZXgocHJvcGVydHlO
YW1lLCBoYXNJbmRleCk7CisgICAgfQorCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBn
ZXRQcm9wZXJ0eShSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gb2JqZWN0LCBjb25zdCBSZWZQdHI8
VVN0cmluZzo6UmVwPiYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9iamVjdC0+bmFtZXMoKVtwcm9wZXJ0eUluZGV4XSA9PSBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gb2JqZWN0LT52YWx1ZXMoKVtwcm9wZXJ0eUluZGV4
XTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGNvbnZlcnRJZlRlcm1pbmFsKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6QXJyYXlUeXBl
OgorICAgICAgICAgICAgY2FzZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpPYmplY3RUeXBl
OgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBjYXNlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlN0cmluZ1R5cGU6CisgICAgICAgICAgICAgICAgaWYg
KG1fbXVzdENvcHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhtX2V4ZWMs
IFVTdHJpbmcodmFsdWUuYXNTdHJpbmcoKS5kYXRhKCksIHZhbHVlLmFzU3RyaW5nKCkuc2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUuYXNTdHJp
bmcoKSk7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkltbWVk
aWF0ZVR5cGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzSW1tZWRpYXRlKCk7Cisg
ICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok51bWJlclR5cGU6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fZXhlYywgdmFsdWUuYXNEb3VibGUoKSk7
CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkRhdGVUeXBlOgor
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgRGF0ZUluc3RhbmNlKG1fZXhlYywg
dmFsdWUuYXNEb3VibGUoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGdldFByb3BlcnR5TmFtZXMoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgVmVjdG9yPFNlcmlhbGl6ZWRPYmplY3Q6OlByb3BlcnR5
TmFtZUxpc3QsIDE2PiYgcHJvcGVydGllcykKKyAgICB7CisgICAgICAgIHByb3BlcnRpZXMuYXBw
ZW5kKG9iamVjdC0+bmFtZXMoKSk7CisgICAgfQorCisgICAgdm9pZCBwdXRJbmRleChKU0FycmF5
KiBhcnJheSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXJyYXktPnB1dChtX2V4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgcHV0UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgY29uc3QgUmVmUHRyPFVTdHJp
bmc6OlJlcD4gcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KG1fbXVzdENvcHkpCisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKG1f
ZXhlYywgVVN0cmluZyhwcm9wZXJ0eU5hbWUtPmRhdGEoKSwgcHJvcGVydHlOYW1lLT5zaXplKCkp
KSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJ
ZGVudGlmaWVyKG1fZXhlYywgcHJvcGVydHlOYW1lLmdldCgpKSwgdmFsdWUpOworICAgIH0KKwor
ICAgIGJvb2wgc3RhcnRBcnJheShSZWZQdHI8U2VyaWFsaXplZEFycmF5PiwgSlNBcnJheSogb3V0
QXJyYXkpCisgICAgeworICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRBcnJheSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVuZEFycmF5KFJlZlB0cjxTZXJpYWxp
emVkQXJyYXk+LCBKU0FycmF5KikKKyAgICB7CisgICAgICAgIG1fZ2NCdWZmZXIucmVtb3ZlTGFz
dCgpOworICAgIH0KKyAgICBib29sIHN0YXJ0T2JqZWN0KFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0
PiwgSlNPYmplY3QqIG91dE9iamVjdCkKKyAgICB7CisgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5k
KG91dE9iamVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVuZE9i
amVjdChSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4sIEpTT2JqZWN0KikKKyAgICB7CisgICAgICAg
IG1fZ2NCdWZmZXIucmVtb3ZlTGFzdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1f
bXVzdENvcHk7Cit9OworCitKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OmRlc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBtdXN0Q29weSkgY29uc3QKK3sKKyAgICBEZXNl
cmlhbGl6aW5nVHJlZVdhbGtlciBjb250ZXh0KGV4ZWMsIG11c3RDb3B5KTsKKyAgICByZXR1cm4g
d2FsazxEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcj4oY29udGV4dCwgKnRoaXMpOworfQorCitzdHJ1
Y3QgVGVhcmRvd25UcmVlV2Fsa2VyIHsKKyAgICB0eXBlZGVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURhdGEgSW5wdXRUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gSW5w
dXRBcnJheTsKKyAgICB0eXBlZGVmIFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBJbnB1dE9iamVj
dDsKKyAgICB0eXBlZGVmIGJvb2wgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIGJvb2wgT3V0cHV0
QXJyYXk7CisgICAgdHlwZWRlZiBib29sIE91dHB1dE9iamVjdDsKKyAgICB0eXBlZGVmIFNlcmlh
bGl6ZWRPYmplY3Q6OlByb3BlcnR5TmFtZUxpc3QgUHJvcGVydHlMaXN0OworCisgICAgYm9vbCBz
aG91bGRUZXJtaW5hdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIHRpY2tzVW50aWxOZXh0Q2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IDB4RkZGRkZGRkY7CisgICAgfQorCisgICAgYm9vbCBkaWRUaW1lT3V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHRocm93U3RhY2tPdmVyZmxvdygp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgdGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlvbigpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgbnVsbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBi
b29sIGlzQXJyYXkoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gdmFsdWUudHlwZSgpID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURh
dGE6OkFycmF5VHlwZTsKKyAgICB9CisKKyAgICBib29sIGlzT2JqZWN0KGNvbnN0IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnR5
cGUoKSA9PSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpPYmplY3RUeXBlOworICAgIH0KKwor
ICAgIFNlcmlhbGl6ZWRBcnJheSogYXNJbnB1dEFycmF5KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzQXJyYXkoKTsK
KyAgICB9CisKKyAgICBTZXJpYWxpemVkT2JqZWN0KiBhc0lucHV0T2JqZWN0KGNvbnN0IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
LmFzT2JqZWN0KCk7CisgICAgfQorCisgICAgYm9vbCBjcmVhdGVPdXRwdXRBcnJheSh1bnNpZ25l
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0
ZU91dHB1dE9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgdWludDMyX3QgbGVuZ3RoKFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IGFycmF5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFycmF5LT5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBib29sIGNhbkRv
RmFzdFJlYWQoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFycmF5LT5jYW5Eb0Zhc3RSZWFkKGluZGV4KTsKKyAgICB9
CisKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhIGdldEluZGV4KFJlZlB0cjxTZXJpYWxp
emVkQXJyYXk+IGFycmF5LCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
cnJheS0+Z2V0SW5kZXgoaW5kZXgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURhdGEgZ2V0U3BhcnNlSW5kZXgoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgYm9vbCYgaGFzSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4g
YXJyYXktPmdldFNwYXJzZUluZGV4KHByb3BlcnR5TmFtZSwgaGFzSW5kZXgpOworICAgIH0KKwor
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgZ2V0UHJvcGVydHkoUmVmUHRyPFNlcmlhbGl6
ZWRPYmplY3Q+IG9iamVjdCwgY29uc3QgUmVmUHRyPFVTdHJpbmc6OlJlcD4mIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgcHJvcGVydHlJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvYmplY3Qt
Pm5hbWVzKClbcHJvcGVydHlJbmRleF0gPT0gcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdC0+dmFsdWVzKClbcHJvcGVydHlJbmRleF07CisgICAgfQorCisgICAgYm9vbCBjb252
ZXJ0SWZUZXJtaW5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGE6OkFycmF5VHlwZToKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlRGF0YTo6T2JqZWN0VHlwZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlN0cmluZ1R5
cGU6CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkltbWVkaWF0
ZVR5cGU6CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok51bWJl
clR5cGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgVmVjdG9yPFNlcmlhbGl6
ZWRPYmplY3Q6OlByb3BlcnR5TmFtZUxpc3QsIDE2PiYgcHJvcGVydGllcykKKyAgICB7CisgICAg
ICAgIHByb3BlcnRpZXMuYXBwZW5kKG9iamVjdC0+bmFtZXMoKSk7CisgICAgfQorCisgICAgdm9p
ZCBwdXRJbmRleChib29sLCB1bnNpZ25lZCwgYm9vbCkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBwdXRQcm9wZXJ0eShib29sLCBjb25zdCBSZWZQdHI8VVN0cmluZzo6UmVwPiYsIGJvb2wpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgc3RhcnRBcnJheShSZWZQdHI8U2VyaWFsaXplZEFycmF5
PiwgYm9vbCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVu
ZEFycmF5KFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IGFycmF5LCBib29sKQorICAgIHsKKyAgICAg
ICAgYXJyYXktPmNsZWFyKCk7CisgICAgfQorICAgIGJvb2wgc3RhcnRPYmplY3QoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+LCBib29sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHZvaWQgZW5kT2JqZWN0KFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBvYmplY3QsIGJv
b2wpCisgICAgeworICAgICAgICBvYmplY3QtPmNsZWFyKCk7CisgICAgfQorfTsKKwordm9pZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjp0ZWFyRG93blNlcmlhbGl6ZWREYXRhKCkKK3sKKyAg
ICBpZiAobV9zaGFyZWREYXRhICYmIG1fc2hhcmVkRGF0YS0+cmVmQ291bnQoKSA+IDEpCisgICAg
ICAgIHJldHVybjsKKyAgICBUZWFyZG93blRyZWVXYWxrZXIgY29udGV4dDsKKyAgICB3YWxrPFRl
YXJkb3duVHJlZVdhbGtlcj4oY29udGV4dCwgKnRoaXMpOworfQorCit9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iYjUzYmYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpZm5kZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKKyNkZWZpbmUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlX2gKKworI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICBjbGFzcyBTZXJpYWxpemVkT2JqZWN0OworICAgIGNsYXNzIFNlcmlhbGl6ZWRBcnJh
eTsKKworICAgIGNsYXNzIFNoYXJlZFNlcmlhbGl6ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
U2hhcmVkU2VyaWFsaXplZERhdGE+CisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVh
bCB+U2hhcmVkU2VyaWFsaXplZERhdGEoKSB7IH0KKyAgICAgICAgU2VyaWFsaXplZEFycmF5KiBh
c0FycmF5KCk7CisgICAgICAgIFNlcmlhbGl6ZWRPYmplY3QqIGFzT2JqZWN0KCk7CisgICAgfTsK
KworICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworICAgIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFNlcmlh
bGl6ZWRUeXBlIHsKKyAgICAgICAgICAgIEVtcHR5VHlwZSwKKyAgICAgICAgICAgIERhdGVUeXBl
LAorICAgICAgICAgICAgTnVtYmVyVHlwZSwKKyAgICAgICAgICAgIEltbWVkaWF0ZVR5cGUsCisg
ICAgICAgICAgICBPYmplY3RUeXBlLAorICAgICAgICAgICAgQXJyYXlUeXBlLAorICAgICAgICAg
ICAgU3RyaW5nVHlwZQorICAgICAgICB9OworCisgICAgICAgIFNlcmlhbGl6ZWRUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEgc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKyAg
ICAgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgYm9vbCBtdXN0
Q29weSkgY29uc3Q7CisKKyAgICAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobV9zaGFyZWREYXRhKQorICAgICAgICAgICAgICAgIHRl
YXJEb3duU2VyaWFsaXplZERhdGEoKTsKKyAgICAgICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZURhdGEoKQorICAgICAgICAgICAgOiBtX3R5cGUoRW1wdHlUeXBlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVE
YXRhKGNvbnN0IEpTQzo6VVN0cmluZyYgc3RyaW5nKQorICAgICAgICAgICAgOiBtX3R5cGUoU3Ry
aW5nVHlwZSkKKyAgICAgICAgICAgICwgbV9zdHJpbmcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNp
emUoKSkgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIGp1c3Qgc2hhcmUgdGhlIFJlcAorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFs
dWVEYXRhKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgICAgIDogbV90eXBlKEltbWVkaWF0
ZVR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwor
ICAgICAgICAgICAgbV9kYXRhLm1faW1tZWRpYXRlID0gSlNDOjpKU1ZhbHVlOjplbmNvZGUodmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShTZXJp
YWxpemVkVHlwZSB0eXBlLCBkb3VibGUgdmFsdWUpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2RhdGEubV9kb3VibGUgPSB2YWx1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoUmVmUHRyPFNlcmlhbGl6
ZWRPYmplY3Q+KTsKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShSZWZQdHI8U2Vy
aWFsaXplZEFycmF5Pik7CisKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGFzSW1tZWRpYXRlKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbW1lZGlhdGVUeXBl
KTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmRlY29kZShtX2RhdGEubV9pbW1l
ZGlhdGUpOworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUeXBlIHx8IG1fdHlw
ZSA9PSBEYXRlVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gbV9kYXRhLm1fZG91YmxlOworICAg
ICAgICB9CisKKyAgICAgICAgSlNDOjpVU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICAgICAgICAg
IHJldHVybiBtX3N0cmluZzsKKyAgICAgICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRPYmplY3Qq
IGFzT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3NoYXJlZERhdGEpOworICAgICAg
ICAgICAgcmV0dXJuIG1fc2hhcmVkRGF0YS0+YXNPYmplY3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFNlcmlhbGl6ZWRBcnJheSogYXNBcnJheSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gQXJyYXlUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3No
YXJlZERhdGEpOworICAgICAgICAgICAgcmV0dXJuIG1fc2hhcmVkRGF0YS0+YXNBcnJheSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgIT0gRW1wdHlUeXBlOyB9CisKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBy
ZWxlYXNlKCkgeworICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSByZXN1bHQg
PSAqdGhpczsKKyAgICAgICAgICAgICp0aGlzID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSgp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgdm9pZCB0ZWFyRG93blNlcmlhbGl6ZWREYXRhKCk7CisgICAgICAgIFNlcmlhbGl6
ZWRUeXBlIG1fdHlwZTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZFNlcmlhbGl6ZWREYXRhPiBtX3No
YXJlZERhdGE7CisgICAgICAgIEpTQzo6VVN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgdW5pb24g
eworICAgICAgICAgICAgZG91YmxlIG1fZG91YmxlOworICAgICAgICAgICAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBtX2ltbWVkaWF0ZTsKKyAgICAgICAgfSBtX2RhdGE7CisgICAgfTsKKworICAgIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4KKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpzZXJp
YWxpemUoZXhlYywgdmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShTdHJpbmcgc3RyaW5nKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKHN0cmluZykpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZWxlYXNlKCkgeworICAgICAg
ICAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJlc3VsdCA9IGFkb3B0UmVm
KG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUobV92YWx1ZSkpOworICAgICAgICAgICAgbV92YWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoKTsKKyAgICAgICAgICAgIHJlc3VsdC0+bV9t
dXN0Q29weSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaWYgKG1fdmFsdWUudHlw
ZSgpICE9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlN0cmluZ1R5cGUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuYXNTdHJpbmcoKTsK
KyAgICAgICAgfQorCisgICAgICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuZGVzZXJp
YWxpemUoZXhlYywgbV9tdXN0Q29weSk7CisgICAgICAgIH0KKworICAgICAgICB+U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgdmFsdWUp
CisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgICAgICAsIG1fbXVzdENvcHko
ZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWVEYXRhIG1fdmFsdWU7CisgICAgICAgIGJvb2wgbV9tdXN0Q29weTsKKyAgICB9OworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4
IGQ1NTJhYTAuLjA4N2YwYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMTg0Miw2ICsxODQyLDExIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAg
ICAgICAgcmV0dXJuICIkdmFsdWUudG9TdHJpbmcoZXhlYykiOwogICAgIH0KIAorICAgIGlmICgk
dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgeworICAgICAgICAkaW1wbEluY2x1ZGVz
eyJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuICJTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCAkdmFsdWUpIjsKKyAgICB9CisKICAgICAkaW1w
bEluY2x1ZGVzeyJGbG9hdFBvaW50LmgifSA9IDEgaWYgJHR5cGUgZXEgIlNWR1BvaW50IjsKICAg
ICAkaW1wbEluY2x1ZGVzeyJGbG9hdFJlY3QuaCJ9ID0gMSBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7
CiAgICAgJGltcGxJbmNsdWRlc3siSFRNTE9wdGlvbkVsZW1lbnQuaCJ9ID0gMSBpZiAkdHlwZSBl
cSAiSFRNTE9wdGlvbkVsZW1lbnQiOwpAQCAtMTk0Nyw2ICsxOTUyLDkgQEAgc3ViIE5hdGl2ZVRv
SlNWYWx1ZQogICAgICAgICAkam9pbmVkTmFtZSA9ICR0eXBlOwogICAgICAgICAkam9pbmVkTmFt
ZSA9fiBzL0Fic3xSZWwvLzsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJGpvaW5lZE5hbWUuaCJ9
ID0gMTsKKyAgICB9IGVsc2lmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewor
ICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5oIn0gPSAxOworICAgICAgICByZXR1cm4gIiR2
YWx1ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoZXhlYykgOiBqc051bGwoKSI7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgIyBEZWZhdWx0LCBpbmNsdWRlIGhlYWRlciB3aXRoIHNhbWUgbmFtZS4KICAg
ICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDAwMjZiYTEuLjMxNzA4NmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KQEAgLTMx
MSw3ICszMTEsNyBAQCBzdWIgR2V0Q2xhc3NOYW1lCiAgICAgbXkgJG5hbWUgPSAkY29kZUdlbmVy
YXRvci0+U3RyaXBNb2R1bGUoc2hpZnQpOwogCiAgICAgIyBzcGVjaWFsIGNhc2VzCi0gICAgcmV0
dXJuICJOU1N0cmluZyIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkbmFtZSk7Cisg
ICAgcmV0dXJuICJOU1N0cmluZyIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkbmFt
ZSkgb3IgJG5hbWUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CiAgICAgcmV0dXJuICJOUyRu
YW1lIiBpZiBJc05hdGl2ZU9iakNUeXBlKCRuYW1lKTsKICAgICByZXR1cm4gIkJPT0wiIGlmICRu
YW1lIGVxICJib29sZWFuIjsKICAgICByZXR1cm4gInVuc2lnbmVkIiBpZiAkbmFtZSBlcSAidW5z
aWduZWQgbG9uZyI7CkBAIC00OTIsNiArNDkyLDExIEBAIHN1YiBHZXRPYmpDVHlwZUdldHRlcgog
ICAgIHJldHVybiAiV1RGOjpnZXRQdHIobmF0aXZlRXZlbnRMaXN0ZW5lcikiIGlmICR0eXBlIGVx
ICJFdmVudExpc3RlbmVyIjsKICAgICByZXR1cm4gIldURjo6Z2V0UHRyKG5hdGl2ZU5vZGVGaWx0
ZXIpIiBpZiAkdHlwZSBlcSAiTm9kZUZpbHRlciI7CiAgICAgcmV0dXJuICJXVEY6OmdldFB0cihu
YXRpdmVSZXNvbHZlcikiIGlmICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOworICAgIAorICAg
IGlmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgeworICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKKyAgICAgICAgcmV0dXJuICJX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShXZWJDb3JlOjpTdHJpbmcoJGFy
Z05hbWUpKSI7CisgICAgfQogICAgIHJldHVybiAiY29yZSgkYXJnTmFtZSkiOwogfQogCkBAIC02
MDcsNiArNjEyLDExIEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgeworICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgICMgRklYTUU6IHdvbid0IGNvbXBpbGUgd2l0aG91dCB0
aGVzZQogICAgICRpbXBsSW5jbHVkZXN7IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgifSA9
IDEgaWYgJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iOwogICAgICRpbXBsSW5jbHVkZXN7
Ik5hbWVOb2RlTGlzdC5oIn0gPSAxIGlmICR0eXBlIGVxICJOb2RlTGlzdCI7CkBAIC0xMjEyLDYg
KzEyMjIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfSBlbHNp
ZiAoJGlkbFR5cGUgZXEgIkNvbG9yIikgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50
SGVhZCA9ICJXZWJDb3JlOjpuc0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7CiAgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewor
ICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIkZ2V0dGVyQ29udGVudEhlYWQi
OworICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiLT50b1N0cmluZygpIjsg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2lmIChDb252ZXJzaW9uTmVlZGVkKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSkpIHsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29u
dGVudEhlYWQgPSAia2l0KFdURjo6Z2V0UHRyKCRnZXR0ZXJDb250ZW50SGVhZCI7CiAgICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpKSI7CkBAIC0xNDQ2LDYgKzE0NTksOCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBm
dW5jdGlvbkNvbnRlbnQsICIgICAgICAgIHJldHVybiAkdG9SZXR1cm47XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIHJldHVybiBuaWw7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkcmV0dXJuVHlwZSBlcSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlIikgeworICAgICAgICAgICAgICAgICRjb250ZW50ID0gImZv
byI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChDb252ZXJzaW9u
TmVlZGVkKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUG9kVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlw
ZSkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDJlZjhiYzIuLjQyNzlmYjcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCgpCiB7
CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8
RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCitN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAgLTUx
LDcgKzUxLDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNv
dXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBE
T01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKIHsK
ICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03NCw3ICs3NCw3IEBA
IE1lc3NhZ2VQb3J0KiBNZXNzYWdlRXZlbnQ6Om1lc3NhZ2VQb3J0KCkKICAgICByZXR1cm4gKCpt
X3BvcnRzKVswXS5nZXQoKTsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqIHBvcnQpCit2
b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIE1lc3NhZ2VQb3J0KiBwb3J0KQogewogICAg
IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gMDsKICAgICBpZiAocG9ydCkgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCA1NTVlZDQ3Li5iN2Y5YjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxNSArNDMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVu
dCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBj
cmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgU3RyaW5nJiBk
YXRhID0gIiIsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9IDApCisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0g
MCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAiIiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9
ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlID0gMCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfk1l
c3NhZ2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAg
ICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7CiAK
LSAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Cisg
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RFdmVudElkOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KQEAgLTU5LDE1ICs2MCwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0
ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBt
ZXNzYWdlUG9ydCgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRh
dGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIGluaXRNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsK
KyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7Cisg
ICAgICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NS
ZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4pOwog
Ci0gICAgICAgIFN0cmluZyBtX2RhdGE7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1fZGF0YTsKICAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJpbmcg
bV9sYXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmlkbAppbmRleCBhMzJjYzkzLi43ZTQ5N2ZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKQEAg
LTMwLDIwICszMCwyMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1
Y3RvciwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIE1lc3NhZ2VFdmVudCA6IEV2ZW50
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRh
OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmlnaW47CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbGFzdEV2ZW50SWQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01XaW5kb3cgc291cmNlOwogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYg
TEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdl
dHRlcl0gQXJyYXkgcG9ydHM7CiAKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9v
bGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5nIG9y
aWdpbkFyZywgaW4gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCBpbiBET01XaW5kb3cgc291cmNl
QXJnLCBpbiBBcnJheSBtZXNzYWdlUG9ydHMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGluaXRN
ZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJn
LCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRh
QXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01TdHJpbmcgbGFzdEV2ZW50SWRBcmcs
IGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIEFycmF5IG1lc3NhZ2VQb3J0cyk7CiAjZWxzZQog
ICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEgdGhl
IE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgcG9ydC4KICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0OwogCi0gICAg
ICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVh
biBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRh
dGFBcmcsIGluIERPTVN0cmluZyBvcmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFy
ZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpOwor
ICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJv
b2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01TdHJp
bmcgbGFzdEV2ZW50SWRBcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIE1lc3NhZ2VQb3J0
IG1lc3NhZ2VQb3J0KTsKICNlbmRpZgogCiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA1MGEw
MTA2Li45ZjZlNjQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE1lc3NhZ2VQ
b3J0Ojp+TWVzc2FnZVBvcnQoKQogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1
cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CiAgICAgaWYgKHBv
cnQpCkBAIC02NCwxMiArNjQsMTIgQEAgdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW8KICAgICBwb3N0
TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVjKTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydDo6cG9z
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBwb3N0TWVzc2FnZShtZXNzYWdl
LCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKIH0KIAotdm9pZCBNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29u
c3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghbV9lbnRhbmdsZWRDaGFubmVsKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBl
NjQ5ZDVkLi4wYWIwZjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisr
KyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQog
ICAgICAgICB+TWVzc2FnZVBvcnQoKTsKIAotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25z
dCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQp
LgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2Fn
ZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9zZSgp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggMzRiMmNlNy4uZTFhM2FjNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRh
PiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKICAg
ICByZXR1cm4gbmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVscyk7CiB9CiAKLU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICA6IG1fbWVz
c2FnZShtZXNzYWdlLmNvcHkoKSkKK01lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVu
dERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIDogbV9tZXNzYWdlKG1l
c3NhZ2UtPnJlbGVhc2UoKSkKICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCiB7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IDRhY2ZlN2YuLjIzMjFiMWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5oCkBAIC0zMyw2ICszMyw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtNDUsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogICAgIGNsYXNzIFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFN0cmluZzsKIAogICAgIC8vIFRoZSBvdmVy
d2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhhbmRs
ZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCkBAIC03
NywxNCArODAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNsYXNzIEV2ZW50
RGF0YSB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2
ZW50RGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+KTsKKyAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0YT4gY3Jl
YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4pOwogCi0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Uo
KSB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogbWVzc2FnZSgpIHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQogICAgICAgICAgICAgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMoKSB7IHJldHVybiBtX2No
YW5uZWxzLnJlbGVhc2UoKTsgfQogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBFdmVu
dERhdGEoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5Pik7Ci0gICAgICAgICAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgICAgICAgICAgRXZl
bnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgICAgICAgICBPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5k
ZXggNDkyNTIzZi4uODkwZDQ5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWEuaCIKQEAgLTgwLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgUG9z
dE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFNlY3VyaXR5T3Jp
Z2luKiB0YXJnZXRPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRv
dywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRhcmdl
dE9yaWdpbikKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdl
KG1lc3NhZ2UpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTA0LDcgKzEw
NSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7
Ci0gICAgU3RyaW5nIG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFJlZlB0cjxET01XaW5kb3c+
IG1fc291cmNlOwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFubmVs
czsKQEAgLTYzNSw3ICs2MzYsNyBAQCBOb3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvdzo6d2Vi
a2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBET01XaW5kb3c6OnBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBjb25zdCBTdHJpbmcmIHRhcmdl
dE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydHM7CiAgICAgaWYgKHBvcnQpCkBAIC02NDMsNyArNjQ0LDcgQEAg
dm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2Fn
ZVBvcnQqIHBvcnQsIGNvbnN0IFN0cmkKICAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMs
IHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRz
LCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywg
Y29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCBmMjE3N2VlLi4yNWVhZGM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CiAgICAgY2xhc3Mg
UG9zdE1lc3NhZ2VUaW1lcjsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CisgICAgY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFNjcmVlbjsKICAgICBjbGFzcyBXZWJL
aXRQb2ludDsKIApAQCAtMjE0LDkgKzIxNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CiAjZW5k
aWYKIAotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgTWVzc2FnZVBvcnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5k
b3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9y
dEFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYg
dGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cq
IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJG
aXJlZChQb3N0TWVzc2FnZVRpbWVyKik7CiAKICAgICAgICAgdm9pZCBzY3JvbGxCeShpbnQgeCwg
aW50IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCAzYjNjY2UwLi45ZTNkZjQ4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbApAQCAtMTgyLDExICsxODIsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAg
Ly8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIFtEb05vdENoZWNrRG9tYWluU2Vj
dXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4g
W09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4p
CisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVz
c2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJh
eSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3
YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBq
dXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KLSAgICAgICAgW0RvTm90Q2hlY2tE
b21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNz
YWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBET01TdHJpbmcg
dGFyZ2V0T3JpZ2luKQorICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0b21d
IHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGluIFtP
cHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQsIGluIERPTVN0cmluZyB0YXJnZXRPcmln
aW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcAppbmRleCBhZTNjMGMzLi4yYzlhMzQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKQEAgLTI5NCw3ICsyOTUs
NyBAQCB2b2lkIEV2ZW50U291cmNlOjpzdG9wKCkKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBF
dmVudFNvdXJjZTo6Y3JlYXRlTWVzc2FnZUV2ZW50KCkKIHsKICAgICBSZWZQdHI8TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnQtPmluaXRNZXNz
YWdlRXZlbnQobV9ldmVudE5hbWUuaXNFbXB0eSgpID8gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCA6IEF0b21pY1N0cmluZyhtX2V2ZW50TmFtZSksIGZhbHNlLCBmYWxzZSwgU3RyaW5nOjphZG9w
dChtX2RhdGEpLCBtX29yaWdpbiwgbV9sYXN0RXZlbnRJZCwgMCwgMCk7CisgICAgZXZlbnQtPmlu
aXRNZXNzYWdlRXZlbnQobV9ldmVudE5hbWUuaXNFbXB0eSgpID8gZXZlbnROYW1lcygpLm1lc3Nh
Z2VFdmVudCA6IEF0b21pY1N0cmluZyhtX2V2ZW50TmFtZSksIGZhbHNlLCBmYWxzZSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjphZG9wdChtX2RhdGEpKSwgbV9vcmlnaW4s
IG1fbGFzdEV2ZW50SWQsIDAsIDApOwogICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZGQ4OWMxNC4uYWJkZmYwYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAgICAgICAgIHJldHVybjsKICAgICBS
ZWZQdHI8TWVzc2FnZUV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOwogICAgIC8v
IEZJWE1FOiBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0LgotICAgIGV2
dC0+aW5pdE1lc3NhZ2VFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFs
c2UsIG1zZywgIiIsICIiLCAwLCAwKTsKKyAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQoZXZlbnRO
YW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlLCAwLCAiIiwgIiIsIDAsIDApOwogICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50
VGFzazo6Y3JlYXRlKHRoaXMsIGV2dCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAKaW5kZXggNTIwNmZkOS4uODJkYzRiMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtNDcsNyArNDcsNyBAQCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1cwogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRh
dGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBw
b3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3Nh
Z2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBNZXNzYWdlUG9ydEFycmF5
IHBvcnRzOwogICAgIGlmIChwb3J0KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQgRGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdl
UG9ydCogcG9yCiAgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7CiB9CiAKLXZv
aWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1l
c3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRl
eHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChpc0Nsb3NpbmcoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmgKaW5kZXggNzYwOWZjZC4uNzRhMzlkOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCkBAIC01NSwxMCArNTUsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1YWwg
RGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1
cm4gdGhpczsgfQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBjb25z
dCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYp
OworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAg
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChi
dWcgIzI4Nzc0KS4KLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBNZXNz
YWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bCBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbAppbmRleCA4OTli
YmFlLi5mNDIxYjlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aWRsCkBAIC0zOSw3ICszOSw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICBdIERlZGljYXRlZFdv
cmtlckNvbnRleHQgOiBXb3JrZXJDb250ZXh0IHsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFW
QVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgICAgICBbQ3VzdG9tXSB2b2lkIHBv
c3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3Nh
Z2VQb3J0cykKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBhbnkgbWVzc2Fn
ZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8g
ZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFs
bG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggYzJjMjVjMS4u
ODY0YjdjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgV29ya2VyOjp+V29ya2Vy
KCkKIH0KIAogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJp
bmRpbmdzIChidWcgIzI4Nzc0KS4KLXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
V29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydHM7CiAgICAgaWYgKHBvcnQpCkBAIC03OCwxMiArNzgsMTIgQEAgdm9p
ZCBXb3JrZXI6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQq
IHBvcnQsIEV4Y2VwdGlvbkNvZGUKICAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVj
KTsKIH0KIAotdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwg
ZWMpOwogfQogCi12b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGlu
ZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBl
Yyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKaW5kZXggNDFkMzlhMi4uNmI4ZmE4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTgsMTAg
KzU4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFdvcmtlciog
dG9Xb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0
aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
bWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAppbmRleCA5YzkzNDJiLi4wMzgyNzM5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmlkbApAQCAtMzUsMTEgKzM1LDExIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9K
QVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIFtDdXN0b21dIHZvaWQg
cG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVz
c2FnZVBvcnRzKQorICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlz
ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhl
cmUncyBubyBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdz
LCBzbyBmb3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgotICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1l
c3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQorICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3Nh
Z2VQb3J0KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oIGIvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHRQcm94eS5oCmluZGV4IGQ1NTQ1MmUuLmUxY2ExMzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaAorKysgYi9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0
KCkgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4
dChjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmlu
ZGV4IDNkMjhmOWUuLjI5ODc4ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcApAQCAtNDYsMTQgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VXb3JrZXJDb250
ZXh0VGFzaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2Fn
ZVdvcmtlckNvbnRleHRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlV29ya2VyQ29udGV4
dFRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2Fn
ZVdvcmtlckNvbnRleHRUYXNrKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi0gICAgICAgIDogbV9tZXNzYWdlKG1lc3Nh
Z2UuY29weSgpKQorICAgIE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCisgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UtPnJlbGVhc2UoKSkK
ICAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQogICAgIHsKICAgICB9CkBAIC02OCwyMCAr
NjgsMjAgQEAgcHJpdmF0ZToKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOwogfTsKIAogY2xhc3MgTWVz
c2FnZVdvcmtlclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVzc2Fn
ZSwgY2hhbm5lbHMsIG1lc3NhZ2luZ1Byb3h5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1l
c3NhZ2VXb3JrZXJUYXNrKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdp
bmdQcm94eSkKLSAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZS5jb3B5KCkpCisgICAgTWVzc2Fn
ZVdvcmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdp
bmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UtPnJl
bGVhc2UoKSkKICAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQogICAgICAgICAsIG1fbWVz
c2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCiAgICAgewpAQCAtOTgsNyArOTgsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsKICAgICBPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1f
bWVzc2FnaW5nUHJveHk7CiB9OwpAQCAtMjQwLDEyICsyNDAsMTIgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW4KICAgICB0aHJlYWQtPnN0YXJ0KCk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3ZvaWQgV29ya2Vy
TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzKQogewogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soTWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCks
IHRoaXMpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsK
ICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDhhYjBjYjYuLjc1NDEwMmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUg
d29ya2VyIG9iamVjdCB0aHJlYWQuKQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJD
b250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVX
b3JrZXJDb250ZXh0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
Q29udGV4dChjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKICAg
ICAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFByb3h5LgogICAgICAgICAv
LyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLikK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1l
c3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2Vy
T2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFBy
b3h5LmgKaW5kZXggNzdhN2Q3ZC4uMzNlMGJjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9iamVjdFByb3h5LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFBy
b3h5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEEgcHJv
eHkgdG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVjdC4KICAgICBjbGFzcyBXb3JrZXJPYmplY3RQ
cm94eSA6IHB1YmxpYyBXb3JrZXJSZXBvcnRpbmdQcm94eSB7CiAgICAgcHVibGljOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40699</attachid>
            <date>2009-10-06 00:21:09 -0700</date>
            <delta_ts>2009-10-06 15:36:29 -0700</delta_ts>
            <desc>It should be possible to post (clone) built-in JS objects to Workers</desc>
            <filename>bug-22878-20091006002108.patch</filename>
            <type>text/plain</type>
            <size>100566</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1MWE0OTZiLi5kNmZhMDc0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUgcG9z
c2libGUgdG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2VycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKworICAg
ICAgICBFeHBvc2UgaGVscGVycyB0byB0aHJvdyBjb3JyZWN0IGV4Y2VwdGlvbnMgZHVyaW5nIG9i
amVjdCBncmFwaCB3YWxrCisgICAgICAgIHVzZWQgZm9yIGNsb25pbmcgYW5kIGFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0byBjcmVhdGUgRGF0ZSBpbnN0YW5jZXMKKyAgICAgICAgd2l0aG91dCBnb2lu
ZyB0aHJvdWdoIHRoZSBKUyBEYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZSk6CisgICAgICAgICogcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oOgorCiAyMDA5LTEwLTA1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIHd4IGJ1aWxkIGZpeC4gQWRkIFN5bWJpYW4gZmls
ZXMgdG8gdGhlIGxpc3Qgb2YgZXhjbHVkZXMuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggMDkzN2IyNi4uZDk0ZGNmYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTA0
LDYgKzEwNCw3IEBAIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRU4zV1RG
MTdOb25OdWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFCiBfX1pOM0pTQzExUGFyc2VyQXJl
bmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBT
b3VyY2VDb2RlRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTRpbmZvRQorX19aTjNKU0MxMkRhdGVJ
bnN0YW5jZUMxRVBOU185RXhlY1N0YXRlRWQKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVu
dERhdGFEMkV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJjcmVhdGVMZWFrZWRFdgogX19aTjNK
U0MxMkpTR2xvYmFsRGF0YTEyc3RvcFNhbXBsaW5nRXYKQEAgLTE0MSw3ICsxNDIsOSBAQCBfX1pO
M0pTQzE0SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Rud0VtUE5T
XzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MxNFNhbXBsaW5nVGhyZWFkNHN0b3BFdgogX19aTjNK
U0MxNFNhbXBsaW5nVGhyZWFkNXN0YXJ0RWoKK19fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjEwZGlk
VGltZU91dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2
CitfX1pOM0pTQzE1Y3JlYXRlVHlwZUVycm9yRVBOU185RXhlY1N0YXRlRVBLYwogX19aTjNKU0Mx
NUpTV3JhcHBlck9iamVjdDEybWFya0NoaWxkcmVuRVJOU185TWFya1N0YWNrRQogX19aTjNKU0Mx
NXRvSW50MzJTbG93Q2FzZUVkUmIKIF9fWk4zSlNDMTZJbnRlcm5hbEZ1bmN0aW9uNGluZm9FCkBA
IC0xNzEsNyArMTc0LDkgQEAgX19aTjNKU0MyME1hcmtlZEFyZ3VtZW50QnVmZmVyMTBzbG93QXBw
ZW5kRU5TXzdKU1ZhbHVlRQogX19aTjNKU0MyM0Fic3RyYWN0U2FtcGxpbmdDb3VudGVyNGR1bXBF
dgogX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3RyaW5nRVBOU185RXhlY1N0YXRlRVBOU184
SlNPYmplY3RFTlNfN0pTVmFsdWVFUktOU183QXJnTGlzdEUKIF9fWk4zSlNDMjNzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdEVQTlNfOUV4ZWNTdGF0ZUVQS05TXzlIYXNoRW50cnlFUE5TXzhKU09iamVj
dEVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCitfX1pOM0pTQzI0Y3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MyNWV2YWx1YXRlSW5H
bG9iYWxDYWxsRnJhbWVFUktOU183VVN0cmluZ0VSTlNfN0pTVmFsdWVFUE5TXzE0SlNHbG9iYWxP
YmplY3RFCitfX1pOM0pTQzM1Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb25FUE5T
XzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291bnRFdgogX19aTjNKU0M0
SGVhcDE0cHJpbWFyeUhlYXBFbmRFdgogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0K
QEAgLTIxMyw2ICsyMTgsNyBAQCBfX1pOM0pTQzZQYXJzZXI1cGFyc2VFUE5TXzEySlNHbG9iYWxE
YXRhRVBpUE5TXzdVU3RyaW5nRQogX19aTjNKU0M3Q1N0cmluZ0QxRXYKIF9fWk4zSlNDN0NTdHJp
bmdhU0VSS1MwXwogX19aTjNKU0M3SlNBcnJheTRpbmZvRQorX19aTjNKU0M3SlNBcnJheTlzZXRM
ZW5ndGhFagogX19aTjNKU0M3SlNBcnJheUMxRU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185
U3RydWN0dXJlRUVFCiBfX1pOM0pTQzdKU0FycmF5QzFFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRy
SU5TXzlTdHJ1Y3R1cmVFRUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0M3UHJvZmlsZTEwcmVzdG9y
ZUFsbEV2CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZmU2YjM0Li5mMTA4Yjc3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI0NSw3ICsyNDUsNyBAQAogCQlCQzE4QzNGQzBFMTZGNUNEMDBCMzQ0NjAgLyogRGVx
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODYx
MTFEMENDODI0ODMwMDgxNDEyQiAvKiBEZXF1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDM0ZEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEaXNh
bGxvd0NUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzhDNEY2QjBDQTA2QkNFMDBEOTMxMEEgLyogRGlzYWxsb3dDVHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDM0ZFMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBkdG9hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTFGNjQxMzAzOUQ1QjVGMDA3ODM5NUMgLyogZHRvYS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMThDNDAwMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVs
cGVycy5oICovOyB9OworCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
NzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQwMjBFMTZGNUNEMDBC
MzQ0NjAgLyogRmFzdE1hbGxvYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVFMjE3QkEwOEU3RUVDQzAwMjNFNUY2IC8qIEZhc3RNYWxsb2MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQwMzBF
MTZGNUNEMDBCMzQ0NjAgLyogRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM1QUY0NjkwOUU5RDlEQjAwQUNEMUQ4IC8qIEZvcndhcmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQw
NDBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTky
IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCmlu
ZGV4IDZiNDc5YWUuLmU3Mjc0NDUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIERhdGVJbnN0YW5jZTo6RGF0ZUluc3RhbmNlKE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogewogfQogCitEYXRlSW5zdGFuY2U6
OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB0aW1lKQorICAgIDogSlNXcmFw
cGVyT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGF0ZVN0cnVjdHVyZSgpKQor
ICAgICwgbV9jYWNoZSgwKQoreworICAgIHNldEludGVybmFsVmFsdWUoanNOdW1iZXIoZXhlYywg
dGltZUNsaXAodGltZSkpKTsKK30KKwogRGF0ZUluc3RhbmNlOjp+RGF0ZUluc3RhbmNlKCkKIHsK
ICAgICBkZWxldGUgbV9jYWNoZTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCmlu
ZGV4IGM4ZWRjMmYuLmVlY2JiNzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERhdGVJbnN0
YW5jZSA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0
YW5jZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgdmlydHVhbCB+RGF0
ZUluc3RhbmNlKCk7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCmluZGV4IGNjMThiOTUuLjViZWFkOTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcApAQCAtNjYsNiArNjYsMTEgQEAgSlNWYWx1ZSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBjcmVhdGVFcnJvcihl
eGVjLCBSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIik7CiB9
CiAKK0pTVmFsdWUgY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
bWVzc2FnZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgVHlwZUVycm9yLCBtZXNz
YWdlKTsKK30KKwogSlNWYWx1ZSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCA0YzViZWMxLi5lNzM5
ZDA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBKU1ZhbHVlIGNyZWF0ZUludGVy
cnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTVmFsdWUgY3JlYXRlVHlw
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIEpTVmFsdWUgY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90QW5PYmplY3RF
cnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSosIGJvb2wgaXNO
dWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxv
Y2sqKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhMmNhOGYyLi41NDNkY2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKworICAgICAgICBB
ZGQgYSB0ZXN0IGZvciBvYmplY3QgY2xvbmluZyBmb3IgcG9zdE1lc3NhZ2UsIGFuZCB1cGRhdGUg
ZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdG8gcmVmbGVjdCB0aGUgbmV3IGNsb25pbmcgc2VtYW50
aWNzLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9u
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtY2xvbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5p
dC1ldmVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NjcmlwdC10ZXN0
cy9pbml0LWV2ZW50cy5qczoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3VzZS1t
YWNoaW5lLXN0YWNrLmpzOgorCiAyMDA5LTEwLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3IgbWVkaWEgdGVzdHMg
YWZ0ZXIgY29udHJvbGxlciBjaGFuZ2UgdG8gYWRkIHRoZSBmdWxsc2NyZWVuIGJ1dHRvbi4gCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVkZWQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IFJhbmdlRXJyb3I6IE1heGltdW0gY2Fs
bCBzdGFjayBzaXplIGV4Y2VlZGVkLgorVGVzdHMgdGhhdCB3ZSBjbG9uZSBvYmplY3QgaGllcmFy
Y2hpZXMKK1BBU1M6ICdwb3N0TWVzc2FnZShjeWNsaWNPYmplY3QpJyB0aHJldyBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogY3ljbGljT2JqZWN0CitQQVNTOiAncG9zdE1lc3Nh
Z2UoY3ljbGljT2JqZWN0KScgdGhyZXcgVHlwZUVycm9yOiBDYW5ub3QgcG9zdCBjeWNsaWMgc3Ry
dWN0dXJlcy4KK1BBU1M6ICdwb3N0TWVzc2FnZShjeWNsaWNBcnJheSknIHRocmV3IFR5cGVFcnJv
cjogQ2Fubm90IHBvc3QgY3ljbGljIHN0cnVjdHVyZXMuCitQQVNTOiAncG9zdE1lc3NhZ2UocmVh
bGx5RGVlcEFycmF5KScgdGhyZXcgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuCitQQVNTOiAncG9zdE1lc3NhZ2Uod2luZG93KScgdGhyZXcgVHlwZUVycm9yOiBD
YW5ub3QgcG9zdCBjeWNsaWMgc3RydWN0dXJlcy4KK1BBU1M6IGV2ZW50RGF0YSBpcyBudWxsIG9m
IHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgdW5kZWZpbmVkIG9mIHR5cGUgdW5kZWZp
bmVkCitQQVNTOiBldmVudERhdGEgaXMgMSBvZiB0eXBlIG51bWJlcgorUEFTUzogZXZlbnREYXRh
IGlzIHRydWUgb2YgdHlwZSBib29sZWFuCitQQVNTOiBldmVudERhdGEgaXMgMSBvZiB0eXBlIHN0
cmluZworUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgT2JqZWN0XSBvZiB0eXBlIG9iamVjdAor
UEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgT2JqZWN0XSBvZiB0eXBlIG9iamVjdAorUEFTUzog
ZXZlbnREYXRhIGlzIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgMSwyLDMgb2Yg
dHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyAsLDEgb2YgdHlwZSBvYmplY3QKK1BBU1M6
IGV2ZW50RGF0YSBpcyBudWxsIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgV2Vk
IERlYyAzMSAxOTY5IDE2OjAwOjAwIEdNVC0wODAwIChQU1QpIG9mIHR5cGUgb2JqZWN0CitQQVNT
OiBldmVudERhdGEgaXMgb2YgdHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBkb25lIG9m
IHR5cGUgc3RyaW5nCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lOWFiMWU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS5odG1sCkBAIC0wLDAgKzEsMTE4IEBA
Cis8aHRtbD4KKzxoZWFkPjwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBj
b25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKwordmFyIG1lc3Nh
Z2VzID0gW107CisKK2Z1bmN0aW9uIGVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYg
KHR5cGVvZiBhY3R1YWwgIT09IHR5cGVvZiBleHBlY3RlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUpIHx8IChleHBlY3RlZCBpbnN0YW5jZW9mIERh
dGUpKSB7CisgICAgICAgIGlmICgoYWN0dWFsIGluc3RhbmNlb2YgRGF0ZSkgJiYgKGV4cGVjdGVk
IGluc3RhbmNlb2YgRGF0ZSkpCisgICAgICAgICAgICByZXR1cm4gKGV4cGVjdGVkIGluc3RhbmNl
b2YgRGF0ZSkgJiYgYWN0dWFsLmdldFRpbWUoKSA9PSBleHBlY3RlZC5nZXRUaW1lKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0dWFsKSB8
fCBBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkgeworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXko
YWN0dWFsKSB8fCAhQXJyYXkuaXNBcnJheShleHBlY3RlZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChhY3R1YWwubGVuZ3RoICE9IGV4cGVjdGVkLmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1
YWwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgoaSBpbiBhY3R1YWwpIF4gKGkgaW4g
ZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZXF1YWwoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2YXIg
a2V5cyA9IE9iamVjdC5rZXlzKGFjdHVhbCk7CisgICAgaWYgKCFlcXVhbChrZXlzLCBPYmplY3Qu
a2V5cyhleHBlY3RlZCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKQorICAgICAgICBpZiAoIWVxdWFsKGFjdHVhbFtpXSwg
ZXhwZWN0ZWRbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBh
Y3R1YWxWYWx1ZSA9IGV2YWwoYWN0dWFsKTsKKyAgICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IGV2YWwo
ZXhwZWN0ZWQpOworICAgIGlmIChlcXVhbChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSkpCisg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9ICJQQVNTOiAiICsgYWN0dWFsICsgIiBpcyAiICsg
ZXhwZWN0ZWRWYWx1ZSArICIgb2YgdHlwZSAiICsgdHlwZW9mIGFjdHVhbFZhbHVlICsgIjxicj4i
OworICAgIGVsc2UKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gIkZBSUw6ICIgKyBhY3R1
YWwgKyAiIGlzICIgKyBhY3R1YWxWYWx1ZSArICIgc2hvdWxkIGJlICIgKyBleHBlY3RlZFZhbHVl
ICsgIiBvZiB0eXBlICIgKyB0eXBlb2YgZXhwZWN0ZWRWYWx1ZSArICI8YnI+IjsKK30KKworZnVu
Y3Rpb24gb25tZXNzYWdlKGV2dCkgeworICAgIGV2ZW50RGF0YSA9IGV2dC5kYXRhCisgICAgc2hv
dWxkQmUoImV2ZW50RGF0YSIsIG1lc3NhZ2VzLnNoaWZ0KCkpOworCisgICAgaWYgKGV2dC5kYXRh
ID09ICdkb25lJyAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBvbm1lc3NhZ2UsIGZhbHNlKTsKKworZnVuY3Rpb24gdHJ5UG9zdE1lc3Nh
Z2UobWVzc2FnZSwgc2hvdWxkVGhyb3csIGV4cGVjdGVkKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
dmFyIHZhbHVlID0gZXZhbChtZXNzYWdlKTsKKyAgICAgICAgcG9zdE1lc3NhZ2UodmFsdWUsICIq
Iik7CisgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MICs9ICJGQUlMOiAncG9zdE1lc3NhZ2UoIittZXNzYWdlKyIpJyBzaG91bGQgdGhyb3cgYnV0
IGRpZG4ndDxicj4iOworICAgICAgICBtZXNzYWdlcy5wdXNoKGV4cGVjdGVkIHx8IG1lc3NhZ2Up
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAg
ICBjb25zb2xlLmlubmVySFRNTCArPSAiUEFTUzogJ3Bvc3RNZXNzYWdlKCIrbWVzc2FnZSsiKScg
dGhyZXcgIiArIGUgKyAiPGJyPiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGUu
aW5uZXJIVE1MICs9ICJGQUlMOiAncG9zdE1lc3NhZ2UoIittZXNzYWdlKyIpJyBzaG91bGQgbm90
IHRocm93IGJ1dCB0aHJldyAiICsgZSArICI8YnI+IjsKKyAgICB9Cit9CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVySFRNTCA9ICJUZXN0cyB0aGF0IHdlIGNs
b25lIG9iamVjdCBoaWVyYXJjaGllcyI7CisKK3RyeVBvc3RNZXNzYWdlKCdudWxsJyk7Cit0cnlQ
b3N0TWVzc2FnZSgndW5kZWZpbmVkJyk7Cit0cnlQb3N0TWVzc2FnZSgnMScpOwordHJ5UG9zdE1l
c3NhZ2UoJ3RydWUnKTsKK3RyeVBvc3RNZXNzYWdlKCciMSInKTsKK3RyeVBvc3RNZXNzYWdlKCco
e30pJyk7Cit0cnlQb3N0TWVzc2FnZSgnKHthOjF9KScpOwordHJ5UG9zdE1lc3NhZ2UoJ1tdJyk7
Cit0cnlQb3N0TWVzc2FnZSgnWzEsMiwzXScpOwordHJ5UG9zdE1lc3NhZ2UoJ1ssLDFdJyk7Cit0
cnlQb3N0TWVzc2FnZSgnKGZ1bmN0aW9uKCl7fSknLCBmYWxzZSwgJ251bGwnKTsKK3RyeVBvc3RN
ZXNzYWdlKCduZXcgRGF0ZSgwKScpOwordHJ5UG9zdE1lc3NhZ2UoJ2N5Y2xpY09iamVjdCcsIHRy
dWUpOworY3ljbGljT2JqZWN0PXt9OworY3ljbGljT2JqZWN0LnNlbGYgPSBjeWNsaWNPYmplY3Q7
Cit0cnlQb3N0TWVzc2FnZSgnY3ljbGljT2JqZWN0JywgdHJ1ZSk7CitjeWNsaWNBcnJheT1bXTsK
K2N5Y2xpY0FycmF5WzBdID0gY3ljbGljQXJyYXk7Cit0cnlQb3N0TWVzc2FnZSgnY3ljbGljQXJy
YXknLCB0cnVlKTsKK2RlZXBBcnJheT1bXTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykKKyAgICBkZWVwQXJyYXk9W2RlZXBBcnJheV07Cit0cnlQb3N0TWVzc2FnZSgnZGVlcEFycmF5
Jyk7CityZWFsbHlEZWVwQXJyYXk9W107Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgaSsr
KQorICAgIHJlYWxseURlZXBBcnJheT1bcmVhbGx5RGVlcEFycmF5XTsKK3RyeVBvc3RNZXNzYWdl
KCdyZWFsbHlEZWVwQXJyYXknLCB0cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCd3aW5kb3cnLCB0cnVl
KTsKKwordHJ5UG9zdE1lc3NhZ2UoJyJkb25lIicpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50cy1leHBlY3RlZC50
eHQKaW5kZXggYzg3NDE2Yi4uYjY4MmEzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2luaXQtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtNDUsNyArNDUsNyBAQCBQQVNTIHRlc3RJ
bml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCB0cnVlLCBmYWxzZSwgImIiLCAiYyIsICJkIiwgd2lu
ZG93LCBudWxsJykuYgogUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJyJhIiwgZmFsc2Us
IGZhbHNlLCAiYiIsICJjIiwgImQiLCB3aW5kb3csIG51bGwnKS5jYW5jZWxhYmxlIGlzIGZhbHNl
CiBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgdHJ1ZSwgImIiLCAi
YyIsICJkIiwgd2luZG93LCBudWxsJykuY2FuY2VsYWJsZSBpcyB0cnVlCiBQQVNTIHRlc3RJbml0
RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRv
dywgbnVsbCcpLmRhdGEgaXMgJ2InCi1QQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEi
LCBmYWxzZSwgZmFsc2UsIG51bGwsICJjIiwgImQiLCB3aW5kb3csIG51bGwnKS5kYXRhIGlzICdu
dWxsJworUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJyJhIiwgZmFsc2UsIGZhbHNlLCBu
dWxsLCAiYyIsICJkIiwgd2luZG93LCBudWxsJykuZGF0YSBpcyBudWxsCiBQQVNTIHRlc3RJbml0
RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRv
dywgbnVsbCcpLm9yaWdpbiBpcyAnYycKIFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICci
YSIsIGZhbHNlLCBmYWxzZSwgImIiLCBudWxsLCAiZCIsIHdpbmRvdywgbnVsbCcpLm9yaWdpbiBp
cyAnbnVsbCcKIFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxz
ZSwgImIiLCAiYyIsICJkIiwgd2luZG93LCBudWxsJykubGFzdEV2ZW50SWQgaXMgJ2QnCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvaW5pdC1ldmVudHMu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvaW5pdC1ldmVudHMuanMK
aW5kZXggMzRmYTY2Zi4uZTJmM2QxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2NyaXB0LXRlc3RzL2luaXQtZXZlbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NjcmlwdC10ZXN0cy9pbml0LWV2ZW50cy5qcwpAQCAtNTYsNyArNTYsNyBAQCBzaG91bGRC
ZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgdHJ1ZSwgZmFsc2UsIFwiYlwiLCBc
ImNcIiwgXCJkXCIsIHdpbgogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJh
XCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBcImRcIiwgd2luZG93LCBudWxsJykuY2Fu
Y2VsYWJsZSIsICJmYWxzZSIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAn
XCJhXCIsIGZhbHNlLCB0cnVlLCBcImJcIiwgXCJjXCIsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5j
YW5jZWxhYmxlIiwgInRydWUiKTsKIHNob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywg
J1wiYVwiLCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcp
LmRhdGEiLCAiJ2InIik7Ci1zaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFc
IiwgZmFsc2UsIGZhbHNlLCBudWxsLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcpLmRhdGEi
LCAiJ251bGwnIik7CitzaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwg
ZmFsc2UsIGZhbHNlLCBudWxsLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcpLmRhdGEiLCAi
bnVsbCIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNl
LCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBcImRcIiwgd2luZG93LCBudWxsJykub3JpZ2luIiwgIidj
JyIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBm
YWxzZSwgXCJiXCIsIG51bGwsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5vcmlnaW4iLCAiJ251bGwn
Iik7CiBzaG91bGRCZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgZmFsc2UsIGZh
bHNlLCBcImJcIiwgXCJjXCIsIFwiZFwiLCB3aW5kb3csIG51bGwnKS5sYXN0RXZlbnRJZCIsICIn
ZCciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvdXNl
LW1hY2hpbmUtc3RhY2suanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3Vz
ZS1tYWNoaW5lLXN0YWNrLmpzCmluZGV4IDE1MDFlYTkuLmIzZjhkYzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvdXNlLW1hY2hpbmUtc3RhY2suanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy91c2UtbWFjaGluZS1zdGFjay5q
cwpAQCAtMTYsNiArMTYsNiBAQCB0cnkgewogICAgIHRyeSB7CiAgICAgICAgIGcoKTsKICAgICB9
IGNhdGNoIChleCkgewotICAgICAgICBwb3N0TWVzc2FnZShleCk7CisgICAgICAgIHBvc3RNZXNz
YWdlKGV4LnRvU3RyaW5nKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZGUxNS4uY2JhOWQ3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OTAgQEAKKzIwMDktMTAtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBzaG91bGQgYmUg
cG9zc2libGUgdG8gcG9zdCAoY2xvbmUpIGJ1aWx0LWluIEpTIG9iamVjdHMgdG8gV29ya2Vycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzgKKwor
ICAgICAgICBJbXBsZW1lbnQgb2JqZWN0IGNsb25pbmcgc2VtYW50aWNzIGZvciBwb3N0TWVzc2Fn
ZS4gIEN1cnJlbnRseSBvbmx5CisgICAgICAgIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgc3BlYyAtLSBjbG9uaW5nIG9mIEZpbGUsIEZpbGVMaXN0LAorICAgICAgICBJbWFnZURhdGEs
IGFuZCBSZWdFeHAgd2VyZSBsZWZ0IG91dCBhcyB0aGV5IHdvdWxkIGhhdmUgc2lnbmlmaWNhbnRs
eQorICAgICAgICBpbmNyZWFzZWQgcGF0Y2ggc2l6ZS4KKworICAgICAgICBDbG9uaW5nIHJlcXVp
cmVzIG11bHRpcGxlIHRyZWUgd2Fsa3Mgc28gd2UgdXNlIGEgdGVtcGxhdGVkIHRyZWUKKyAgICAg
ICAgd2FsayBmdW5jdGlvbiwgYWxsb3dpbmcgdXMgdG8gc2hhcmUgYSBzaW5nbGUgaW1wbGVtZW50
YXRpb24gZm9yCisgICAgICAgIHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbiwgYW5kIGV2
ZW50dWFsIGRlc3RydWN0aW9uIG9mIHRoZQorICAgICAgICBzZXJpYWxpemVkIG9iamVjdCB0cmVl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRPYmplY3Q6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkT2JqZWN0
OjpuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkT2JqZWN0Ojp2YWx1ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRPYmplY3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRPYmplY3Q6OlNlcmlhbGl6ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZEFycmF5OjpzZXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkQXJyYXk6
OmNhbkRvRmFzdFJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZEFycmF5OjpnZXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkQXJyYXk6OmdldFNwYXJzZUluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRBcnJheTo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRBcnJheTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZEFycmF5
OjpTZXJpYWxpemVkQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRTZXJpYWxpemVkRGF0YTo6YXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRT
ZXJpYWxpemVkRGF0YTo6YXNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAg
KFdlYkNvcmU6OndhbGspOgorICAgICAgICAoV2ViQ29yZTo6QmFzZVdhbGtlcjo6QmFzZVdhbGtl
cik6CisgICAgICAgIChXZWJDb3JlOjpCYXNlV2Fsa2VyOjpzaG91bGRUZXJtaW5hdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFzZVdhbGtlcjo6dGlja3NVbnRpbE5leHRDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlV2Fsa2VyOjpkaWRUaW1lT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2VXYWxrZXI6OnRocm93U3RhY2tPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlV2Fs
a2VyOjp0aHJvd0ludGVycnVwdGVkRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6U2VyaWFsaXppbmdUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OmlzQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpp
bmdUcmVlV2Fsa2VyOjppc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemluZ1Ry
ZWVXYWxrZXI6OmFzSW5wdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemluZ1Ry
ZWVXYWxrZXI6OmFzSW5wdXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjpjcmVhdGVPdXRwdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmNyZWF0ZU91dHB1dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemluZ1RyZWVXYWxrZXI6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmNhbkRvRmFzdFJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXppbmdUcmVlV2Fsa2VyOjpnZXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemlu
Z1RyZWVXYWxrZXI6OmdldFNwYXJzZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpp
bmdUcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpwdXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemluZ1RyZWVXYWxrZXI6OnB1dFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6c3RhcnRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emluZ1RyZWVXYWxrZXI6OmVuZEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6aW5n
VHJlZVdhbGtlcjo6c3RhcnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjplbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlRGF0YTo6c2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdU
cmVlV2Fsa2VyOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpE
ZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6aXNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6aXNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemlu
Z1RyZWVXYWxrZXI6OmFzSW5wdXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6YXNJbnB1dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlh
bGl6aW5nVHJlZVdhbGtlcjo6Y3JlYXRlT3V0cHV0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNyZWF0ZU91dHB1dE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpjYW5Eb0Zhc3RSZWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpnZXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6Z2V0U3BhcnNlSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmdldFByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6cHV0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OnB1dFByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpzdGFydEFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjplbmRBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6c3RhcnRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGVzZXJpYWxpemluZ1RyZWVXYWxrZXI6OmVuZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpkZXNlcmlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnNob3VsZFRlcm1pbmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnRpY2tzVW50aWxOZXh0
Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpkaWRUaW1lT3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6dGhyb3dTdGFja092ZXJm
bG93KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6dGhyb3dJbnRlcnJ1
cHRlZEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6Om51
bGwpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjppc0FycmF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6aXNPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjphc0lucHV0QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjphc0lucHV0T2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6Y3JlYXRlT3V0cHV0QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpjcmVhdGVPdXRwdXRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VGVhcmRvd25UcmVlV2Fsa2VyOjpjYW5Eb0Zhc3RSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
YXJkb3duVHJlZVdhbGtlcjo6Z2V0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25U
cmVlV2Fsa2VyOjpnZXRTcGFyc2VJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRy
ZWVXYWxrZXI6OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdh
bGtlcjo6Y29udmVydElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVl
V2Fsa2VyOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJl
ZVdhbGtlcjo6cHV0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2Vy
OjpwdXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnN0
YXJ0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjplbmRBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjpUZWFyZG93blRyZWVXYWxrZXI6OnN0YXJ0T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRlYXJkb3duVHJlZVdhbGtlcjo6ZW5kT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnRlYXJEb3duU2VyaWFsaXpl
ZERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFNlcmlhbGl6ZWREYXRhOjp+U2hhcmVkU2Vy
aWFsaXplZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0
YTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6flNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0ltbWVkaWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0RvdWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc1N0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc09iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjphc0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Om9wZXJhdG9yIGJvb2wgKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OnJlbGVhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6ZGF0YSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VFdmVudC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICog
ZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVu
dERhdGEpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjptZXNzYWdlKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRpbWVy
OjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0ZU1lc3NhZ2VFdmVudCk6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdl
KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5Lmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29y
a2VyQ29udGV4dFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2Vy
Q29udGV4dFRhc2s6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VX
b3JrZXJUYXNrOjpNZXNzYWdlV29ya2VyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisKIDIwMDktMTAtMDUgIEpvaG4gQWJkLUVsLU1hbGVr
ICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYmEwNjI3MC4uZjgxYWFlOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTY3MSw2ICsyOTY3MSwx
NCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8
RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xTdHJpbmdTb3VyY2VQcm92
aWRlci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyM2M1OGQ0Li4zZjc0NDA2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1NSw2ICsyMzU1LDggQEAKIAkJQTcx
ODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczNTJDMTcwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmNwcCAqLzsgfTsKIAkJQTczNTJDMUEwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Js
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzM1
MkMxODBCMUJCODlEMDBBOTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suaCAqLzsgfTsKKwkJQTc1RTQ5
NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjgw
MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLzsgfTsKIAkJQTc1RThCODkwRTFERTJE
NjAwN0YyNDgxIC8qIEZFQmxlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3NUU4QjgxMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmggKi87IH07
CiAJCUE3NUU4QjhBMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4QjgyMEUxREUyRDYw
MDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCAqLzsgfTsKQEAgLTc1NDIsNiArNzU0NCw4IEBA
CiAJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250cm9sbGVyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM1MkMxNzBCMUJCODlEMDBBOTg2RDAg
LyogUmVuZGVyU1ZHQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcz
NTJDMTgwQjFCQjg5RDAwQTk4NkQwIC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzVFNDk3NTEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQmxlbmQuY3BwOyBwYXRoID0g
ZmlsdGVycy9GRUJsZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RThC
ODEwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRkVCbGVuZC5oOyBwYXRoID0gZmlsdGVycy9GRUJsZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0
cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQ29sb3JNYXRy
aXguY3BwOyBwYXRoID0gZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MjI3LDYgKzE0MjMxLDggQEAKIAkJCQk2NTQ4OEQ2QTBERDVBODNE
MDA5RDgzQjIgLyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlFMUE2NDNGQzBFQzA5
N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJRTFBNjQz
RjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLywKKwkJCQlB
NzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJ
CQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE3OTUzLDYgKzE3OTU5LDcgQEAKIAkJCQlCQzk0NjJEODEwN0E3QjRDMDA4NTcxOTMgLyogQmVm
b3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0NjM0ODEwN0E5MzY2MDA4NTcx
OTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2M0I5MTA3
NkM5N0YwMDJDMjE0MiAvKiBQb2xpY3lDaGVjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc1RTQ5
NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMDA3Myw2ICsyMDA4MCw3IEBACiAJCQkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNC
IC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTQ2MzQ2MTA3
QTkzNEIwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2suY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggN2RkYzVlZC4uY2ZiNTMwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlICJSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtOTUyLDcgKzk1Myw3IEBAIEpTVmFs
dWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGltcGwoKTsKIAogICAgIERPTVdpbmRv
dyogc291cmNlID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5p
bXBsKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwor
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgYXJncy5hdCgwKSk7CiAKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA0YzYxYzA0Li4yZTdi
MmQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApA
QCAtNTksNyArNTksNyBAQCBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QQogICAgIGNvbnN0IFVTdHJp
bmcmIHR5cGVBcmcgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOwogICAgIGJvb2wgY2FuQnVi
YmxlQXJnID0gYXJncy5hdCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxl
QXJnID0gYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgZGF0
YUFyZyA9IGFyZ3MuYXQoMykudG9TdHJpbmcoZXhlYyk7CisgICAgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGFBcmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShl
eGVjLCBhcmdzLmF0KDMpKTsKICAgICBjb25zdCBVU3RyaW5nJiBvcmlnaW5BcmcgPSBhcmdzLmF0
KDQpLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0g
YXJncy5hdCg1KS50b1N0cmluZyhleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRv
RE9NV2luZG93KGFyZ3MuYXQoNikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uaAppbmRleCA3ZTkwOTQzLi4xN2IxZWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uaApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5k
bGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzLCBUKiBpbXBsKQogICAgIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGFyZ3MuYXQo
MCkpOwogICAgICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKICAgICAgICAgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoZXhlYywgYXJncy5hdCgxKSwgcG9ydEFycmF5KTsKICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWYz
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTAsMCArMSw4MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworI2luY2x1ZGUg
PHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg+CisjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg+CisjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZQoreworCitjbGFzcyBTZXJpYWxpemVkT2Jq
ZWN0IDogcHVibGljIFNoYXJlZFNlcmlhbGl6ZWREYXRhCit7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPFVTdHJpbmc6OlJlcD4gPiBQcm9wZXJ0eU5hbWVMaXN0OworICAgIHR5
cGVkZWYgVmVjdG9yPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE+IFZhbHVlTGlzdDsKKyAgICB2
b2lkIHNldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZXMuc2l6
ZSgpID09IG1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIG1fbmFtZXMuYXBwZW5kKHByb3BlcnR5
TmFtZS51c3RyaW5nKCkucmVwKCkpOworICAgICAgICBtX3ZhbHVlcy5hcHBlbmQodmFsdWUpOwor
ICAgIH0KKyAgICBQcm9wZXJ0eU5hbWVMaXN0JiBuYW1lcygpIHsgcmV0dXJuIG1fbmFtZXM7IH0K
KyAgICBWYWx1ZUxpc3QmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZE9iamVjdCk7CisgICAgfQorICAgIHZvaWQgY2xl
YXIoKQorICAgIHsKKyAgICAgICAgbV9uYW1lcy5jbGVhcigpOworICAgICAgICBtX3ZhbHVlcy5j
bGVhcigpOworICAgIH0KK3ByaXZhdGU6CisgICAgU2VyaWFsaXplZE9iamVjdCgpIHsgfQorICAg
IFByb3BlcnR5TmFtZUxpc3QgbV9uYW1lczsKKyAgICBWYWx1ZUxpc3QgbV92YWx1ZXM7Cit9Owor
CitjbGFzcyBTZXJpYWxpemVkQXJyYXkgOiBwdWJsaWMgU2hhcmVkU2VyaWFsaXplZERhdGEKK3sK
KyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEs
IERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czx1bnNpZ25lZD4gPiBTcGFyc2VNYXA7CitwdWJsaWM6CisgICAgdm9pZCBzZXRJbmRl
eCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUp
CisgICAgeworICAgICAgICBpZiAoaW5kZXggPT0gbV9jb21wYWN0U3RvcmFnZS5zaXplKCkpCisg
ICAgICAgICAgICBtX2NvbXBhY3RTdG9yYWdlLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1fc3BhcnNlU3RvcmFnZS5zZXQoaW5kZXgsIHZhbHVlKTsKKyAgICB9CisK
KyAgICBib29sIGNhbkRvRmFzdFJlYWQodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gaW5kZXggPCBtX2NvbXBhY3RTdG9yYWdlLnNpemUoKTsKKyAgICB9CisKKyAg
ICBjb25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiBnZXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fY29tcGFjdFN0b3JhZ2Uuc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1fY29tcGFjdFN0b3JhZ2VbaW5kZXhdOworICAgIH0KKworICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgZ2V0U3BhcnNlSW5kZXgodW5zaWduZWQgaW5kZXgs
IGJvb2wmIGhhc0luZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4ID49IG1fY29tcGFj
dFN0b3JhZ2Uuc2l6ZSgpKTsKKyAgICAgICAgU3BhcnNlTWFwOjppdGVyYXRvciBpdGVyID0gbV9z
cGFyc2VTdG9yYWdlLmZpbmQoaW5kZXgpOworICAgICAgICBpZiAoaXRlciA9PSBtX3NwYXJzZVN0
b3JhZ2UuZW5kKCkpIHsKKyAgICAgICAgICAgIGhhc0luZGV4ID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSgpOworICAgICAgICB9CisgICAgICAg
IGhhc0luZGV4ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGVu
Z3RoOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VyaWFsaXplZEFycmF5KGxlbmd0aCkpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgbV9jb21wYWN0U3RvcmFnZS5jbGVhcigpOworICAgICAgICBtX3NwYXJzZVN0
b3JhZ2UuY2xlYXIoKTsKKyAgICAgICAgbV9sZW5ndGggPSAwOworICAgIH0KK3ByaXZhdGU6Cisg
ICAgU2VyaWFsaXplZEFycmF5KHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBtX2xlbmd0aChs
ZW5ndGgpCisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxTZXJpYWxpemVkU2NyaXB0VmFsdWVE
YXRhPiBtX2NvbXBhY3RTdG9yYWdlOworICAgIFNwYXJzZU1hcCBtX3NwYXJzZVN0b3JhZ2U7Cisg
ICAgdW5zaWduZWQgbV9sZW5ndGg7Cit9OworCitTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBkYXRhKQor
ICAgIDogbV90eXBlKE9iamVjdFR5cGUpCisgICAgLCBtX3NoYXJlZERhdGEoZGF0YSkKK3sKK30K
KworU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShS
ZWZQdHI8U2VyaWFsaXplZEFycmF5PiBkYXRhKQorICAgIDogbV90eXBlKEFycmF5VHlwZSkKKyAg
ICAsIG1fc2hhcmVkRGF0YShkYXRhKQoreworfQorCitTZXJpYWxpemVkQXJyYXkqIFNoYXJlZFNl
cmlhbGl6ZWREYXRhOjphc0FycmF5KCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VyaWFs
aXplZEFycmF5Kj4odGhpcyk7Cit9CisKK1NlcmlhbGl6ZWRPYmplY3QqIFNoYXJlZFNlcmlhbGl6
ZWREYXRhOjphc09iamVjdCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRP
YmplY3QqPih0aGlzKTsKK30KKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJS
ZWN1cnNpb24gPSA0MDAwMDsKK2VudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFycmF5
U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJheUVuZFZpc2l0TWVtYmVyLAor
ICAgIE9iamVjdFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZp
c2l0TWVtYmVyIH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZVdhbGtlcj4gdHlwZW5hbWUgVHJl
ZVdhbGtlcjo6T3V0cHV0VHlwZSB3YWxrKFRyZWVXYWxrZXImIGNvbnRleHQsIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6OklucHV0VHlwZSBpbikKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRyZWVXYWxr
ZXI6OklucHV0T2JqZWN0IElucHV0T2JqZWN0OworICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJlZVdh
bGtlcjo6SW5wdXRBcnJheSBJbnB1dEFycmF5OworICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJlZVdh
bGtlcjo6T3V0cHV0T2JqZWN0IE91dHB1dE9iamVjdDsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6Ok91dHB1dEFycmF5IE91dHB1dEFycmF5OworICAgIHR5cGVkZWYgdHlwZW5hbWUg
VHJlZVdhbGtlcjo6SW5wdXRUeXBlIElucHV0VHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6Ok91dHB1dFR5cGUgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFRy
ZWVXYWxrZXI6OlByb3BlcnR5TGlzdCBQcm9wZXJ0eUxpc3Q7CisKKyAgICBWZWN0b3I8dWludDMy
X3QsIDE2PiBpbmRleFN0YWNrOworICAgIFZlY3Rvcjx1aW50MzJfdCwgMTY+IGxlbmd0aFN0YWNr
OworICAgIFZlY3RvcjxQcm9wZXJ0eUxpc3QsIDE2PiBwcm9wZXJ0eVN0YWNrOworICAgIFZlY3Rv
cjxJbnB1dE9iamVjdCwgMTY+IGlucHV0T2JqZWN0U3RhY2s7CisgICAgVmVjdG9yPElucHV0QXJy
YXksIDE2PiBpbnB1dEFycmF5U3RhY2s7CisgICAgVmVjdG9yPE91dHB1dE9iamVjdCwgMTY+IG91
dHB1dE9iamVjdFN0YWNrOworICAgIFZlY3RvcjxPdXRwdXRBcnJheSwgMTY+IG91dHB1dEFycmF5
U3RhY2s7CisgICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNj4gc3RhdGVTdGFjazsKKyAgICBXYWxr
ZXJTdGF0ZSBzdGF0ZSA9IFN0YXRlVW5rbm93bjsKKyAgICBJbnB1dFR5cGUgaW5WYWx1ZSA9IGlu
OworICAgIE91dHB1dFR5cGUgb3V0VmFsdWUgPSBjb250ZXh0Lm51bGwoKTsKKworICAgIHVuc2ln
bmVkIHRpY2tDb3VudCA9IGNvbnRleHQudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgIHdoaWxl
ICgxKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgICAgIGFycmF5U3RhcnRT
dGF0ZToKKyAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNBcnJheShpblZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpICsgaW5wdXRBcnJheVN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aHJvd1N0
YWNrT3ZlcmZsb3coKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIElucHV0QXJyYXkgaW5BcnJh
eSA9IGNvbnRleHQuYXNJbnB1dEFycmF5KGluVmFsdWUpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGNvbnRleHQubGVuZ3RoKGluQXJyYXkpOworICAgICAgICAgICAgICAgIE91
dHB1dEFycmF5IG91dEFycmF5ID0gY29udGV4dC5jcmVhdGVPdXRwdXRBcnJheShsZW5ndGgpOwor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5zdGFydEFycmF5KGluQXJyYXksIG91dEFycmF5
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAgICAgICAg
ICAgICAgIGlucHV0QXJyYXlTdGFjay5hcHBlbmQoaW5BcnJheSk7CisgICAgICAgICAgICAgICAg
b3V0cHV0QXJyYXlTdGFjay5hcHBlbmQob3V0QXJyYXkpOworICAgICAgICAgICAgICAgIGluZGV4
U3RhY2suYXBwZW5kKDApOworICAgICAgICAgICAgICAgIGxlbmd0aFN0YWNrLmFwcGVuZChsZW5n
dGgpOworICAgICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhcnJheVN0YXJ0VmlzaXRNZW1iZXI6CisgICAgICAgICAgICBjYXNlIEFycmF5U3Rh
cnRWaXNpdE1lbWJlcjogeworICAgICAgICAgICAgICAgIGlmICghLS10aWNrQ291bnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZGlkVGltZU91dCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LnRocm93SW50ZXJydXB0ZWRFeGNlcHRpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aWNrQ291bnQgPSBjb250ZXh0LnRpY2tzVW50
aWxOZXh0Q2hlY2soKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJbnB1
dEFycmF5IGFycmF5ID0gaW5wdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAgICAgICB1
aW50MzJfdCBpbmRleCA9IGluZGV4U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIGlmIChp
bmRleCA9PSBsZW5ndGhTdGFjay5sYXN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5wdXRB
cnJheSBpbkFycmF5ID0gaW5wdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgT3V0cHV0QXJyYXkgb3V0QXJyYXkgPSBvdXRwdXRBcnJheVN0YWNrLmxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5lbmRBcnJheShpbkFycmF5LCBvdXRBcnJheSk7CisgICAg
ICAgICAgICAgICAgICAgIG91dFZhbHVlID0gb3V0QXJyYXk7CisgICAgICAgICAgICAgICAgICAg
IGlucHV0QXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1
dEFycmF5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoU3RhY2sucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQuY2FuRG9GYXN0UmVhZChhcnJheSwgaW5kZXgpKQorICAg
ICAgICAgICAgICAgICAgICBpblZhbHVlID0gY29udGV4dC5nZXRJbmRleChhcnJheSwgaW5kZXgp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0lu
ZGV4ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBjb250ZXh0LmdldFNw
YXJzZUluZGV4KGFycmF5LCBpbmRleCwgaGFzSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWhhc0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3Qo
KSsrOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBhcnJheVN0YXJ0VmlzaXRNZW1iZXI7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoT3V0cHV0VHlwZSB0cmFuc2Zvcm1lZCA9IGNvbnRleHQuY29udmVydElmVGVybWlu
YWwoaW5WYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIG91dFZhbHVlID0gdHJhbnNmb3JtZWQ7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2su
YXBwZW5kKEFycmF5RW5kVmlzaXRNZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIHN0
YXRlVW5rbm93bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gZmFsbHRo
cm91Z2gKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJl
cjogeworICAgICAgICAgICAgICAgIE91dHB1dEFycmF5IG91dEFycmF5ID0gb3V0cHV0QXJyYXlT
dGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5wdXRJbmRleChvdXRBcnJheSwg
aW5kZXhTdGFjay5sYXN0KCksIG91dFZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbmRleFN0YWNr
Lmxhc3QoKSsrOworICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToKKyAgICAgICAgICAg
IGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogeworICAgICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0
LmlzT2JqZWN0KGluVmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFj
ay5zaXplKCkgKyBpbnB1dEFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lv
bikgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRocm93U3RhY2tPdmVyZmxvdygpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5udWxsKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIElucHV0T2JqZWN0IGluT2JqZWN0ID0gY29udGV4dC5hc0lu
cHV0T2JqZWN0KGluVmFsdWUpOworICAgICAgICAgICAgICAgIE91dHB1dE9iamVjdCBvdXRPYmpl
Y3QgPSBjb250ZXh0LmNyZWF0ZU91dHB1dE9iamVjdCgpOworICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC5zdGFydE9iamVjdChpbk9iamVjdCwgb3V0T2JqZWN0KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAgICAgICAgICAgICAgIGlucHV0T2JqZWN0
U3RhY2suYXBwZW5kKGluT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFj
ay5hcHBlbmQob3V0T2JqZWN0KTsKKyAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgw
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmdldFByb3BlcnR5TmFtZXMoaW5PYmplY3QsIHBy
b3BlcnR5U3RhY2spOworICAgICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgorICAgICAgICAgICAgY2Fz
ZSBPYmplY3RTdGFydFZpc2l0TWVtYmVyOiB7CisgICAgICAgICAgICAgICAgaWYgKCEtLXRpY2tD
b3VudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5kaWRUaW1lT3V0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlv
bigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubnVsbCgpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRpY2tDb3VudCA9IGNvbnRl
eHQudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIElucHV0T2JqZWN0IG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOworICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gaW5kZXhTdGFjay5sYXN0KCk7CisgICAgICAg
ICAgICAgICAgUHJvcGVydHlMaXN0JiBwcm9wZXJ0aWVzID0gcHJvcGVydHlTdGFjay5sYXN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IHByb3BlcnRpZXMuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIElucHV0T2JqZWN0IGluT2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5s
YXN0KCk7CisgICAgICAgICAgICAgICAgICAgIE91dHB1dE9iamVjdCBvdXRPYmplY3QgPSBvdXRw
dXRPYmplY3RTdGFjay5sYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5kT2Jq
ZWN0KGluT2JqZWN0LCBvdXRPYmplY3QpOworICAgICAgICAgICAgICAgICAgICBvdXRWYWx1ZSA9
IG91dE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRPYmplY3RTdGFjay5yZW1vdmVM
YXN0KCk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0YWNrLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5WYWx1ZSA9
IGNvbnRleHQuZ2V0UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0aWVzW2luZGV4XSwgaW5kZXgpOwor
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2hvdWxkVGVybWluYXRlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKworICAgICAgICAgICAgICAgIGlm
IChPdXRwdXRUeXBlIHRyYW5zZm9ybWVkID0gY29udGV4dC5jb252ZXJ0SWZUZXJtaW5hbChpblZh
bHVlKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0VmFsdWUgPSB0cmFuc2Zvcm1lZDsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQo
T2JqZWN0RW5kVmlzaXRNZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIHN0YXRlVW5r
bm93bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnB1dFByb3BlcnR5KG91dHB1dE9iamVjdFN0YWNrLmxh
c3QoKSwgcHJvcGVydHlTdGFjay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldLCBvdXRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc2hvdWxkVGVybWluYXRlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm51bGwoKTsKKworICAgICAgICAgICAgICAgIGlu
ZGV4U3RhY2subGFzdCgpKys7CisgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZpc2l0
TWVtYmVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGVVbmtub3duOgorICAgICAg
ICAgICAgY2FzZSBTdGF0ZVVua25vd246CisgICAgICAgICAgICAgICAgaWYgKE91dHB1dFR5cGUg
dHJhbnNmb3JtZWQgPSBjb250ZXh0LmNvbnZlcnRJZlRlcm1pbmFsKGluVmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG91dFZhbHVlID0gdHJhbnNmb3JtZWQ7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC5pc0FycmF5KGluVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5U3RhcnRT
dGF0ZTsKKyAgICAgICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0U3RhdGU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHN0YXRlU3RhY2suaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLmxhc3QoKTsKKyAgICAgICAgc3RhdGVTdGFjay5y
ZW1vdmVMYXN0KCk7CisKKyAgICAgICAgaWYgKCEtLXRpY2tDb3VudCkgeworICAgICAgICAgICAg
aWYgKGNvbnRleHQuZGlkVGltZU91dCgpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC50aHJv
d0ludGVycnVwdGVkRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQu
bnVsbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGlja0NvdW50ID0gY29udGV4dC50
aWNrc1VudGlsTmV4dENoZWNrKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG91dFZh
bHVlOworfQorCitzdHJ1Y3QgQmFzZVdhbGtlciB7CisgICAgQmFzZVdhbGtlcihFeGVjU3RhdGUq
IGV4ZWMpCisgICAgICAgIDogbV9leGVjKGV4ZWMpCisgICAgICAgICwgbV90aW1lb3V0Q2hlY2tl
cihleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIpCisgICAgeworICAgICAgICBtX3Rp
bWVvdXRDaGVja2VyLnJlc2V0KCk7CisgICAgfQorICAgIEV4ZWNTdGF0ZSogbV9leGVjOworICAg
IFRpbWVvdXRDaGVja2VyIG1fdGltZW91dENoZWNrZXI7CisgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbV9nY0J1ZmZlcjsKKworICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpOworICAgIH0KKworICAgIHVuc2lnbmVk
IHRpY2tzVW50aWxOZXh0Q2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdGltZW91dENo
ZWNrZXIudGlja3NVbnRpbE5leHRDaGVjaygpOworICAgIH0KKworICAgIGJvb2wgZGlkVGltZU91
dCgpCisgICAgeworICAgICAgICByZXR1cm4gbV90aW1lb3V0Q2hlY2tlci5kaWRUaW1lT3V0KG1f
ZXhlYyk7CisgICAgfQorCisgICAgdm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3coKQorICAgIHsKKyAg
ICAgICAgbV9leGVjLT5zZXRFeGNlcHRpb24oY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhl
YykpOworICAgIH0KKworICAgIHZvaWQgdGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlvbigpCisgICAg
eworICAgICAgICBtX2V4ZWMtPnNldEV4Y2VwdGlvbihjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbigmbV9leGVjLT5nbG9iYWxEYXRhKCkpKTsKKyAgICB9Cit9OworCitzdHJ1Y3Qg
U2VyaWFsaXppbmdUcmVlV2Fsa2VyIDogcHVibGljIEJhc2VXYWxrZXIgeworICAgIHR5cGVkZWYg
SlNWYWx1ZSBJbnB1dFR5cGU7CisgICAgdHlwZWRlZiBKU0FycmF5KiBJbnB1dEFycmF5OworICAg
IHR5cGVkZWYgSlNPYmplY3QqIElucHV0T2JqZWN0OworICAgIHR5cGVkZWYgU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YSBPdXRwdXRUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPFNlcmlhbGl6ZWRB
cnJheT4gT3V0cHV0QXJyYXk7CisgICAgdHlwZWRlZiBSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4g
T3V0cHV0T2JqZWN0OworICAgIHR5cGVkZWYgUHJvcGVydHlOYW1lQXJyYXkgUHJvcGVydHlMaXN0
OworCisgICAgU2VyaWFsaXppbmdUcmVlV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAg
OiBCYXNlV2Fsa2VyKGV4ZWMpCisgICAgeworICAgIH0KKworICAgIE91dHB1dFR5cGUgbnVsbCgp
IHsgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoKTsgfQorCisgICAgYm9vbCBpc0Fy
cmF5KEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7CisgICAgICAgIHJldHVybiBpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFs
RGF0YSgpLCBvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OmluZm8pOworICAg
IH0KKworICAgIGJvb2wgaXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2YWx1ZS5pc09iamVjdCgpOworICAgIH0KKworICAgIEpTQXJyYXkqIGFzSW5wdXRBcnJh
eShKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFzQXJyYXkodmFsdWUpOwor
ICAgIH0KKworICAgIEpTT2JqZWN0KiBhc0lucHV0T2JqZWN0KEpTVmFsdWUgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gYXNPYmplY3QodmFsdWUpOworICAgIH0KKworICAgIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZEFycmF5PiBjcmVhdGVPdXRwdXRBcnJheSh1bnNpZ25lZCBsZW5ndGgpCisg
ICAgeworICAgICAgICByZXR1cm4gU2VyaWFsaXplZEFycmF5OjpjcmVhdGUobGVuZ3RoKTsKKyAg
ICB9CisKKyAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+IGNyZWF0ZU91dHB1dE9iamVj
dCgpCisgICAgeworICAgICAgICByZXR1cm4gU2VyaWFsaXplZE9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgfQorCisgICAgdWludDMyX3QgbGVuZ3RoKEpTVmFsdWUgYXJyYXkpCisgICAgeworICAgICAg
ICBBU1NFUlQoYXJyYXkuaXNPYmplY3QoKSk7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdChhcnJheSk7CisgICAgICAgIHJldHVybiBvYmplY3QtPmdldChtX2V4ZWMsIG1fZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9VSW50MzIobV9leGVjKTsKKyAgICB9CisKKyAg
ICBib29sIGNhbkRvRmFzdFJlYWQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5
KSAmJiBhcnJheS0+Y2FuR2V0SW5kZXgoaW5kZXgpOworICAgIH0KKworICAgIEpTVmFsdWUgZ2V0
SW5kZXgoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAgfQorCisgICAgSlNWYWx1ZSBnZXRTcGFy
c2VJbmRleChKU09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIGJvb2wmIGhh
c0luZGV4KQorICAgIHsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICAg
ICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KG1fZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkgeworICAgICAgICAgICAgaGFzSW5kZXggPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB9CisgICAgICAg
IGhhc0luZGV4ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICB9CisKKyAg
ICBKU1ZhbHVlIGdldFByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQpCisgICAgeworICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QpOworICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3QobV9leGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUo
bV9leGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgfQor
CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBjb252ZXJ0SWZUZXJtaW5hbChKU1ZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAg
IHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKHZhbHVlKTsKKworICAgICAgICBpZiAo
dmFsdWUuaXNTdHJpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWVEYXRhKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoKSk7CisKKyAgICAgICAgaWYgKHZhbHVlLmlz
TnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpOdW1iZXJUeXBlLCB2YWx1ZS51bmNoZWNrZWRHZXRO
dW1iZXIoKSk7CisKKyAgICAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QodmFs
dWUpLT5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjppbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkRhdGVU
eXBlLCBhc0RhdGVJbnN0YW5jZSh2YWx1ZSktPmludGVybmFsTnVtYmVyKCkpOworCisgICAgICAg
IGlmIChpc0FycmF5KHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0
VmFsdWVEYXRhKCk7CisKKyAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsKKyAgICAgICAgaWYg
KHZhbHVlLmlzT2JqZWN0KCkgJiYgdmFsdWUuZ2V0Q2FsbERhdGEodW51c2VkRGF0YSkgPT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEo
KTsKKworICAgICAgICAvLyBBbnkgb3RoZXIgdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHNlcmlhbGl6
ZSBhcyBudWxsLgorICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShqc051
bGwoKSk7CisgICAgfQorCisgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTY+JiBwcm9wZXJ0eVN0YWNrKQorICAgIHsK
KyAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjKSk7
CisgICAgICAgIG9iamVjdC0+Z2V0T3duUHJvcGVydHlOYW1lcyhtX2V4ZWMsIHByb3BlcnR5U3Rh
Y2subGFzdCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHB1dEluZGV4KFJlZlB0cjxTZXJpYWxpemVk
QXJyYXk+IGFycmF5LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIGNvbnN0IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXJyYXktPnNldEluZGV4KHByb3Bl
cnR5TmFtZSwgdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgcHV0UHJvcGVydHkoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBj
b25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG9i
amVjdC0+c2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIH0KKworICAgIGJvb2wgc3RhcnRB
cnJheShKU0FycmF5KiBpbkFycmF5LCBSZWZQdHI8U2VyaWFsaXplZEFycmF5PikKKyAgICB7Cisg
ICAgICAgIC8vIEN5Y2xlIGRldGVjdGlvbgorICAgICAgICBpZiAoIW1fY3ljbGVEZXRlY3Rvci5h
ZGQoaW5BcnJheSkuc2Vjb25kKSB7CisgICAgICAgICAgICBtX2V4ZWMtPnNldEV4Y2VwdGlvbihj
cmVhdGVUeXBlRXJyb3IobV9leGVjLCAiQ2Fubm90IHBvc3QgY3ljbGljIHN0cnVjdHVyZXMuIikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1fZ2NCdWZm
ZXIuYXBwZW5kKGluQXJyYXkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2
b2lkIGVuZEFycmF5KEpTQXJyYXkqIGluQXJyYXksIFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+KQor
ICAgIHsKKyAgICAgICAgbV9jeWNsZURldGVjdG9yLnJlbW92ZShpbkFycmF5KTsKKyAgICAgICAg
bV9nY0J1ZmZlci5yZW1vdmVMYXN0KCk7CisgICAgfQorCisgICAgYm9vbCBzdGFydE9iamVjdChK
U09iamVjdCogaW5PYmplY3QsIFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PikKKyAgICB7CisgICAg
ICAgIC8vIEN5Y2xlIGRldGVjdGlvbgorICAgICAgICBpZiAoIW1fY3ljbGVEZXRlY3Rvci5hZGQo
aW5PYmplY3QpLnNlY29uZCkgeworICAgICAgICAgICAgbV9leGVjLT5zZXRFeGNlcHRpb24oY3Jl
YXRlVHlwZUVycm9yKG1fZXhlYywgIkNhbm5vdCBwb3N0IGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBtX2djQnVmZmVy
LmFwcGVuZChpbk9iamVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZv
aWQgZW5kT2JqZWN0KEpTT2JqZWN0KiBpbk9iamVjdCwgUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+
KQorICAgIHsKKyAgICAgICAgbV9jeWNsZURldGVjdG9yLnJlbW92ZShpbk9iamVjdCk7CisgICAg
ICAgIG1fZ2NCdWZmZXIucmVtb3ZlTGFzdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNo
U2V0PEpTT2JqZWN0Kj4gbV9jeWNsZURldGVjdG9yOworfTsKKworU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpzZXJpYWxpemUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGluVmFsdWUpCit7CisgICAgU2VyaWFsaXppbmdUcmVlV2Fsa2VyIGNvbnRl
eHQoZXhlYyk7CisgICAgcmV0dXJuIHdhbGs8U2VyaWFsaXppbmdUcmVlV2Fsa2VyPihjb250ZXh0
LCBpblZhbHVlKTsKK30KKworCitzdHJ1Y3QgRGVzZXJpYWxpemluZ1RyZWVXYWxrZXIgOiBwdWJs
aWMgQmFzZVdhbGtlciB7CisgICAgdHlwZWRlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhIElu
cHV0VHlwZTsKKyAgICB0eXBlZGVmIFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IElucHV0QXJyYXk7
CisgICAgdHlwZWRlZiBSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gSW5wdXRPYmplY3Q7CisgICAg
dHlwZWRlZiBKU1ZhbHVlIE91dHB1dFR5cGU7CisgICAgdHlwZWRlZiBKU0FycmF5KiBPdXRwdXRB
cnJheTsKKyAgICB0eXBlZGVmIEpTT2JqZWN0KiBPdXRwdXRPYmplY3Q7CisgICAgdHlwZWRlZiBT
ZXJpYWxpemVkT2JqZWN0OjpQcm9wZXJ0eU5hbWVMaXN0IFByb3BlcnR5TGlzdDsKKworICAgIERl
c2VyaWFsaXppbmdUcmVlV2Fsa2VyKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBtdXN0Q29weSkKKyAg
ICAgICAgOiBCYXNlV2Fsa2VyKGV4ZWMpCisgICAgICAgICwgbV9tdXN0Q29weShtdXN0Q29weSkK
KyAgICB7CisgICAgfQorCisgICAgT3V0cHV0VHlwZSBudWxsKCkgeyByZXR1cm4ganNOdWxsKCk7
IH0KKworICAgIGJvb2wgaXNBcnJheShjb25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZS50eXBlKCkgPT0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YTo6QXJyYXlUeXBlOworICAgIH0KKworICAgIGJvb2wgaXNPYmplY3QoY29u
c3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gdmFsdWUudHlwZSgpID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok9iamVjdFR5cGU7
CisgICAgfQorCisgICAgU2VyaWFsaXplZEFycmF5KiBhc0lucHV0QXJyYXkoY29uc3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUu
YXNBcnJheSgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRPYmplY3QqIGFzSW5wdXRPYmplY3Qo
Y29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdmFsdWUuYXNPYmplY3QoKTsKKyAgICB9CisKKyAgICBKU0FycmF5KiBjcmVhdGVPdXRw
dXRBcnJheSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkobV9leGVjKTsKKyAgICAgICAgYXJyYXktPnNldExlbmd0aChs
ZW5ndGgpOworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGNy
ZWF0ZU91dHB1dE9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlP
YmplY3QobV9leGVjKTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBsZW5ndGgoUmVmUHRyPFNlcmlh
bGl6ZWRBcnJheT4gYXJyYXkpCisgICAgeworICAgICAgICByZXR1cm4gYXJyYXktPmxlbmd0aCgp
OworICAgIH0KKworICAgIGJvb2wgY2FuRG9GYXN0UmVhZChSZWZQdHI8U2VyaWFsaXplZEFycmF5
PiBhcnJheSwgdW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gYXJyYXktPmNh
bkRvRmFzdFJlYWQoaW5kZXgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURh
dGEgZ2V0SW5kZXgoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFycmF5LT5nZXRJbmRleChpbmRleCk7CisgICAgfQor
CisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBnZXRTcGFyc2VJbmRleChSZWZQdHI8U2Vy
aWFsaXplZEFycmF5PiBhcnJheSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBib29sJiBoYXNJbmRl
eCkKKyAgICB7CisgICAgICAgIHJldHVybiBhcnJheS0+Z2V0U3BhcnNlSW5kZXgocHJvcGVydHlO
YW1lLCBoYXNJbmRleCk7CisgICAgfQorCisgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBn
ZXRQcm9wZXJ0eShSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gb2JqZWN0LCBjb25zdCBSZWZQdHI8
VVN0cmluZzo6UmVwPiYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9iamVjdC0+bmFtZXMoKVtwcm9wZXJ0eUluZGV4XSA9PSBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gb2JqZWN0LT52YWx1ZXMoKVtwcm9wZXJ0eUluZGV4
XTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGNvbnZlcnRJZlRlcm1pbmFsKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6QXJyYXlUeXBl
OgorICAgICAgICAgICAgY2FzZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpPYmplY3RUeXBl
OgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBjYXNlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlN0cmluZ1R5cGU6CisgICAgICAgICAgICAgICAgaWYg
KG1fbXVzdENvcHkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhtX2V4ZWMs
IFVTdHJpbmcodmFsdWUuYXNTdHJpbmcoKS5kYXRhKCksIHZhbHVlLmFzU3RyaW5nKCkuc2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUuYXNTdHJp
bmcoKSk7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkltbWVk
aWF0ZVR5cGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzSW1tZWRpYXRlKCk7Cisg
ICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok51bWJlclR5cGU6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fZXhlYywgdmFsdWUuYXNEb3VibGUoKSk7
CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkRhdGVUeXBlOgor
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgRGF0ZUluc3RhbmNlKG1fZXhlYywg
dmFsdWUuYXNEb3VibGUoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGdldFByb3BlcnR5TmFtZXMoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgVmVjdG9yPFNlcmlhbGl6ZWRPYmplY3Q6OlByb3BlcnR5
TmFtZUxpc3QsIDE2PiYgcHJvcGVydGllcykKKyAgICB7CisgICAgICAgIHByb3BlcnRpZXMuYXBw
ZW5kKG9iamVjdC0+bmFtZXMoKSk7CisgICAgfQorCisgICAgdm9pZCBwdXRJbmRleChKU0FycmF5
KiBhcnJheSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgYXJyYXktPnB1dChtX2V4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIH0KKwor
ICAgIHZvaWQgcHV0UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgY29uc3QgUmVmUHRyPFVTdHJp
bmc6OlJlcD4gcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KG1fbXVzdENvcHkpCisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKG1f
ZXhlYywgVVN0cmluZyhwcm9wZXJ0eU5hbWUtPmRhdGEoKSwgcHJvcGVydHlOYW1lLT5zaXplKCkp
KSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdChJ
ZGVudGlmaWVyKG1fZXhlYywgcHJvcGVydHlOYW1lLmdldCgpKSwgdmFsdWUpOworICAgIH0KKwor
ICAgIGJvb2wgc3RhcnRBcnJheShSZWZQdHI8U2VyaWFsaXplZEFycmF5PiwgSlNBcnJheSogb3V0
QXJyYXkpCisgICAgeworICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRBcnJheSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVuZEFycmF5KFJlZlB0cjxTZXJpYWxp
emVkQXJyYXk+LCBKU0FycmF5KikKKyAgICB7CisgICAgICAgIG1fZ2NCdWZmZXIucmVtb3ZlTGFz
dCgpOworICAgIH0KKyAgICBib29sIHN0YXJ0T2JqZWN0KFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0
PiwgSlNPYmplY3QqIG91dE9iamVjdCkKKyAgICB7CisgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5k
KG91dE9iamVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVuZE9i
amVjdChSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4sIEpTT2JqZWN0KikKKyAgICB7CisgICAgICAg
IG1fZ2NCdWZmZXIucmVtb3ZlTGFzdCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1f
bXVzdENvcHk7Cit9OworCitKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OmRlc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBtdXN0Q29weSkgY29uc3QKK3sKKyAgICBEZXNl
cmlhbGl6aW5nVHJlZVdhbGtlciBjb250ZXh0KGV4ZWMsIG11c3RDb3B5KTsKKyAgICByZXR1cm4g
d2FsazxEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcj4oY29udGV4dCwgKnRoaXMpOworfQorCitzdHJ1
Y3QgVGVhcmRvd25UcmVlV2Fsa2VyIHsKKyAgICB0eXBlZGVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURhdGEgSW5wdXRUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gSW5w
dXRBcnJheTsKKyAgICB0eXBlZGVmIFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBJbnB1dE9iamVj
dDsKKyAgICB0eXBlZGVmIGJvb2wgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIGJvb2wgT3V0cHV0
QXJyYXk7CisgICAgdHlwZWRlZiBib29sIE91dHB1dE9iamVjdDsKKyAgICB0eXBlZGVmIFNlcmlh
bGl6ZWRPYmplY3Q6OlByb3BlcnR5TmFtZUxpc3QgUHJvcGVydHlMaXN0OworCisgICAgYm9vbCBz
aG91bGRUZXJtaW5hdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIHRpY2tzVW50aWxOZXh0Q2hlY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IDB4RkZGRkZGRkY7CisgICAgfQorCisgICAgYm9vbCBkaWRUaW1lT3V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHRocm93U3RhY2tPdmVyZmxvdygp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgdGhyb3dJbnRlcnJ1cHRlZEV4Y2VwdGlvbigpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgbnVsbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBi
b29sIGlzQXJyYXkoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSYgdmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gdmFsdWUudHlwZSgpID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURh
dGE6OkFycmF5VHlwZTsKKyAgICB9CisKKyAgICBib29sIGlzT2JqZWN0KGNvbnN0IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLnR5
cGUoKSA9PSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpPYmplY3RUeXBlOworICAgIH0KKwor
ICAgIFNlcmlhbGl6ZWRBcnJheSogYXNJbnB1dEFycmF5KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmFzQXJyYXkoKTsK
KyAgICB9CisKKyAgICBTZXJpYWxpemVkT2JqZWN0KiBhc0lucHV0T2JqZWN0KGNvbnN0IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZURhdGEmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
LmFzT2JqZWN0KCk7CisgICAgfQorCisgICAgYm9vbCBjcmVhdGVPdXRwdXRBcnJheSh1bnNpZ25l
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0
ZU91dHB1dE9iamVjdCgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgdWludDMyX3QgbGVuZ3RoKFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IGFycmF5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFycmF5LT5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBib29sIGNhbkRv
RmFzdFJlYWQoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFycmF5LT5jYW5Eb0Zhc3RSZWFkKGluZGV4KTsKKyAgICB9
CisKKyAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhIGdldEluZGV4KFJlZlB0cjxTZXJpYWxp
emVkQXJyYXk+IGFycmF5LCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
cnJheS0+Z2V0SW5kZXgoaW5kZXgpOworICAgIH0KKworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURhdGEgZ2V0U3BhcnNlSW5kZXgoUmVmUHRyPFNlcmlhbGl6ZWRBcnJheT4gYXJyYXksIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgYm9vbCYgaGFzSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4g
YXJyYXktPmdldFNwYXJzZUluZGV4KHByb3BlcnR5TmFtZSwgaGFzSW5kZXgpOworICAgIH0KKwor
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgZ2V0UHJvcGVydHkoUmVmUHRyPFNlcmlhbGl6
ZWRPYmplY3Q+IG9iamVjdCwgY29uc3QgUmVmUHRyPFVTdHJpbmc6OlJlcD4mIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgcHJvcGVydHlJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvYmplY3Qt
Pm5hbWVzKClbcHJvcGVydHlJbmRleF0gPT0gcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJu
IG9iamVjdC0+dmFsdWVzKClbcHJvcGVydHlJbmRleF07CisgICAgfQorCisgICAgYm9vbCBjb252
ZXJ0SWZUZXJtaW5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhJiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGE6OkFycmF5VHlwZToKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlRGF0YTo6T2JqZWN0VHlwZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlN0cmluZ1R5
cGU6CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkltbWVkaWF0
ZVR5cGU6CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6Ok51bWJl
clR5cGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoUmVmUHRyPFNlcmlhbGl6ZWRPYmplY3Q+IG9iamVjdCwgVmVjdG9yPFNlcmlhbGl6
ZWRPYmplY3Q6OlByb3BlcnR5TmFtZUxpc3QsIDE2PiYgcHJvcGVydGllcykKKyAgICB7CisgICAg
ICAgIHByb3BlcnRpZXMuYXBwZW5kKG9iamVjdC0+bmFtZXMoKSk7CisgICAgfQorCisgICAgdm9p
ZCBwdXRJbmRleChib29sLCB1bnNpZ25lZCwgYm9vbCkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBwdXRQcm9wZXJ0eShib29sLCBjb25zdCBSZWZQdHI8VVN0cmluZzo6UmVwPiYsIGJvb2wpCisg
ICAgeworICAgIH0KKworICAgIGJvb2wgc3RhcnRBcnJheShSZWZQdHI8U2VyaWFsaXplZEFycmF5
PiwgYm9vbCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2b2lkIGVu
ZEFycmF5KFJlZlB0cjxTZXJpYWxpemVkQXJyYXk+IGFycmF5LCBib29sKQorICAgIHsKKyAgICAg
ICAgYXJyYXktPmNsZWFyKCk7CisgICAgfQorICAgIGJvb2wgc3RhcnRPYmplY3QoUmVmUHRyPFNl
cmlhbGl6ZWRPYmplY3Q+LCBib29sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHZvaWQgZW5kT2JqZWN0KFJlZlB0cjxTZXJpYWxpemVkT2JqZWN0PiBvYmplY3QsIGJv
b2wpCisgICAgeworICAgICAgICBvYmplY3QtPmNsZWFyKCk7CisgICAgfQorfTsKKwordm9pZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjp0ZWFyRG93blNlcmlhbGl6ZWREYXRhKCkKK3sKKyAg
ICBpZiAobV9zaGFyZWREYXRhICYmIG1fc2hhcmVkRGF0YS0+cmVmQ291bnQoKSA+IDEpCisgICAg
ICAgIHJldHVybjsKKyAgICBUZWFyZG93blRyZWVXYWxrZXIgY29udGV4dDsKKyAgICB3YWxrPFRl
YXJkb3duVHJlZVdhbGtlcj4oY29udGV4dCwgKnRoaXMpOworfQorCit9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zOTkyNzYwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisK
KyNpZm5kZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKKyNkZWZpbmUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlX2gKKworI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICBjbGFzcyBTZXJpYWxpemVkT2JqZWN0OworICAgIGNsYXNzIFNlcmlhbGl6ZWRBcnJh
eTsKKworICAgIGNsYXNzIFNoYXJlZFNlcmlhbGl6ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
U2hhcmVkU2VyaWFsaXplZERhdGE+CisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVh
bCB+U2hhcmVkU2VyaWFsaXplZERhdGEoKSB7IH0KKyAgICAgICAgU2VyaWFsaXplZEFycmF5KiBh
c0FycmF5KCk7CisgICAgICAgIFNlcmlhbGl6ZWRPYmplY3QqIGFzT2JqZWN0KCk7CisgICAgfTsK
KworICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworICAgIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZURhdGEKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFNlcmlh
bGl6ZWRUeXBlIHsKKyAgICAgICAgICAgIEVtcHR5VHlwZSwKKyAgICAgICAgICAgIERhdGVUeXBl
LAorICAgICAgICAgICAgTnVtYmVyVHlwZSwKKyAgICAgICAgICAgIEltbWVkaWF0ZVR5cGUsCisg
ICAgICAgICAgICBPYmplY3RUeXBlLAorICAgICAgICAgICAgQXJyYXlUeXBlLAorICAgICAgICAg
ICAgU3RyaW5nVHlwZQorICAgICAgICB9OworCisgICAgICAgIFNlcmlhbGl6ZWRUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGEgc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKKyAg
ICAgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgYm9vbCBtdXN0
Q29weSkgY29uc3Q7CisKKyAgICAgICAgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobV9zaGFyZWREYXRhKQorICAgICAgICAgICAgICAgIHRl
YXJEb3duU2VyaWFsaXplZERhdGEoKTsKKyAgICAgICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZURhdGEoKQorICAgICAgICAgICAgOiBtX3R5cGUoRW1wdHlUeXBlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVE
YXRhKGNvbnN0IEpTQzo6VVN0cmluZyYgc3RyaW5nKQorICAgICAgICAgICAgOiBtX3R5cGUoU3Ry
aW5nVHlwZSkKKyAgICAgICAgICAgICwgbV9zdHJpbmcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNp
emUoKSkgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIGp1c3Qgc2hhcmUgdGhlIFJlcAorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFs
dWVEYXRhKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgICAgIDogbV90eXBlKEltbWVkaWF0
ZVR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwor
ICAgICAgICAgICAgbV9kYXRhLm1faW1tZWRpYXRlID0gSlNDOjpKU1ZhbHVlOjplbmNvZGUodmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShTZXJp
YWxpemVkVHlwZSB0eXBlLCBkb3VibGUgdmFsdWUpCisgICAgICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2RhdGEubV9kb3VibGUgPSB2YWx1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoUmVmUHRyPFNlcmlhbGl6
ZWRPYmplY3Q+KTsKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShSZWZQdHI8U2Vy
aWFsaXplZEFycmF5Pik7CisKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGFzSW1tZWRpYXRlKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbW1lZGlhdGVUeXBl
KTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmRlY29kZShtX2RhdGEubV9pbW1l
ZGlhdGUpOworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUeXBlIHx8IG1fdHlw
ZSA9PSBEYXRlVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gbV9kYXRhLm1fZG91YmxlOworICAg
ICAgICB9CisKKyAgICAgICAgSlNDOjpVU3RyaW5nIGFzU3RyaW5nKCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdHJpbmdUeXBlKTsKKyAgICAgICAgICAg
IHJldHVybiBtX3N0cmluZzsKKyAgICAgICAgfQorCisgICAgICAgIFNlcmlhbGl6ZWRPYmplY3Qq
IGFzT2JqZWN0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBPYmplY3RUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3NoYXJlZERhdGEpOworICAgICAg
ICAgICAgcmV0dXJuIG1fc2hhcmVkRGF0YS0+YXNPYmplY3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFNlcmlhbGl6ZWRBcnJheSogYXNBcnJheSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gQXJyYXlUeXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3No
YXJlZERhdGEpOworICAgICAgICAgICAgcmV0dXJuIG1fc2hhcmVkRGF0YS0+YXNBcnJheSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgIT0gRW1wdHlUeXBlOyB9CisKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSBy
ZWxlYXNlKCkgeworICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSByZXN1bHQg
PSAqdGhpczsKKyAgICAgICAgICAgICp0aGlzID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSgp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgdm9pZCB0ZWFyRG93blNlcmlhbGl6ZWREYXRhKCk7CisgICAgICAgIFNlcmlhbGl6
ZWRUeXBlIG1fdHlwZTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZFNlcmlhbGl6ZWREYXRhPiBtX3No
YXJlZERhdGE7CisgICAgICAgIEpTQzo6VVN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgdW5pb24g
eworICAgICAgICAgICAgZG91YmxlIG1fZG91YmxlOworICAgICAgICAgICAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBtX2ltbWVkaWF0ZTsKKyAgICAgICAgfSBtX2RhdGE7CisgICAgfTsKKworICAgIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4KKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpzZXJp
YWxpemUoZXhlYywgdmFsdWUpKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShTdHJpbmcgc3RyaW5nKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKHN0cmluZykpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSgpKSk7CisgICAgICAgIH0KKworICAgICAg
ICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVsZWFzZSgpIHsKKyAgICAgICAg
ICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZXN1bHQgPSBhZG9wdFJlZihu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKG1fdmFsdWUpKTsKKyAgICAgICAgICAgIG1fdmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKCk7CisgICAgICAgICAgICByZXN1bHQtPm1fbXVz
dENvcHkgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisg
ICAgICAgIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLnR5cGUo
KSAhPSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpTdHJpbmdUeXBlKQorICAgICAgICAgICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmFzU3RyaW5nKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVl
LmRlc2VyaWFsaXplKGV4ZWMsIG1fbXVzdENvcHkpOworICAgICAgICB9CisKKyAgICAgICAgflNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIHByaXZhdGU6
CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRh
IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICAgICAgLCBtX211
c3RDb3B5KGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YSBtX3ZhbHVlOworICAgICAgICBib29sIG1fbXVzdENvcHk7CisgICAgfTsK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCBkNTUyYWEwLi4wOTVjNzVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTE4NDIsNiArMTg0MiwxMSBAQCBzdWIgSlNWYWx1ZVRvTmF0
aXZlCiAgICAgICAgIHJldHVybiAiJHZhbHVlLnRvU3RyaW5nKGV4ZWMpIjsKICAgICB9CiAKKyAg
ICBpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3siU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgifSA9IDE7CisgICAgICAgIHJldHVybiAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgJHZhbHVlKSI7CisgICAgfQorCiAg
ICAgJGltcGxJbmNsdWRlc3siRmxvYXRQb2ludC5oIn0gPSAxIGlmICR0eXBlIGVxICJTVkdQb2lu
dCI7CiAgICAgJGltcGxJbmNsdWRlc3siRmxvYXRSZWN0LmgifSA9IDEgaWYgJHR5cGUgZXEgIlNW
R1JlY3QiOwogICAgICRpbXBsSW5jbHVkZXN7IkhUTUxPcHRpb25FbGVtZW50LmgifSA9IDEgaWYg
JHR5cGUgZXEgIkhUTUxPcHRpb25FbGVtZW50IjsKQEAgLTE5NDcsNiArMTk1Miw5IEBAIHN1YiBO
YXRpdmVUb0pTVmFsdWUKICAgICAgICAgJGpvaW5lZE5hbWUgPSAkdHlwZTsKICAgICAgICAgJGpv
aW5lZE5hbWUgPX4gcy9BYnN8UmVsLy87CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IiRqb2luZWRO
YW1lLmgifSA9IDE7CisgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUuaCJ9ID0gMTsKKyAgICAgICAgcmV0
dXJuICIkdmFsdWUtPmRlc2VyaWFsaXplKGV4ZWMpIjsKICAgICB9IGVsc2UgewogICAgICAgICAj
IERlZmF1bHQsIGluY2x1ZGUgaGVhZGVyIHdpdGggc2FtZSBuYW1lLgogICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0KaW5kZXggMDAyNmJhMS4uMzE3MDg2YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCisrKyBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMzExLDcgKzMxMSw3IEBA
IHN1YiBHZXRDbGFzc05hbWUKICAgICBteSAkbmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZShzaGlmdCk7CiAKICAgICAjIHNwZWNpYWwgY2FzZXMKLSAgICByZXR1cm4gIk5TU3RyaW5n
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRuYW1lKTsKKyAgICByZXR1cm4gIk5T
U3RyaW5nIiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRuYW1lKSBvciAkbmFtZSBl
cSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKICAgICByZXR1cm4gIk5TJG5hbWUiIGlmIElzTmF0
aXZlT2JqQ1R5cGUoJG5hbWUpOwogICAgIHJldHVybiAiQk9PTCIgaWYgJG5hbWUgZXEgImJvb2xl
YW4iOwogICAgIHJldHVybiAidW5zaWduZWQiIGlmICRuYW1lIGVxICJ1bnNpZ25lZCBsb25nIjsK
QEAgLTQ5Miw2ICs0OTIsMTEgQEAgc3ViIEdldE9iakNUeXBlR2V0dGVyCiAgICAgcmV0dXJuICJX
VEY6OmdldFB0cihuYXRpdmVFdmVudExpc3RlbmVyKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVu
ZXIiOwogICAgIHJldHVybiAiV1RGOjpnZXRQdHIobmF0aXZlTm9kZUZpbHRlcikiIGlmICR0eXBl
IGVxICJOb2RlRmlsdGVyIjsKICAgICByZXR1cm4gIldURjo6Z2V0UHRyKG5hdGl2ZVJlc29sdmVy
KSIgaWYgJHR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciI7CisgICAgCisgICAgaWYgKCR0eXBlIGVx
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOworICAgICAgICByZXR1cm4gIldlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFdlYkNvcmU6OlN0cmluZygkYXJnTmFtZSkpIjsKKyAg
ICB9CiAgICAgcmV0dXJuICJjb3JlKCRhcmdOYW1lKSI7CiB9CiAKQEAgLTYwNyw2ICs2MTIsMTEg
QEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CisgICAgICAgICRpbXBsSW5j
bHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0gPSAxOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgIyBGSVhNRTogd29uJ3QgY29tcGlsZSB3aXRob3V0IHRoZXNlCiAgICAgJGlt
cGxJbmNsdWRlc3siQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCJ9ID0gMSBpZiAkdHlwZSBl
cSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiI7CiAgICAgJGltcGxJbmNsdWRlc3siTmFtZU5vZGVMaXN0
LmgifSA9IDEgaWYgJHR5cGUgZXEgIk5vZGVMaXN0IjsKQEAgLTEyMTIsNiArMTIyMiw5IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBl
cSAiQ29sb3IiKSB7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNv
cmU6Om5zQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAgICAgICAkZ2V0dGVy
Q29udGVudFRhaWwgLj0gIikiOworICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CisgICAgICAgICAgICAg
ICAgJGdldHRlckNvbnRlbnRIZWFkID0gIiRnZXR0ZXJDb250ZW50SGVhZCI7CisgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICItPnRvU3RyaW5nKCkiOyAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIH0gZWxzaWYgKENvbnZlcnNpb25OZWVkZWQoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlKSkgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJr
aXQoV1RGOjpnZXRQdHIoJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAgICAgICAkZ2V0
dGVyQ29udGVudFRhaWwgLj0gIikpIjsKQEAgLTE0NDYsNiArMTQ1OSw4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuICR0b1JldHVybjtcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmV0dXJuIG5pbDtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCRyZXR1cm5UeXBlIGVxICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiKSB7CisgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiZm9vIjsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKENvbnZlcnNpb25OZWVkZWQoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SXNQb2RUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSkgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAKaW5kZXggMmVmOGJjMi4uM2M4NDY0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC0z
NCwxMCArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoKQorICAgIDogbV9kYXRhKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkp
CiB7CiB9CiAKLU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQ
dHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMp
CitNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIFBhc3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKQEAg
LTUxLDcgKzUyLDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9p
ZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cq
IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK3ZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykK
IHsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03NCw3ICs3NSw3
IEBAIE1lc3NhZ2VQb3J0KiBNZXNzYWdlRXZlbnQ6Om1lc3NhZ2VQb3J0KCkKICAgICByZXR1cm4g
KCptX3BvcnRzKVswXS5nZXQoKTsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqIHBvcnQp
Cit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIE1lc3NhZ2VQb3J0KiBwb3J0KQogewog
ICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gMDsKICAgICBpZiAocG9ydCkgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAppbmRleCA1NTVlZDQ3Li5iN2Y5YjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MiwxNSArNDMsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VF
dmVudCk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50
PiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3QgU3RyaW5n
JiBkYXRhID0gIiIsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gIiIsIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQgPSAiIiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSA9IDApCisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRh
ID0gMCwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSAiIiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCA9ICIiLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlID0gMCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBs
YXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwg
fk1lc3NhZ2VFdmVudCgpOwogCi0gICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0
IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KTsK
KyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7
CiAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RFdmVudElkOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KQEAgLTU5LDE1ICs2MCwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIE1lc3NhZ2VQb3J0
KiBtZXNzYWdlUG9ydCgpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1
cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotICAgICAgICB2b2lkIGluaXRN
ZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQq
KTsKKyAgICAgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2FnZVBvcnQqKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE1lc3NhZ2VFdmVudCgpOwotICAgICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFz
c1JlZlB0cjxET01XaW5kb3c+IHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5Pik7
CisgICAgICAgIE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBh
c3NSZWZQdHI8RE9NV2luZG93PiBzb3VyY2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4p
OwogCi0gICAgICAgIFN0cmluZyBtX2RhdGE7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1fZGF0YTsKICAgICAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgICAgICBTdHJp
bmcgbV9sYXN0RXZlbnRJZDsKICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9zb3VyY2U7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmlkbAppbmRleCBhMzJjYzkzLi43ZTQ5N2ZjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
QEAgLTMwLDIwICszMCwyMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvciwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIE1lc3NhZ2VFdmVudCA6IEV2
ZW50IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGF0YTsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmlnaW47CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFzdEV2ZW50SWQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01XaW5kb3cgc291cmNlOwogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkg
JiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3Rv
bUdldHRlcl0gQXJyYXkgcG9ydHM7CiAKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBpbml0TWVzc2Fn
ZUV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4g
Ym9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgZGF0YUFyZywgaW4gRE9NU3RyaW5n
IG9yaWdpbkFyZywgaW4gRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCBpbiBET01XaW5kb3cgc291
cmNlQXJnLCBpbiBBcnJheSBtZXNzYWdlUG9ydHMpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGlu
aXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxl
QXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01TdHJpbmcgbGFzdEV2ZW50SWRB
cmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIEFycmF5IG1lc3NhZ2VQb3J0cyk7CiAjZWxz
ZQogICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9zZSBhbiBhcnJheSB2aWEg
dGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBleHBvc2UgYSBzaW5nbGUgcG9ydC4K
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0OwogCi0g
ICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9v
bGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5n
IGRhdGFBcmcsIGluIERPTVN0cmluZyBvcmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJ
ZEFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQp
OworICAgICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGlu
IGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBkYXRhQXJnLCBpbiBET01TdHJpbmcgb3JpZ2luQXJnLCBpbiBET01T
dHJpbmcgbGFzdEV2ZW50SWRBcmcsIGluIERPTVdpbmRvdyBzb3VyY2VBcmcsIGluIE1lc3NhZ2VQ
b3J0IG1lc3NhZ2VQb3J0KTsKICNlbmRpZgogCiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA1
MGEwMTA2Li45ZjZlNjQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAK
KysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE1lc3Nh
Z2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogfQogCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgotdm9pZCBNZXNzYWdlUG9y
dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CiAgICAgaWYg
KHBvcnQpCkBAIC02NCwxMiArNjQsMTIgQEAgdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW8KICAgICBw
b3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVjKTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBwb3N0TWVzc2FnZShtZXNz
YWdlLCBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydEFycmF5Kj4oMCksIGVjKTsKIH0KIAotdm9pZCBN
ZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBNZXNz
YWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIE1lc3NhZ2VQb3J0
Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
Y29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmICghbV9lbnRhbmdsZWRDaGFubmVsKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRl
eCBlNjQ5ZDVkLi4wYWIwZjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5o
CisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsg
fQogICAgICAgICB+TWVzc2FnZVBvcnQoKTsKIAotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lk
IHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBj
b25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3
NzQpLgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVz
c2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHZvaWQgc3RhcnQoKTsKICAgICAgICAgdm9pZCBjbG9z
ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggMzRiMmNlNy4uZTFhM2FjNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnRE
YXRhPiBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5u
ZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsK
ICAgICByZXR1cm4gbmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVscyk7CiB9CiAKLU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKLSAgICA6IG1f
bWVzc2FnZShtZXNzYWdlLmNvcHkoKSkKK01lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpF
dmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIDogbV9tZXNzYWdl
KG1lc3NhZ2UtPnJlbGVhc2UoKSkKICAgICAsIG1fY2hhbm5lbHMoY2hhbm5lbHMpCiB7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IDRhY2ZlN2YuLjIzMjFiMWYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5oCkBAIC0zMyw2ICszMyw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDUsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogICAgIGNsYXNzIFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFN0cmluZzsKIAogICAgIC8vIFRoZSBv
dmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhh
bmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCkBA
IC03NywxNCArODAsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNsYXNzIEV2
ZW50RGF0YSB7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PEV2ZW50RGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+KTsKKyAgICAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGF0YT4g
Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4pOwogCi0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UoKSB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSogbWVzc2FnZSgpIHsgcmV0dXJuIG1fbWVzc2FnZS5nZXQoKTsgfQogICAgICAgICAgICAg
UGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMoKSB7IHJldHVybiBt
X2NoYW5uZWxzLnJlbGVhc2UoKTsgfQogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBF
dmVudERhdGEoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5Pik7Ci0gICAgICAgICAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgICAgICAgICAg
RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgICAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgICAgICAgICBPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggNDkyNTIzZi4uODkwZDQ5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWEuaCIKQEAgLTgwLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAg
UG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJj
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFNlY3VyaXR5
T3JpZ2luKiB0YXJnZXRPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdp
bmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRh
cmdldE9yaWdpbikKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQpAQCAtMTA0LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5k
b3c7Ci0gICAgU3RyaW5nIG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFJlZlB0cjxET01XaW5k
b3c+IG1fc291cmNlOwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9jaGFu
bmVsczsKQEAgLTYzNSw3ICs2MzYsNyBAQCBOb3RpZmljYXRpb25DZW50ZXIqIERPTVdpbmRvdzo6
d2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBET01XaW5kb3c6
OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBjb25zdCBTdHJpbmcmIHRh
cmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CiAgICAgaWYgKHBvcnQpCkBAIC02NDMsNyArNjQ0LDcg
QEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVz
c2FnZVBvcnQqIHBvcnQsIGNvbnN0IFN0cmkKICAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9y
dHMsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBv
cnRzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0
cywgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAppbmRleCBmMjE3N2VlLi4yNWVhZGM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC01OSw2ICs1OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb3RpZmljYXRpb25DZW50ZXI7CiAgICAgY2xh
c3MgUG9zdE1lc3NhZ2VUaW1lcjsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CisgICAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFNjcmVlbjsKICAgICBjbGFzcyBX
ZWJLaXRQb2ludDsKIApAQCAtMjE0LDkgKzIxNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CiAj
ZW5kaWYKIAotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgTWVzc2FnZVBvcnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01X
aW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdl
UG9ydEFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNl
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9z
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5k
b3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGlt
ZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyKik7CiAKICAgICAgICAgdm9pZCBzY3JvbGxCeShpbnQg
eCwgaW50IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCAzYjNjY2UwLi45ZTNkZjQ4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtMTgyLDExICsxODIsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAg
ICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZB
U0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIFtEb05vdENoZWNrRG9tYWlu
U2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwg
aW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmln
aW4pCisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0
TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBB
cnJheSBtZXNzYWdlUG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29v
ZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5v
dyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KLSAgICAgICAgW0RvTm90Q2hl
Y2tEb21haW5TZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBt
ZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBET01TdHJp
bmcgdGFyZ2V0T3JpZ2luKQorICAgICAgICBbRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5LCBDdXN0
b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGlu
IFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQsIGluIERPTVN0cmluZyB0YXJnZXRP
cmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmNwcAppbmRleCBhZTNjMGMzLi4yYzlhMzQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJj
ZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKQEAgLTI5NCw3ICsy
OTUsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpzdG9wKCkKIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50
PiBFdmVudFNvdXJjZTo6Y3JlYXRlTWVzc2FnZUV2ZW50KCkKIHsKICAgICBSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnQtPmluaXRN
ZXNzYWdlRXZlbnQobV9ldmVudE5hbWUuaXNFbXB0eSgpID8gZXZlbnROYW1lcygpLm1lc3NhZ2VF
dmVudCA6IEF0b21pY1N0cmluZyhtX2V2ZW50TmFtZSksIGZhbHNlLCBmYWxzZSwgU3RyaW5nOjph
ZG9wdChtX2RhdGEpLCBtX29yaWdpbiwgbV9sYXN0RXZlbnRJZCwgMCwgMCk7CisgICAgZXZlbnQt
PmluaXRNZXNzYWdlRXZlbnQobV9ldmVudE5hbWUuaXNFbXB0eSgpID8gZXZlbnROYW1lcygpLm1l
c3NhZ2VFdmVudCA6IEF0b21pY1N0cmluZyhtX2V2ZW50TmFtZSksIGZhbHNlLCBmYWxzZSwgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjphZG9wdChtX2RhdGEpKSwgbV9vcmln
aW4sIG1fbGFzdEV2ZW50SWQsIDAsIDApOwogICAgIHJldHVybiBldmVudC5yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZGQ4OWMxNC4uMTYyMTFhNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFdlYlNvY2tldDo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAgICAgICAgIHJldHVybjsKICAg
ICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOwogICAg
IC8vIEZJWE1FOiBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0LgotICAg
IGV2dC0+aW5pdE1lc3NhZ2VFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwg
ZmFsc2UsIG1zZywgIiIsICIiLCAwLCAwKTsKKyAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQoZXZl
bnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShtc2cpLCAiIiwgIiIsIDAsIDApOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsIGV2
dCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKaW5k
ZXggNTIwNmZkOS4uODJkYzRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcApAQCAtNDcsNyArNDcsNyBAQCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1cwogfQog
CiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3Mg
KGJ1ZyAjMjg3NzQpLgotdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzOwogICAgIGlmIChwb3J0
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9yCiAgICAgcG9zdE1l
c3NhZ2UobWVzc2FnZSwgJnBvcnRzLCBlYyk7CiB9CiAKLXZvaWQgRGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwg
ZWMpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRB
cnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChpc0Nsb3NpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgK
aW5kZXggNzYwOWZjZC4uNzRhMzlkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oCkBAIC01NSwxMCArNTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4
dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQotICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5Kiwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgTWVzc2FnZVBv
cnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlz
IHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KLSAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbAppbmRleCA4OTliYmFlLi5mNDIxYjlhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCkBAIC0zOSw3ICszOSw3IEBA
IG1vZHVsZSB0aHJlYWRzIHsKICAgICBdIERlZGljYXRlZFdvcmtlckNvbnRleHQgOiBXb3JrZXJD
b250ZXh0IHsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0Vf
SkFWQVNDUklQVAotICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmlu
ZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKKyAgICAgICAgW0N1
c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBhbnkgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJh
eSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbHNl
CiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0
aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5n
bGUgcG9ydC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggYzJjMjVjMS4uODY0YjdjNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgV29ya2VyOjp+V29ya2VyKCkKIH0KIAogLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4K
LXZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQ
b3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBv
cnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CiAg
ICAgaWYgKHBvcnQpCkBAIC03OCwxMiArNzgsMTIgQEAgdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUK
ICAgICBwb3N0TWVzc2FnZShtZXNzYWdlLCAmcG9ydHMsIGVjKTsKIH0KIAotdm9pZCBXb3JrZXI6
OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2Us
IHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0QXJyYXkqPigwKSwgZWMpOwogfQogCi12b2lkIFdvcmtl
cjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFy
cmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQ
b3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBEaXNlbnRhbmds
ZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNv
bnRleHQuCiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IE1l
c3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBlYyk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNDFk
MzlhMi4uNmI4ZmE4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTgsMTAgKzU4LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKSB7IHJldHVybiB0
aGlzOyB9CiAKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgY29uc3Qg
TWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVn
ICMyODc3NCkuCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQq
LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmlkbAppbmRleCA5YzkzNDJiLi4wMzgyNzM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbApAQCAtMzUsMTEgKzM1
LDExIEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25tZXNzYWdlOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFH
RV9KQVZBU0NSSVBUCi0gICAgICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3Ry
aW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzKQorICAgICAgICBb
Q3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNzYWdl
LCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gVGhlcmUncyBubyBnb29kIHdheSB0byBl
eHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Igbm93IGp1c3QgYWxs
b3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGlu
IERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0
KQorICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNz
YWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0KQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHRQcm94eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQ
cm94eS5oCmluZGV4IGQ1NTQ1MmUuLmUxY2ExMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0UHJveHkuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dFByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmLCBQYXNz
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDNkMjhmOWUuLjI5ODc4Zjgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysr
IGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNDYsMTQgKzQ2
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVzc2FnZVdvcmtlckNvbnRleHRU
YXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzaz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlV29ya2VyQ29udGV4dFRhc2sobWVzc2FnZSwgY2hhbm5l
bHMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCi0gICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UuY29weSgpKQorICAgIE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCisgICAg
ICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UtPnJlbGVhc2UoKSkKICAgICAgICAgLCBtX2NoYW5uZWxz
KGNoYW5uZWxzKQogICAgIHsKICAgICB9CkBAIC02OCwyMCArNjgsMjAgQEAgcHJpdmF0ZToKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBtX2NoYW5uZWxzOwogfTsKIAogY2xhc3MgTWVzc2FnZVdvcmtlclRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVzc2FnZVdvcmtlclRhc2s+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2Fn
ZVdvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVzc2FnZSwgY2hhbm5lbHMsIG1lc3NhZ2lu
Z1Byb3h5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lc3NhZ2VXb3JrZXJUYXNrKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKLSAgICAgICAgOiBt
X21lc3NhZ2UobWVzc2FnZS5jb3B5KCkpCisgICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpCisgICAgICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UtPnJlbGVhc2UoKSkKICAgICAgICAgLCBt
X2NoYW5uZWxzKGNoYW5uZWxzKQogICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5n
UHJveHkpCiAgICAgewpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBTdHJpbmcgbV9tZXNzYWdlOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fbWVzc2FnZTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hh
bm5lbHM7CiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7CiB9OwpA
QCAtMjQwLDEyICsyNDAsMTIgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3Jr
ZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW4KICAgICB0aHJlYWQt
PnN0YXJ0KCk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQogewog
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soTWVzc2FnZVdvcmtlclRhc2s6
OmNyZWF0ZShtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCksIHRoaXMpKTsKIH0KIAotdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKICAgICBpZiAobV9hc2tlZFRvVGVy
bWluYXRlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oCmluZGV4IDhhYjBjYjYuLjc1NDEwMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQu
KQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcm
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKICAgICAgICAg
dmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRp
b25zIG9mIFdvcmtlck9iamVjdFByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0
aG9kcyBpbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLikKLSAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25Q
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94
eS5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKaW5kZXggNzdhN2Q3ZC4u
MzNlMGJjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgK
KysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29y
a2VyIG9iamVjdC4KICAgICBjbGFzcyBXb3JrZXJPYmplY3RQcm94eSA6IHB1YmxpYyBXb3JrZXJS
ZXBvcnRpbmdQcm94eSB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNv
bmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KSA9IDA7
</data>
<flag name="review"
          id="21953"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>