<?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>57406</bug_id>
          
          <creation_ts>2011-03-29 17:29:41 -0700</creation_ts>
          <short_desc>Add default localization strategy that can be shared by WebKit1 and WebKit2</short_desc>
          <delta_ts>2011-03-30 10:29:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>375923</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-03-29 17:29:41 -0700</bug_when>
    <thetext>Add default localization strategy that can be shared by WebKit1 and WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375934</commentid>
    <comment_count>1</comment_count>
      <attachid>87442</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-03-29 17:43:40 -0700</bug_when>
    <thetext>Created attachment 87442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375939</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-29 17:47:24 -0700</bug_when>
    <thetext>Attachment 87442 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/Android.mk&apos;, u&apos;Source/WebCo...&quot; exit_code: 1

Source/WebKit2/ChangeLog:28:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebCore/platform/DefaultLocalizationStrategy.h:168:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376433</commentid>
    <comment_count>3</comment_count>
      <attachid>87560</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-03-30 10:16:37 -0700</bug_when>
    <thetext>Created attachment 87560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376443</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-03-30 10:29:07 -0700</bug_when>
    <thetext>Landed in r82465.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87442</attachid>
            <date>2011-03-29 17:43:40 -0700</date>
            <delta_ts>2011-03-30 10:16:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57406-20110329174339.patch</filename>
            <type>text/plain</type>
            <size>153481</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMzY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMjkgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgZGVmYXVsdCBsb2NhbGl6YXRpb24gc3RyYXRlZ3kgdGhhdCBjYW4g
YmUgc2hhcmVkIGJ5IFdlYktpdDEgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NDA2CisKKyAgICAgICAgQ3VycmVudGx5LCBvbmx5
IFdlYktpdDIgdXNlcyB0aGlzIGRlZmF1bHQgc3RyYXRlZ3ksIGJ1dCBXZWJLaXQxIHNob3VsZCBi
ZSBhYmxlCisgICAgICAgIHRvIGFkb3B0IGl0IHNvb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkRlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmguCisgICAgICAgIENvcHkgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBMb2NhbGl6YXRpb24gc3RyYXRlZ3kgZnJvbSBXZWJLaXQyIGludG8g
YSBzaGFyZWQgZGVmYXVsdCBzdHJhdGVneS4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgQWRkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgbG9jYWxpemF0aW9uIGJvdHRsZW5lY2sg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAg
ICAgIEFkZCBsb2NhbGl6YXRpb24gbWFjcm9zIGhlcmUsIGluc3RlYWQgb2YgZGVmaW5pbmcgdGhl
bSBpbiB0aGUgYWJvdmUgbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVM
b2NhbGl6YXRpb25TdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgIEFkZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHN0cmF0ZWd5IGNy
ZWF0aW9uIGZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgdGhlIGRlZmF1bHQgc3RyYXRlZ3kuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tLgorICAg
ICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgQWRkIHN0dWIgZm9yIHdp
bmRvd3MsIHRoaXMgd2lsbCBiZSB1cGRhdGUgdG8gcHVsbCBmcm9tIHRoZSBidW5kbGUgaW4gYSBm
b2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisK
IDIwMTEtMDMtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDgyMzU5KQorKysgU291
cmNlL1dlYkNvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpAQCAtNDY4LDYgKzQ2OCw3IEBA
IExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXBsYXRmb3JtL0FyZW5h
LmNwcCBcCiAJcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKIAlwbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgXAorCXBsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAg
XAogCXBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAJcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAJ
cGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmNwcAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAogICAg
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorICAgIHBsYXRmb3JtL0RlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneS5jcHAKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKICAgICBwbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjM1Nyw2ICsyMzU3LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DdXJzb3IuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdE
YXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtNDc5LDYgKzQ3OSw3IEBAIF9fWk43V2ViQ29yZTE3R2x5cGhQYWdlVHJl
ZU5vZGUxOHRyZWVHbHkKIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1
bWVudEFuZFNjcm9sbFN0YXRlRXYKIF9fWk43V2ViQ29yZTE3bmFtZUZvckN1cnNvclR5cGVFTlNf
NkN1cnNvcjRUeXBlRQogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0
cmluZ0VSaQorX19aTjdXZWJDb3JlMThQbGF0Zm9ybVN0cmF0ZWdpZXMyNmNyZWF0ZUxvY2FsaXph
dGlvblN0cmF0ZWd5RXYKIF9fWk43V2ViQ29yZTE4U2VhcmNoUG9wdXBNZW51TWFjQzFFUE5TXzE1
UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQYXJhZ3JhcGhFUktOU18x
NVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk43
V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEzSlNIVE1M
RWxlbWVudEUKQEAgLTc1Myw4ICs3NTQsOCBAQCBfX1pON1dlYkNvcmU2RWRpdG9yMjRpc1NlbGVj
dGlvblVuZ3JhbW1hCiBfX1pON1dlYkNvcmU2RWRpdG9yMjZkZWNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbEV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMjZpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2
CiBfX1pON1dlYkNvcmU2RWRpdG9yMjZ3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZEVSS04zV1RG
NlN0cmluZ0VSS05TMV82VmVjdG9ySVMyX0xtMEVFRQotX19aTjdXZWJDb3JlNkVkaXRvcjI3cmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVk
aXRvcjI3aGFuZGxlQ29ycmVjdGlvblBhbmVsUmVzdWx0RVJLTjNXVEY2U3RyaW5nRQorX19aTjdX
ZWJDb3JlNkVkaXRvcjI3cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlNkVkaXRvcjI5Y2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgog
X19aTjdXZWJDb3JlNkVkaXRvcjI5Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19a
TjdXZWJDb3JlNkVkaXRvcjMwYXBwbHlQYXJhZ3JhcGhTdHlsZVRvU2VsZWN0aW9uRVBOU18xOUNT
U1N0eWxlRGVjbGFyYXRpb25FTlNfMTBFZGl0QWN0aW9uRQpAQCAtMTIxNiw5ICsxMjE3LDkgQEAg
X19aTks3V2ViQ29yZTZFZGl0b3IxN2ZpcnN0UmVjdEZvclJhbmdlRQogX19aTks3V2ViQ29yZTZF
ZGl0b3IxN3NlbGVjdGlvbkhhc1N0eWxlRWlSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU2
RWRpdG9yMTdzaG91bGREZWxldGVSYW5nZUVQTlNfNVJhbmdlRQogX19aTks3V2ViQ29yZTZFZGl0
b3IyM2dldENvbXBvc2l0aW9uU2VsZWN0aW9uRVJqUzFfCitfX1pOSzdXZWJDb3JlNkVkaXRvcjI2
c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlw
ZUVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzMGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVu
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2Ci1fX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JFTlNf
MTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jh
c2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnRFdgogX19aTks3V2ViQ29yZTZFZGl0
b3I2Y2FuQ3V0RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yN0NvbW1hbmQxMWlzU3VwcG9ydGVkRXYK
QEAgLTEyODYsNiArMTI4Nyw3IEBAIF9fWlRWTjdXZWJDb3JlMTJDaHJvbWVDbGllbnRFCiBfX1pU
Vk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFzZUUKIF9fWlRWTjdXZWJDb3JlMTdGaWxlQ2hvb3Nl
ckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKK19fWlRWTjdXZWJD
b3JlMThQbGF0Zm9ybVN0cmF0ZWdpZXNFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5
TGlzdFdyaXRlckUKIF9fWlRWTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OFNldHRpbmdzRQogX2ZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycwpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTczNiw2ICs3MzYsNyBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0Nvb2tpZUphci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3ku
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ3Vyc29yLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9EcmFnRGF0YS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9EcmFnSW1hZ2UuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vRmlsZUNob29zZXIuaCcsCkBAIC0zNDg0LDYgKzM0ODUsNyBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Q3Vyc29yLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0RhdGEuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9F
dmVudExvb3AuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gODIzNTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDYgKzk0NSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAg
XAogICAgIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3ku
Y3BwIFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdJbWFn
ZS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBcCkBAIC0xODY4LDYgKzE4Njks
NyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0
Zm9ybS9Db250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwK
KyAgICBwbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCBcCiAgICAgcGxhdGZv
cm0vRHJhZ0RhdGEuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmggXAogICAgIHBsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDgyMzU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1NzkwLDYgKzI1Nzkw
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEcmFnSW1hZ2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTI2Mjk3LDYgKzI2MzA1LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVx3aW5cTG9nZ2luZ1dpbi5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTE3Nyw2ICs1MTc3LDggQEAKIAkJQkND
MDY1ODgwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8q
IEpTQ2xpZW50UmVjdC5oICovOyB9OwogCQlCQ0MwNjU4OTBGM0NFMkE3MDBDRDJEODcgLyogSlND
bGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0MwNjU4NTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAg
Ki87IH07CiAJCUJDQzA2NThBMEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3RMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MwNjU4NjBG
M0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5oICovOyB9OworCQlCQ0MzNkVCODEz
NDJBQTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzM2RUI2MTM0MkFBM0Yw
MDRCRUVGNyAvKiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwICovOyB9OworCQlCQ0Mz
NkVCOTEzNDJBQTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0MzNkVCNzEzNDJB
QTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmggKi87IH07CiAJCUJD
QzQzODc4MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNDM4NzcwRTg4
NkNDNzAwNTMzREQ1IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJD
QzU3MzM1MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzMzMzBENjk1QkJFMDA2RUY1
MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlCQ0M1NzMzNjBENjk1QkJFMDA2RUY1
MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQzU3MzM0MEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2
ZW50Lm1tICovOyB9OwpAQCAtMTE2MDQsNiArMTE2MDYsOCBAQAogCQlCQ0MwNjU4NDBGM0NFMkE3
MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ2xpZW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0MwNjU4
NTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NsaWVudFJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNDMDY1ODYwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVj
dExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbGllbnRSZWN0TGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MzNkVCNjEzNDJBQTNGMDA0QkVF
RjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQzM2RUI3MTM0MkFBM0YwMDRCRUVGNyAvKiBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MSW5wdXRF
bGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNTczMzMw
RDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NUHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0M1NzMzNDBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVByb2dyZXNzRXZlbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ2Niw2ICsxODQ3MCw4IEBACiAJ
CQkJMkU0MzQ2NTcwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmggKi8sCiAJ
CQkJRTExQUYxNTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8sCiAJCQkJRjU4Nzg2
ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICovLAorCQkJCUJDQzM2RUI2MTM0MkFBM0Yw
MDRCRUVGNyAvKiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwICovLAorCQkJCUJDQzM2
RUI3MTM0MkFBM0YwMDRCRUVGNyAvKiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLywK
IAkJCQlBNzk1NDY0MjBCNUM0Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwICovLAogCQkJCUE3
QjZFNjlEMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oICovLAogCQkJCUE3Q0ZCM0NGMEI3
RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuY3BwICovLApAQCAtMjI3MjEsNiArMjI3MjcsNyBA
QAogCQkJCTkzRjE5OUVEMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmls
dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0MzNkVCOTEzNDJBQTNGMDA0QkVFRjcgLyogRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1Mzk0LDYgKzI1
NDAxLDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzM2RUI4MTM0
MkFBM0YwMDRCRUVGNyAvKiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAJKHJldmlzaW9uIDgyMzU5KQkoZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6ODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgorCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisKKyNpbmNsdWRlICJQbHVn
aW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaWYgVVNF
KENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFdlIGNhbid0IHVzZSBTdHJp
bmc6OmZvcm1hdCBmb3IgdHdvIHJlYXNvbnM6CisvLyAgMSkgSXQgZG9lc24ndCBoYW5kbGUgbm9u
LUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcuCisvLyAgMikgSXQgZG9lc24n
dCBoYW5kbGUgdGhlICUyJGQgc3ludGF4LgorLy8gTm90ZSB0aGF0IGJlY2F1c2UgfGZvcm1hdHwg
aXMgdXNlZCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJl
IGEgcmVmZXJlbmNlCisvLyB0eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUg
QysrIE4xOTA1IHN0YW5kYXJkLgorc3RhdGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
U3RyaW5nIGZvcm1hdCwgLi4uKQoreworI2lmIFVTRShDRikKKyAgICB2YV9saXN0IGFyZ3VtZW50
czsKKyAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9wdENGLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdENGU3RyaW5nLmdldCgpLCBhcmd1
bWVudHMpKTsKKyAgICB2YV9lbmQoYXJndW1lbnRzKTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgp
OworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgdmFfbGlzdCBhcmd1bWVudHM7CisgICAgdmFfc3Rh
cnQoYXJndW1lbnRzLCBmb3JtYXQpOworICAgIFFTdHJpbmcgcmVzdWx0OworICAgIHJlc3VsdC52
c3ByaW50Zihmb3JtYXQubGF0aW4xKCkuZGF0YSgpLCBhcmd1bWVudHMpOworICAgIHZhX2VuZChh
cmd1bWVudHMpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZvcm1hdDsKKyNlbmRpZgorfQorCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6aW5pdGlhbGl6ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMsIHBsYXRmb3JtU3RyYXRlZ2llcywgKCkpOworICAgIHNldFBsYXRmb3Jt
U3RyYXRlZ2llcygmcGxhdGZvcm1TdHJhdGVnaWVzKTsKK30KKworV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMoKQorICAgIDogbV9wbHVnaW5DYWNoZUlzUG9wdWxh
dGVkKGZhbHNlKQorICAgICwgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyhmYWxzZSkKK3sKK30KKwor
Q29va2llc1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUNvb2tpZXNTdHJh
dGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1BsdWdpblN0cmF0ZWd5KiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhp
czsKK30KKworTG9jYWxpemF0aW9uU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jl
YXRlTG9jYWxpemF0aW9uU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitWaXNp
dGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVZpc2l0ZWRMaW5r
U3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCisvLyBDb29raWVzU3RyYXRlZ3kK
Kwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkKK3sK
KyAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENvb2tpZXNEaWRDaGFuZ2Uo
KTsKK30KKworLy8gUGx1Z2luU3RyYXRlZ3kKKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQoreworICAgIGlmIChtX3BsdWdpbkNhY2hlSXNQb3B1bGF0
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX2NhY2hlZFBsdWdpbnMuaXNFbXB0
eSgpKTsKKyAgICAKKyAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luczsKKyAgICAKKyAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIGRvIHNvbWV0aGluZyBpbiBjYXNlIG9mIGVycm9yIGhlcmU/Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViQ29udGV4dDo6R2V0UGx1Z2lucyhtX3Nob3VsZFJlZnJlc2hQbHVnaW5zKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJDb250
ZXh0OjpHZXRQbHVnaW5zOjpSZXBseShwbHVnaW5zKSwgMCk7CisKKyAgICBtX2NhY2hlZFBsdWdp
bnMuc3dhcChwbHVnaW5zKTsKKyAgICAKKyAgICBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gZmFs
c2U7CisgICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gdHJ1ZTsKK30KKwordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKK3sKKyAgICBtX2NhY2hlZFBsdWdp
bnMuY2xlYXIoKTsKKyAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSBmYWxzZTsKKyAgICBt
X3Nob3VsZFJlZnJlc2hQbHVnaW5zID0gdHJ1ZTsKKworICAgIHBvcHVsYXRlUGx1Z2luQ2FjaGUo
KTsKK30KKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lucykKK3sK
KyAgICBwb3B1bGF0ZVBsdWdpbkNhY2hlKCk7CisgICAgcGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2lu
czsKK30KKworLy8gTG9jYWxpemF0aW9uU3RyYXRlZ3kgICAgCisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmlucHV0RWxlbWVudEFsdFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkdfS0VZKCJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBlbGVtZW50KSIsICJhbHQgdGV4dCBmb3Ig
PGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9yIHZhbHVlIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJSZXNldCIsICJkZWZhdWx0IGxhYmVsIGZvciBSZXNldCBi
dXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoIlRoaXMgaXMgYSBzZWFyY2hhYmxlIGluZGV4LiBFbnRlciBzZWFyY2gga2V5d29y
ZHM6ICIsCisgICAgICAgICJ0ZXh0IHRoYXQgYXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgbmVhcmx5
LW9ic29sZXRlIHdlYiBwYWdlcyBpbiB0aGUgZm9ybSBvZiBhICdzZWFyY2hhYmxlIGluZGV4JyIp
OworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdWJtaXRCdXR0b25EZWZhdWx0
TGFiZWwoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVs
IGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiQ2hvb3NlIEZpbGUiLCAidGl0bGUgZm9yIGZpbGUgYnV0dG9u
IHVzZWQgaW4gSFRNTCBmb3JtcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
Rygibm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNl
ZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmlsZSBpcyBzZWxlY3RlZCIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWls
cz4gdGFnIHdoZW4gaXQgaGFzIG5vIDxzdW1tYXJ5PiBjaGlsZCIpOworfQorCisjaWYgUExBVEZP
Uk0oTUFDKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weUltYWdlVW5rbm93bkZp
bGVMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZp
bGVuYW1lIik7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3
V2luZG93KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIExpbmsgaW4gTmV3IFdpbmRv
dyIsICJPcGVuIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9E
aXNrKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJEb3dubG9hZCBMaW5rZWQgRmlsZSIsICJE
b3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJk
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IExpbmsiLCAiQ29weSBMaW5rIGNvbnRl
eHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoIkRvd25sb2FkIEltYWdlIiwgIkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5
IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworI2lmIFBMQVRG
T1JNKFFUKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
Q29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkg
SW1hZ2UgQWRkcmVzcyIsICJDb3B5IEltYWdlIEFkZHJlc3MgbWVudSBpdGVtIik7Cit9CisjZW5k
aWYKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3Bl
blZpZGVvSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gVmlkZW8g
aW4gTmV3IFdpbmRvdyIsICJPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4g
QXVkaW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIEF1ZGlvIGluIE5ldyBXaW5kb3cgY29udGV4dCBt
ZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJDb3B5IFZpZGVvIEFkZHJlc3MiLCAiQ29weSBWaWRlbyBBZGRyZXNzIExvY2F0aW9uIGNv
bnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJu
IFVJX1NUUklORygiQ29weSBBdWRpbyBBZGRyZXNzIiwgIkNvcHkgQXVkaW8gQWRkcmVzcyBMb2Nh
dGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJDb250cm9scyIsICJNZWRpYSBDb250cm9scyBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdUb2dnbGVNZWRpYUxvb3AoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkxvb3AiLCAiTWVk
aWEgTG9vcCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpCit7CisgICAg
cmV0dXJuIFVJX1NUUklORygiRW50ZXIgRnVsbHNjcmVlbiIsICJWaWRlbyBFbnRlciBGdWxsc2Ny
ZWVuIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiUGxheSIsICJNZWRpYSBQbGF5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlBhdXNlIiwgIk1lZGlhIFBhdXNlIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ01lZGlhTXV0ZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTXV0ZSIsICJNZWRpYSBN
dXRlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBGcmFtZSBpbiBO
ZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoIkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIkJhY2siLCAiQmFjayBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQor
eworICAgIHJldHVybiBVSV9TVFJJTkcoIkZvcndhcmQiLCAiRm9yd2FyZCBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTdG9wKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdG9wIiwgIlN0b3AgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJSZWxvYWQiLCAi
UmVsb2FkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
Q3V0IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiUGFzdGUiLCAiUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworI2lmIFBMQVRG
T1JNKEdUSykKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnRGVsZXRlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiRGVsZXRl
IjsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
SW5wdXRNZXRob2RzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiSW5w
dXQgTWV0aG9kcyI7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1VuaWNvZGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
ICJVbmljb2RlIjsKK30KKworI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdT
ZWxlY3RBbGwoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJTZWxlY3Qg
QWxsIjsKK30KKworI2VuZGlmCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJO
byBHdWVzc2VzIEZvdW5kIiwgIk5vIEd1ZXNzZXMgRm91bmQgY29udGV4dCBtZW51IGl0ZW0iKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdu
b3JlU3BlbGxpbmcoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIklnbm9yZSBTcGVsbGluZyIs
ICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiTGVhcm4gU3BlbGxpbmciLCAiTGVhcm4gU3BlbGxpbmcgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWFy
Y2ggaW4gR29vZ2xlIiwgIlNlYXJjaCBpbiBHb29nbGUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30K
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCit7CisjaWYgZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJM
b29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVu
dSBpdGVtIik7CisjZWxzZQorICAgIHJldHVybiBVSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVj
dGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQi
KS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHNlbGVjdGVkU3RyaW5nKTsKKyNlbmRpZgorfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJJZ25v
cmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01l
bnUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNw
ZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bChib29sIHNob3cpCit7CisgICAgaWYgKHNob3cpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
IlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0
dXJuIFVJX1NUUklORygiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0
bGUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgRG9jdW1l
bnQgTm93IiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdX
aGlsZVR5cGluZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgU3BlbGxpbmcgV2hp
bGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNo
ZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZyIsICJDaGVjayBncmFtbWFyIHdpdGggc3BlbGxpbmcg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkZv
bnQiLCAiRm9udCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiQm9sZCIsICJCb2xkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpCit7CisgICAg
cmV0dXJuIFVJX1NUUklORygiSXRhbGljIiwgIkl0YWxpYyBjb250ZXh0IG1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdVbmRl
cmxpbmUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlVuZGVybGluZSIsICJVbmRlcmxpbmUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiT3V0
bGluZSIsICJPdXRsaW5lIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQYXJhZ3JhcGggRGlyZWN0aW9uIiwgIlBhcmFncmFw
aCBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWxlY3Rpb24gRGlyZWN0aW9uIiwgIlNlbGVjdGlvbiBk
aXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoIkRlZmF1bHQiLCAiRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
TGVmdCB0byBSaWdodCIsICJMZWZ0IHRvIFJpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9M
ZWZ0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRv
IExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90
bGlnaHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNlYXJjaCBpbiBTcG90bGlnaHQiLCAi
U2VhcmNoIGluIFNwb3RsaWdodCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoIlNob3cgRm9udHMiLCAiU2hvdyBmb250cyBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTdHlsZXMoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN0eWxlcy4uLiIsICJTdHls
ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiU2hvdyBDb2xvcnMiLCAiU2hvdyBjb2xvcnMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVu
dSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU3BlZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1
Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU3Rh
cnQgU3BlYWtpbmciLCAiU3RhcnQgc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFr
aW5nKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdG9wIFNwZWFraW5nIiwgIlN0b3Agc3Bl
YWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5Iiwg
IkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGljYWxseSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0
dXRpb25zTWVudSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU3Vic3RpdHV0aW9ucyIsICJT
dWJzdGl0dXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29s
IHNob3cpCit7CisgICAgaWYgKHNob3cpIAorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93
IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiSGlkZSBTdWJzdGl0dXRpb25zIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgQ29weS9QYXN0ZSIsICJTbWFydCBDb3B5
L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJTbWFydCBRdW90ZXMiLCAiU21hcnQgUXVvdGVzIGNvbnRleHQgbWVudSBpdGVtIik7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0RGFzaGVzKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBEYXNoZXMiLCAiU21h
cnQgRGFzaGVzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNtYXJ0IExpbmtzIGNvbnRleHQgbWVudSBpdGVtIik7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Rl
eHRSZXBsYWNlbWVudCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiVGV4dCBSZXBsYWNlbWVu
dCIsICJUZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01l
bnUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlRyYW5zZm9ybWF0aW9ucyIsICJUcmFuc2Zv
cm1hdGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIk1ha2UgVXBwZXIgQ2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTWFr
ZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFs
aXplKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDYXBpdGFsaXplIiwgIkNhcGl0YWxpemUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHJlcGxhY2VkU3RyaW5nOwor
fQorCisjZW5kaWYKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnSW5zcGVjdEVsZW1lbnQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkluc3BlY3Qg
RWxlbWVudCIsICJJbnNwZWN0IEVsZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIk5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJlbCBmb3Igb25seSBpdGVtIGluIG1lbnUg
dGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hl
biBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVkIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlJlY2VudCBTZWFyY2hlcyIsICJsYWJlbCBmb3IgZmlyc3QgaXRlbSBp
biB0aGUgbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlja2luZyBvbiB0aGUgc2VhcmNoIGZpZWxk
IGltYWdlLCB1c2VkIGFzIGVtYmVkZGVkIG1lbnUgdGl0bGUiKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJDbGVhciBSZWNlbnQgU2VhcmNoZXMiLCAibWVudSBpdGVt
IGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVudHMiKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhXZWJBcmVhVGV4dCgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiSFRNTCBjb250ZW50IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBk
ZXNjcmlwdGlvbiBmb3Igd2ViIGFyZWEiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6QVhMaW5rVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygibGluayIsICJhY2Nl
c3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpbmsiKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygibGlzdCBtYXJrZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBs
aXN0IG1hcmtlciIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEltYWdl
TWFwVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiaW1hZ2UgbWFwIiwgImFjY2Vzc2li
aWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaW1hZ2UgbWFwIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSGVhZGluZ1RleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoImhlYWRpbmciLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBoZWFkaW5n
cyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWERlZmluaXRpb25MaXN0
VGVybVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInRlcm0iLCAidGVybSB3b3JkIG9m
IGEgZGVmaW5pdGlvbiIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWERl
ZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoImRl
ZmluaXRpb24iLCAiZGVmaW5pdGlvbiBwaHJhc2UiKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29u
c3QgU3RyaW5nJiBhcmlhVHlwZSkKK3sKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNh
dGlvbkFsZXJ0IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYWxlcnQiLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhbGVydC4iKTsKKyAgICBpZiAoYXJp
YVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygiYWxlcnQgZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGFjdHMgYXMgYW4gYWxlcnQgZGlhbG9nLiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFw
cGxpY2F0aW9uRGlhbG9nIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZGlhbG9nIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gZGlhbG9nLiIpOworICAg
IGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uTG9nIikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygibG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMg
YSBjb25zb2xlIGxvZy4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbk1h
cnF1ZWUiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtYXJxdWVlIiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBtYXJxdWVlLiIpOyAgICAKKyAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvblN0YXR1cyIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImFwcGxpY2F0aW9uIHN0YXR1cyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAg
dGhhdCBhY3RzIGFzIGEgc3RhdHVzIHVwZGF0ZS4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09
ICJBUklBQXBwbGljYXRpb25UaW1lciIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRpbWVy
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gdXBkYXRpbmcg
dGltZXIuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50IikKKyAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygiZG9jdW1lbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdy
b3VwIHRoYXQgYWN0cyBhcyBhIGRvY3VtZW50LiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0g
IkFSSUFEb2N1bWVudEFydGljbGUiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcnRpY2xl
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYXJ0aWNsZS4i
KTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnROb3RlIikKKyAgICAgICAg
cmV0dXJuIFVJX1NUUklORygibm90ZSIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhh
dCBhY3RzIGFzIGEgbm90ZSBpbiBhIGRvY3VtZW50LiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUg
PT0gIkFSSUFEb2N1bWVudFJlZ2lvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJlZ2lv
biIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgZGlzdGluY3Qg
cmVnaW9uIGluIGEgZG9jdW1lbnQuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxh
bmRtYXJrQXBwbGljYXRpb24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcHBsaWNhdGlv
biIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFwcGxpY2F0
aW9uLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0Jhbm5lciIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoImJhbm5lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkg
Z3JvdXAgdGhhdCBhY3RzIGFzIGEgYmFubmVyLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0g
IkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJj
b21wbGVtZW50YXJ5IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMg
YSByZWdpb24gb2YgY29tcGxlbWVudGFyeSBpbmZvcm1hdGlvbi4iKTsgICAgCisgICAgaWYgKGFy
aWFUeXBlID09ICJBUklBTGFuZG1hcmtDb250ZW50SW5mbyIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImNvbnRlbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFp
bnMgY29udGVudC4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtNYWlu
IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibWFpbiIsICJBbiBBUklBIGFjY2Vzc2liaWxp
dHkgZ3JvdXAgdGhhdCBpcyB0aGUgbWFpbiBwb3J0aW9uIG9mIHRoZSB3ZWJzaXRlLiIpOyAgICAK
KyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya05hdmlnYXRpb24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJuYXZpZ2F0aW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91
cCB0aGF0IGNvbnRhaW5zIHRoZSBtYWluIG5hdmlnYXRpb24gZWxlbWVudHMgb2YgYSB3ZWJzaXRl
LiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya1NlYXJjaCIpCisgICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoInNlYXJjaCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3Jv
dXAgdGhhdCBjb250YWlucyBhIHNlYXJjaCBmZWF0dXJlIG9mIGEgd2Vic2l0ZS4iKTsgICAgCisg
ICAgaWYgKGFyaWFUeXBlID09ICJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJ0b29sdGlwIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0
aGF0IGFjdHMgYXMgYSB0b29sdGlwLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFU
YWJQYW5lbCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRhYiBwYW5lbCIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyB0aGUgY29udGVudCBvZiBhIHRhYi4i
KTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudE1hdGgiKQorICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJtYXRoIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNv
bnRhaW5zIG1hdGhlbWF0aWNhbCBzeW1ib2xzLiIpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KyNlbmRpZgorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEJ1dHRvbkFjdGlvblZl
cmIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInByZXNzIiwgIlZlcmIgc3RhdGluZyB0aGUg
YWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgYnV0dG9uIGlzIHByZXNzZWQsIGFzIHVzZWQg
YnkgYWNjZXNzaWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpB
WFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpIAoreworICAgIHJldHVybiBVSV9TVFJJTkcoInNlbGVj
dCIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHJhZGlv
IGJ1dHRvbiBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJhY3RpdmF0ZSIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0
aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHRleHQgZmllbGQgaXMgc2VsZWN0ZWQsIGFzIHVzZWQgYnkg
YWNjZXNzaWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWENo
ZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInVuY2hl
Y2siLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBjaGVj
a2VkIGNoZWNrYm94IGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9u
VmVyYigpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiY2hlY2siLCAiVmVyYiBzdGF0aW5nIHRo
ZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYW4gdW5jaGVja2VkIGNoZWNrYm94IGlzIGNs
aWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gInNlbGVjdCI7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuICJzZWxlY3QiOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpBWExpbmtBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJqdW1wIiwg
IlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgbGluayBpcyBj
bGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWdp
biBpcyBtaXNzaW5nIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNo
ZWRQbHVnaW5UZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQbHVnLWluIEZhaWx1cmUi
LCAiTGFiZWwgdGV4dCB0byBiZSB1c2VkIGlmIHBsdWdpbiBob3N0IHByb2Nlc3MgaGFzIGNyYXNo
ZWQiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bXVsdGlwbGVGaWxlVXBs
b2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQoreworICAgIHJldHVybiBmb3JtYXRMb2Nh
bGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUg
bnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFs
bG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6dW5rbm93bkZpbGVTaXplVGV4dCgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiVW5rbm93biIsICJVbmtub3duIGZpbGVzaXplIEZUUCBkaXJlY3RvcnkgbGlzdGlu
ZyBpdGVtIik7Cit9CisKKyNpZiBQTEFURk9STShXSU4pCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnVwbG9hZEZpbGVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAidXBsb2FkIjsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
RmlsZXNUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiYWxsIGZp
bGVzIjsKK30KKworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJdGVtNTEyKCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCI1MTIgKExvdyBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVw
IG1lbnUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuTWVudUl0
ZW0xMDI0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCIxMDI0IChNZWRpdW0gR3JhZGUpIiwg
Ik1lbnUgaXRlbSB0aXRsZSBmb3IgS0VZR0VOIHBvcC11cCBtZW51Iik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJdGVtMjA0OCgpCit7CisgICAgcmV0dXJu
IFVJX1NUUklORygiMjA0OCAoSGlnaCBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlH
RU4gcG9wLXVwIG1lbnUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5
Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBXVEY6OlN0cmluZyYgaG9zdCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJLZXkgZnJvbSA8aG9zdG5hbWU+IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5
IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLnJlcGxhY2UoIjxob3N0bmFtZT4iLCBob3N0
KTsKK30KKworI2VuZGlmCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmltYWdlVGl0
bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgZm9ybWF0IHRoZSBudW1iZXJzIGNvcnJlY3RseS4gSW4gTWFj
IFdlYktpdCwgd2UgdXNlZCArW05TTnVtYmVyRm9ybWF0dGVyIGxvY2FsaXplZFN0cmluZ0Zyb21O
dW1iZXI6bnVtYmVyU3R5bGU6XS4KKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJ
X1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBzdWZmaXgg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBm
aWxlbmFtZSk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVu
dExvYWRpbmdTdGF0ZVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkxvYWRpbmcuLi4i
LCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHRoZSBtZWRpYSBpcyBsb2Fk
aW5nIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExp
dmVCcm9hZGNhc3RTdGF0ZVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkxpdmUgQnJv
YWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB3YXRjaGluZyBh
IGxpdmUgYnJvYWRjYXN0Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omxv
Y2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiVmlk
ZW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidmlkZW8gZWxlbWVudCBjb250
cm9sbGVyIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdmlkZW8gZWxlbWVu
dCBjb250cm9sbGVyIik7CisgICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJtdXRlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBm
b3IgbXV0ZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygidW5tdXRlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlw
dGlvbiBmb3IgdHVybiBtdXRlIG9mZiBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiUGxheUJ1
dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInBsYXkiLCAiYWNjZXNzaWJpbGl0eSBy
b2xlIGRlc2NyaXB0aW9uIGZvciBwbGF5IGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJQYXVz
ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInBhdXNlIiwgImFjY2Vzc2liaWxp
dHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcGF1c2UgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0g
IlNsaWRlciIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1vdmllIHRpbWUiLCAiYWNjZXNz
aWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lbGluZSBzbGlkZXIiKTsKKyAgICBpZiAo
bmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0aW1lbGlu
ZSBzbGlkZXIgdGh1bWIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1l
bGluZSB0aHVtYiIpOworICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJiYWNrIDMwIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRl
c2NyaXB0aW9uIGZvciBzZWVrIGJhY2sgMzAgc2Vjb25kcyBidXR0b24iKTsKKyAgICBpZiAobmFt
ZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
InJldHVybiB0byByZWFsdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IHJldHVybiB0byByZWFsIHRpbWUgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRU
aW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImVsYXBzZWQgdGltZSIsICJh
Y2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGVsYXBzZWQgdGltZSBkaXNwbGF5Iik7
CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygicmVtYWluaW5nIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciB0aW1lIHJlbWFpbmluZyBkaXNwbGF5Iik7CisgICAgaWYgKG5hbWUgPT0gIlN0YXR1
c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzdGF0dXMiLCAiYWNjZXNzaWJp
bGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBtb3ZpZSBzdGF0dXMiKTsKKyAgICBpZiAobmFtZSA9
PSAiRnVsbHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImZ1bGxzY3Jl
ZW4iLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBlbnRlciBmdWxsc2NyZWVu
IGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCisgICAgICAg
IHJldHVybiBVSV9TVFJJTkcoImZhc3QgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVz
Y3JpcHRpb24gZm9yIGZhc3QgZm9yd2FyZCBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vl
a0JhY2tCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJmYXN0IHJldmVyc2UiLCAi
YWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBmYXN0IHJldmVyc2UgYnV0dG9uIik7
CisgICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoInNob3cgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgcm9s
ZSBkZXNjcmlwdGlvbiBmb3Igc2hvdyBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7CisgICAgaWYg
KG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImhpZGUgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlw
dGlvbiBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7CisKKyAgICAvLyBGSVhNRTog
dGhlIENvbnRyb2xzUGFuZWwgY29udGFpbmVyIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGluIHRo
ZSBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4KKyAgICBpZiAobmFtZSA9PSAiQ29udHJvbHNQYW5l
bCIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFt
ZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygiYXVkaW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3Bs
YXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNv
bnRyb2xsZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKKyAgICAgICAgcmV0
dXJuIFVJX1NUUklORygidmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVz
IGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB2aWRlbyBlbGVt
ZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCisgICAgICAg
IHJldHVybiBVSV9TVFJJTkcoIm11dGUgYXVkaW8gdHJhY2tzIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBtdXRlIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0b24i
KQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bm11dGUgYXVkaW8gdHJhY2tzIiwgImFjY2Vz
c2liaWxpdHkgaGVscCB0ZXh0IGZvciB1biBtdXRlIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09
ICJQbGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYmVnaW4gcGxheWJhY2si
LCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBsYXkgYnV0dG9uIik7CisgICAgaWYgKG5h
bWUgPT0gIlBhdXNlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygicGF1c2UgcGxh
eWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBhdXNlIGJ1dHRvbiIpOworICAg
IGlmIChuYW1lID09ICJTbGlkZXIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0
aW1lIHNjcnViYmVyIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB0aW1lbGluZSBzbGlk
ZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIHRodW1iIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0
ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIgdGh1bWIiKTsKKyAgICBpZiAobmFtZSA9PSAiUmV3aW5k
QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2VlayBtb3ZpZSBiYWNrIDMwIHNl
Y29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGp1bXAgYmFjayAzMCBzZWNvbmRz
IGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uIikKKyAg
ICAgICAgcmV0dXJuIFVJX1NUUklORygicmV0dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRp
bWUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJldHVybiBzdHJlYW1pbmcgbW92aWUg
dG8gcmVhbCB0aW1lIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3Bs
YXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJjdXJyZW50IG1vdmllIHRpbWUgaW4gc2Vj
b25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXki
KTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiKQorICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJudW1iZXIgb2Ygc2Vjb25kcyBvZiBtb3ZpZSByZW1haW5pbmciLCAiYWNj
ZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJlbWFpbmluZyB0aW1lIGRpc3BsYXkiKTsKKyAgICBp
ZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImN1
cnJlbnQgbW92aWUgc3RhdHVzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtb3ZpZSBz
dGF0dXMgZGlzcGxheSIpOworICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCisgICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsgcXVpY2tseSBiYWNrIiwgImFjY2Vzc2liaWxpdHkg
aGVscCB0ZXh0IGZvciBmYXN0IHJld2luZCBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vl
a0ZvcndhcmRCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWVrIHF1aWNrbHkg
Zm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZmFzdCBmb3J3YXJkIGJ1dHRv
biIpOworICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygiUGxheSBtb3ZpZSBpbiBmdWxsc2NyZWVuIG1vZGUiLCAiYWNjZXNzaWJpbGl0
eSBoZWxwIHRleHQgZm9yIGVudGVyIGZ1bGxzY3JlZW4gYnV0dG9uIik7CisgICAgaWYgKG5hbWUg
PT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
InN0YXJ0IGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0
ZXh0IGZvciBzaG93IGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAi
SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic3Rv
cCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBm
b3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCit7CisgICAg
aWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiaW5kZWZpbml0
ZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBhbiBpbmRlZmluaXRlIG1lZGlh
IGNvbnRyb2xsZXIgdGltZSB2YWx1ZSIpOworCisgICAgaW50IHNlY29uZHMgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGZhYnNmKHRpbWUpKTsgCisgICAgaW50IGRheXMgPSBzZWNvbmRzIC8gKDYwICogNjAg
KiAyNCk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQgbWlu
dXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAgIGlm
IChkYXlzKQorICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygi
JTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nlc3Np
YmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDEgZGF5
IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICBpZiAoaG91cnMpCisgICAg
ICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlMSRkIGhvdXJzICUy
JGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1l
ZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVz
LCBzZWNvbmRzKTsKKyAgICBpZiAobWludXRlcykKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhVSV9TVFJJTkcoIiUxJGQgbWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNz
aWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBz
ZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoVUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygidmFsdWUgbWlzc2luZyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHJlcXVpcmVkIGZvcm0gY29udHJvbCBlbGVtZW50cyB0
aGF0IGhhdmUgbm8gdmFsdWUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJ0eXBlIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBj
b250cm9scyB3aXRoIGEgdmFsdWUgbm90IG1hdGNoaW5nIHR5cGUiKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJwYXR0ZXJuIG1pc21hdGNoIiwgIlZhbGlkYXRp
b24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyByZXF1aXJpbmcgYSBjb25zdHJhaW5l
ZCB2YWx1ZSBhY2NvcmRpbmcgdG8gcGF0dGVybiIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJ0b28gbG9uZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJv
bCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0
aCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2Fn
ZVJhbmdlVW5kZXJmbG93VGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygicmFuZ2UgdW5k
ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRo
IHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoInJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQg
bWF4aW11bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9u
TWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInN0ZXAg
bWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdp
dGggdmFsdWUgbm90IHJlc3BlY3RpbmcgdGhlIHN0ZXAgYXR0cmlidXRlIik7Cit9CisKKy8vIFZp
c2l0ZWRMaW5rU3RyYXRlZ3kKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNp
dGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGxpbmtIYXNoKQoreworICAgIHJldHVybiBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5pc0xpbmtWaXNpdGVkKGxpbmtIYXNoKTsKK30KKwordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmFkZFZpc2l0ZWRMaW5rKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGxpbmtI
YXNoKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZFZpc2l0ZWRMaW5rKGxpbmtIYXNo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUExBVEZPUk1f
U1RSQVRFR0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcAkocmV2aXNpb24gODIzNTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxOSArMjQsMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5LmgiCiAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAot
I2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKLSNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00NCw5ICszOCw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gV2UgY2FuJ3Qg
dXNlIFN0cmluZzo6Zm9ybWF0IGZvciB0d28gcmVhc29uczoKIC8vICAxKSBJdCBkb2Vzbid0IGhh
bmRsZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZy4KQEAgLTc1LDEy
MSArNjcsNDggQEAgc3RhdGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaQogI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJh
dGVnaWVzLCAoKSk7Ci0gICAgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKCZwbGF0Zm9ybVN0cmF0ZWdp
ZXMpOwotfQotCi1XZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcygp
Ci0gICAgOiBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQoZmFsc2UpCi0gICAgLCBtX3Nob3VsZFJl
ZnJlc2hQbHVnaW5zKGZhbHNlKQotewotfQotCi1Db29raWVzU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsK
LX0KLQotUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGx1Z2lu
U3RyYXRlZ3koKQotewotICAgIHJldHVybiB0aGlzOwotfQotCi1Mb2NhbGl6YXRpb25TdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpCi17
Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCi17Ci0gICAgcmV0dXJuIHRo
aXM7Ci19Ci0KLS8vIENvb2tpZXNTdHJhdGVneQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bm90aWZ5Q29va2llc0NoYW5nZWQoKQotewotICAgIFdlYkNvb2tpZU1hbmFnZXI6OnNoYXJl
ZCgpLmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpOwotfQotCi0vLyBQbHVnaW5TdHJhdGVneQot
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCi17Ci0g
ICAgaWYgKG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKG1fY2FjaGVkUGx1Z2lucy5pc0VtcHR5KCkpOwotICAgIAotICAgIFZlY3RvcjxQbHVn
aW5JbmZvPiBwbHVnaW5zOwotICAgIAotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZG8gc29tZXRo
aW5nIGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5zKG1fc2hv
dWxkUmVmcmVzaFBsdWdpbnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnM6OlJlcGx5KHBsdWdp
bnMpLCAwKTsKLQotICAgIG1fY2FjaGVkUGx1Z2lucy5zd2FwKHBsdWdpbnMpOwotICAgIAotICAg
IG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKLSAgICBtX3BsdWdpbkNhY2hlSXNQb3B1
bGF0ZWQgPSB0cnVlOwotfQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBs
dWdpbnMoKQotewotICAgIG1fY2FjaGVkUGx1Z2lucy5jbGVhcigpOwotICAgIG1fcGx1Z2luQ2Fj
aGVJc1BvcHVsYXRlZCA9IGZhbHNlOwotICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSB0cnVl
OwotCi0gICAgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOwotfQotCi12b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zKQorRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3koKQogewotICAgIHBvcHVsYXRlUGx1Z2luQ2FjaGUo
KTsKLSAgICBwbHVnaW5zID0gbV9jYWNoZWRQbHVnaW5zOwogfQogCi0vLyBMb2NhbGl6YXRpb25T
dHJhdGVneSAgICAKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVtZW50
QWx0VGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjppbnB1dEVsZW1l
bnRBbHRUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HX0tFWSgiU3VibWl0IiwgIlN1Ym1p
dCAoaW5wdXQgZWxlbWVudCkiLCAiYWx0IHRleHQgZm9yIDxpbnB1dD4gZWxlbWVudHMgd2l0aCBu
byBhbHQsIHRpdGxlLCBvciB2YWx1ZSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5OjpyZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygiUmVzZXQiLCAiZGVmYXVsdCBsYWJlbCBmb3IgUmVzZXQgYnV0dG9ucyBpbiBmb3JtcyBv
biB3ZWIgcGFnZXMiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNo
YWJsZUluZGV4SW50cm9kdWN0aW9uKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OnNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklO
RygiVGhpcyBpcyBhIHNlYXJjaGFibGUgaW5kZXguIEVudGVyIHNlYXJjaCBrZXl3b3JkczogIiwK
ICAgICAgICAgInRleHQgdGhhdCBhcHBlYXJzIGF0IHRoZSBzdGFydCBvZiBuZWFybHktb2Jzb2xl
dGUgd2ViIHBhZ2VzIGluIHRoZSBmb3JtIG9mIGEgJ3NlYXJjaGFibGUgaW5kZXgnIik7CiB9CiAK
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgp
CitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzdWJtaXRCdXR0b25EZWZhdWx0
TGFiZWwoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVs
IGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCitTdHJp
bmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVs
KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJDaG9vc2UgRmlsZSIsICJ0aXRsZSBmb3IgZmls
ZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKK1N0cmluZyBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKIHsK
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJubyBmaWxlIHNlbGVjdGVkIiwgInRleHQgdG8gZGlzcGxh
eSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBmaWxlIGlzIHNlbGVj
dGVkIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHREZXRhaWxz
U3VtbWFyeVRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6ZGVmYXVs
dERldGFpbHNTdW1tYXJ5VGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiRGV0YWlscyIs
ICJ0ZXh0IHRvIGRpc3BsYXkgaW4gPGRldGFpbHM+IHRhZyB3aGVuIGl0IGhhcyBubyA8c3VtbWFy
eT4gY2hpbGQiKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKQorU3RyaW5nIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6Y29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpCiB7CiAgICAgcmV0
dXJuIFVJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7CiB9CkBAIC0xOTcs
MTQ4ICsxMTYsMTQ4IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvcHlJbWFnZVUK
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKK1N0cmluZyBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdX
aW5kb3coKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gTGluayBpbiBOZXcgV2luZG93
IiwgIk9wZW4gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rp
c2soKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJEb3dubG9h
ZCBMaW5rZWQgRmlsZSIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1lbnUgaXRlbSIp
OwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdD
b3B5TGlua1RvQ2xpcGJvYXJkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQogewogICAgIHJldHVybiBV
SV9TVFJJTkcoIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3Blbklt
YWdlSW5OZXdXaW5kb3coKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29u
dGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIk9wZW4gSW1hZ2UgaW4gTmV3IFdpbmRvdyIsICJPcGVuIEltYWdlIGluIE5ldyBXaW5k
b3cgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpCitTdHJpbmcgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9E
aXNrKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJEb3dubG9hZCBJbWFnZSIsICJEb3dubG9h
ZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VU
b0NsaXBib2FyZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBJbWFnZSIsICJDb3B5
IEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKICNpZiBQTEFURk9STShRVCkKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRv
Q2xpcGJvYXJkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJDb3B5IEltYWdlIEFkZHJlc3MiLCAiQ29weSBJbWFnZSBBZGRyZXNzIG1lbnUgaXRlbSIp
OwogfQogI2VuZGlmCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCkKIHsKICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBWaWRl
byBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkK
K1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ09w
ZW5BdWRpb0luTmV3V2luZG93KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEF1ZGlv
IGluIE5ldyBXaW5kb3ciLCAiT3BlbiBBdWRpbyBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBp
dGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKQog
ewogICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkgVmlkZW8gQWRkcmVzcyIsICJDb3B5IFZpZGVv
IEFkZHJlc3MgTG9jYXRpb24gY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJv
YXJkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRl
bVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygi
Q29weSBBdWRpbyBBZGRyZXNzIiwgIkNvcHkgQXVkaW8gQWRkcmVzcyBMb2NhdGlvbiBjb250ZXh0
IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQogewog
ICAgIHJldHVybiBVSV9TVFJJTkcoIkNvbnRyb2xzIiwgIk1lZGlhIENvbnRyb2xzIGNvbnRleHQg
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKQogewogICAgIHJldHVy
biBVSV9TVFJJTkcoIkxvb3AiLCAiTWVkaWEgTG9vcCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQog
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdFbnRlclZp
ZGVvRnVsbHNjcmVlbigpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250
ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygiRW50ZXIgRnVsbHNjcmVlbiIsICJWaWRlbyBFbnRlciBGdWxsc2NyZWVuIGNvbnRleHQg
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ01lZGlhUGxheSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
Ojpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
IlBsYXkiLCAiTWVkaWEgUGxheSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1
c2UoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlBhdXNlIiwgIk1lZGlhIFBhdXNlIGNvbnRl
eHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKQogewogICAgIHJldHVybiBVSV9TVFJJ
TkcoIk11dGUiLCAiTWVkaWEgTXV0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dp
bmRvdygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiT3Bl
biBGcmFtZSBpbiBOZXcgV2luZG93IiwgIk9wZW4gRnJhbWUgaW4gTmV3IFdpbmRvdyBjb250ZXh0
IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdDb3B5KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNv
bnRleHRNZW51SXRlbVRhZ0NvcHkoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkiLCAi
Q29weSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkKIHsKICAgICByZXR1cm4gVUlf
U1RSSU5HKCJCYWNrIiwgIkJhY2sgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2Fy
ZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiRm9yd2FyZCIsICJGb3J3YXJkIGNvbnRleHQg
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1N0b3AoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29u
dGV4dE1lbnVJdGVtVGFnU3RvcCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3RvcCIsICJT
dG9wIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIlJlbG9hZCIsICJSZWxvYWQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygiQ3V0IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQog
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgp
CitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdQ
YXN0ZSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiUGFzdGUiLCAiUGFzdGUgY29udGV4dCBt
ZW51IGl0ZW0iKTsKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVsZXRlKCkKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZSgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gIkRlbGV0ZSI7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lucHV0TWV0aG9kcygpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhv
ZHMoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuICJJbnB1dCBNZXRob2Rz
IjsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
VW5pY29kZSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVu
dUl0ZW1UYWdVbmljb2RlKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAi
VW5pY29kZSI7CkBAIC0zNDgsNyArMjY3LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkK
K1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1Nl
bGVjdEFsbCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gIlNlbGVjdCBB
bGwiOwpAQCAtMzU2LDI3ICsyNzUsMjcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbgogCiAjZW5kaWYKIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQogewogICAgIHJl
dHVybiBVSV9TVFJJTkcoIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3NlcyBGb3VuZCBjb250
ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7CiAgICAgcmV0
dXJuIFVJX1NUUklORygiSWdub3JlIFNwZWxsaW5nIiwgIklnbm9yZSBTcGVsbGluZyBjb250ZXh0
IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQogewogICAgIHJldHVybiBV
SV9TVFJJTkcoIkxlYXJuIFNwZWxsaW5nIiwgIkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBp
dGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ1NlYXJjaFdlYigpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250
ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlNlYXJj
aCBpbiBHb29nbGUiLCAiU2VhcmNoIGluIEdvb2dsZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQog
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKK1N0cmluZyBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogI2lmIGRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgcmV0dXJuIFVJX1NUUklORygiTG9vayBVcCBpbiBE
aWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSBjb250ZXh0IG1lbnUgaXRlbSIpOwpA
QCAtMzg1LDE5MyArMzA0LDE5MyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVuCiAjZW5kaWYKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
Ik9wZW4gTGluayIsICJPcGVuIExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigp
CitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdJ
Z25vcmVHcmFtbWFyKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJJZ25vcmUgR3JhbW1hciIs
ICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQorU3RyaW5n
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdN
ZW51KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTcGVsbGluZyBhbmQgR3JhbW1hciIsICJT
cGVsbGluZyBhbmQgR3JhbW1hciBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFu
ZWwoYm9vbCBzaG93KQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4
dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KQogewogICAgIGlmIChzaG93
KQogICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFNwZWxsaW5nIGFuZCBHcmFtbWFyIiwg
Im1lbnUgaXRlbSB0aXRsZSIpOwogICAgIHJldHVybiBVSV9TVFJJTkcoIkhpZGUgU3BlbGxpbmcg
YW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKQorU3RyaW5nIERl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
ZygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgRG9jdW1lbnQgTm93IiwgIkNoZWNr
IHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCitT
dHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmcoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkNoZWNrIFNw
ZWxsaW5nIFdoaWxlIFR5cGluZyIsICJDaGVjayBzcGVsbGluZyB3aGlsZSB0eXBpbmcgY29udGV4
dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVs
bGluZygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxs
aW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdGb250TWVudSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiRm9udCIsICJGb250IGNv
bnRleHQgc3ViLW1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
IkJvbGQiLCAiQm9sZCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKIHsKICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVy
bGluZSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdVbmRlcmxpbmUoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlVuZGVybGluZSIsICJV
bmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCitTdHJpbmcgRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkKIHsKICAgICByZXR1
cm4gVUlfU1RSSU5HKCJPdXRsaW5lIiwgIk91dGxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnV3JpdGlu
Z0RpcmVjdGlvbk1lbnUoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29u
dGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRpcmVjdGlvbiBjb250ZXh0
IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQogewog
ICAgIHJldHVybiBVSV9TVFJJTkcoIlNlbGVjdGlvbiBEaXJlY3Rpb24iLCAiU2VsZWN0aW9uIGRp
cmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGly
ZWN0aW9uKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJEZWZhdWx0IiwgIkRlZmF1bHQgd3Jp
dGluZyBkaXJlY3Rpb24gY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKQorU3RyaW5nIERl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQo
KQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdo
dCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCiB7CiAgICAgcmV0
dXJuIFVJX1NUUklORygiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0IGNvbnRleHQgbWVu
dSBpdGVtIik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3Bv
dGxpZ2h0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWFyY2ggaW4gU3BvdGxpZ2h0Iiwg
IlNlYXJjaCBpbiBTcG90bGlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250
cygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBGb250cyIsICJTaG93IGZvbnRzIGNv
bnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1N0eWxlcygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
IlN0eWxlcy4uLiIsICJTdHlsZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpCitTdHJp
bmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29s
b3JzKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IENvbG9ycyIsICJTaG93IGNvbG9y
cyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKQogewogICAgIHJldHVy
biBVSV9TVFJJTkcoIlNwZWVjaCIsICJTcGVlY2ggY29udGV4dCBzdWItbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0
U3BlYWtpbmcoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1l
bnVJdGVtVGFnU3RhcnRTcGVha2luZygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3RhcnQg
U3BlYWtpbmciLCAiU3RhcnQgc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5n
KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRh
Z1N0b3BTcGVha2luZygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3RvcCBTcGVha2luZyIs
ICJTdG9wIHNwZWFraW5nIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRp
Y2FsbHkoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IiwgIkNvcnJlY3QgU3BlbGxpbmcg
QXV0b21hdGljYWxseSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpCitTdHJp
bmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0
dXRpb25zTWVudSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3Vic3RpdHV0aW9ucyIsICJT
dWJzdGl0dXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29s
IHNob3cpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29sIHNob3cpCiB7CiAgICAgaWYgKHNob3cpIAogICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRp
dGxlIik7CiAgICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTdWJzdGl0dXRpb25zIiwgIm1lbnUg
aXRlbSB0aXRsZSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCiB7CiAgICAgcmV0dXJu
IFVJX1NUUklORygiU21hcnQgQ29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQg
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJTbWFydCBRdW90ZXMiLCAiU21hcnQgUXVvdGVzIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
RGFzaGVzKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0RGFzaGVzKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBEYXNo
ZXMiLCAiU21hcnQgRGFzaGVzIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKQorU3RyaW5n
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5r
cygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgTGlua3MiLCAiU21hcnQgTGlua3Mg
Y29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxp
emF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygiVGV4dCBSZXBsYWNlbWVudCIsICJUZXh0IFJlcGxhY2VtZW50
IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVu
dSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiVHJhbnNmb3JtYXRpb25zIiwgIlRyYW5zZm9y
bWF0aW9ucyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNl
KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtlIFVwcGVyIENhc2UiLCAiTWFrZSBVcHBl
ciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpCiB7
CiAgICAgcmV0dXJuIFVJX1NUUklORygiTWFrZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIgQ2Fz
ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKQogewogICAgIHJldHVy
biBVSV9TVFJJTkcoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1lbnUgaXRlbSIp
OwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdD
aGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCitTdHJpbmcgRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gcmVwbGFjZWRTdHJpbmc7CkBAIC01NzksNjUgKzQ5OCw2NSBAQCBTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVuCiAKICNlbmRpZgogCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVu
dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiSW5zcGVjdCBFbGVtZW50IiwgIkluc3BlY3Qg
RWxlbWVudCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVOb1Jl
Y2VudFNlYXJjaGVzVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpz
ZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
Ik5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJlbCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBh
cHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBz
ZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVkIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygiUmVjZW50IFNlYXJjaGVzIiwgImxhYmVsIGZvciBmaXJzdCBp
dGVtIGluIHRoZSBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2gg
ZmllbGQgaW1hZ2UsIHVzZWQgYXMgZW1iZWRkZWQgbWVudSB0aXRsZSIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQo
KQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2VhcmNoTWVudUNsZWFyUmVj
ZW50U2VhcmNoZXNUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJDbGVhciBSZWNlbnQg
U2VhcmNoZXMiLCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGll
cyBtZW51J3MgY29udGVudHMiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhXZWJBcmVhVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWFdl
YkFyZWFUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJIVE1MIGNvbnRlbnQiLCAiYWNj
ZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB3ZWIgYXJlYSIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtUZXh0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxp
emF0aW9uU3RyYXRlZ3k6OkFYTGlua1RleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoImxp
bmsiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBsaW5rIik7CiB9CiAKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlzdE1hcmtlclRleHQoKQorU3RyaW5nIERl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6QVhMaXN0TWFya2VyVGV4dCgpCiB7CiAgICAgcmV0
dXJuIFVJX1NUUklORygibGlzdCBtYXJrZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBsaXN0IG1hcmtlciIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWEltYWdlTWFwVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpB
WEltYWdlTWFwVGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiaW1hZ2UgbWFwIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaW1hZ2UgbWFwIik7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSGVhZGluZ1RleHQoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6QVhIZWFkaW5nVGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygiaGVhZGluZyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGhlYWRp
bmdzIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxp
c3RUZXJtVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWERlZmlu
aXRpb25MaXN0VGVybVRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoInRlcm0iLCAidGVy
bSB3b3JkIG9mIGEgZGVmaW5pdGlvbiIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQorU3RyaW5nIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCkKIHsKICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJkZWZpbml0aW9uIiwgImRlZmluaXRpb24gcGhyYXNlIik7CiB9
CiAKICNpZiBQTEFURk9STShNQUMpCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEFS
SUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmluZyYgYXJpYVR5cGUpCitTdHJpbmcgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmlu
ZyYgYXJpYVR5cGUpCiB7CiAgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25BbGVy
dCIpCiAgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFsZXJ0IiwgIkFuIEFSSUEgYWNjZXNzaWJp
bGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYWxlcnQuIik7CkBAIC02ODUsNzcgKzYwNCw3NyBA
QCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEFSSUFDb250CiB9CiAjZW5kaWYKIAot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhCdXR0b25BY3Rpb25WZXJiKCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYQnV0dG9uQWN0aW9uVmVyYigpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygicHJlc3MiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhh
dCB3aWxsIG9jY3VyIHdoZW4gYSBidXR0b24gaXMgcHJlc3NlZCwgYXMgdXNlZCBieSBhY2Nlc3Np
YmlsaXR5Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYUmFkaW9CdXR0
b25BY3Rpb25WZXJiKCkgCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWFJh
ZGlvQnV0dG9uQWN0aW9uVmVyYigpIAogewogICAgIHJldHVybiBVSV9TVFJJTkcoInNlbGVjdCIs
ICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHJhZGlvIGJ1
dHRvbiBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygiYWN0aXZhdGUiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24g
dGhhdCB3aWxsIG9jY3VyIHdoZW4gYSB0ZXh0IGZpZWxkIGlzIHNlbGVjdGVkLCBhcyB1c2VkIGJ5
IGFjY2Vzc2liaWxpdHkiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhD
aGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OkFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygidW5jaGVjayIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIg
d2hlbiBhIGNoZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmls
aXR5Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYVW5jaGVja2VkQ2hl
Y2tCb3hBY3Rpb25WZXJiKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFY
VW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJj
aGVjayIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhbiB1
bmNoZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RBY3Rpb25WZXJi
KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYTWVudUxpc3RBY3Rpb25W
ZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAic2VsZWN0IjsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVy
YigpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWE1lbnVMaXN0UG9wdXBB
Y3Rpb25WZXJiKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAic2VsZWN0
IjsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rQWN0aW9uVmVyYigp
CitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWExpbmtBY3Rpb25WZXJiKCkK
IHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJqdW1wIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9u
IHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgbGluayBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vz
c2liaWxpdHkiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1Bs
dWdpblRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6bWlzc2luZ1Bs
dWdpblRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIk1pc3NpbmcgUGx1Zy1pbiIsICJM
YWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWdpbiBpcyBtaXNzaW5nIik7CiB9CiAKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNoZWRQbHVnaW5UZXh0KCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNyYXNoZWRQbHVnaW5UZXh0KCkKIHsKICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJQbHVnLWluIEZhaWx1cmUiLCAiTGFiZWwgdGV4dCB0byBiZSB1c2Vk
IGlmIHBsdWdpbiBob3N0IHByb2Nlc3MgaGFzIGNyYXNoZWQiKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJP
ZkZpbGVzKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6bXVsdGlwbGVGaWxl
VXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewogICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0
aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0
IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6dW5rbm93bkZpbGVTaXplVGV4dCgpCitTdHJpbmcgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5Ojp1bmtub3duRmlsZVNpemVUZXh0KCkKIHsKICAgICByZXR1
cm4gVUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25vd24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBs
aXN0aW5nIGl0ZW0iKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6dXBsb2FkRmlsZVRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6dXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuICJ1cGxvYWQiOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjph
bGxGaWxlc1RleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6YWxsRmls
ZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAiYWxsIGZpbGVz
IjsKQEAgLTc2NSw0NSArNjg0LDQ1IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFs
bEZpbGVzVGUKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6a2V5Z2VuTWVudUl0ZW01MTIoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6a2V5Z2VuTWVudUl0ZW01MTIoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIjUxMiAo
TG93IEdyYWRlKSIsICJNZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSIpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjprZXlnZW5NZW51SXRlbTEwMjQoKQor
U3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6a2V5Z2VuTWVudUl0ZW0xMDI0KCkK
IHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCIxMDI0IChNZWRpdW0gR3JhZGUpIiwgIk1lbnUgaXRl
bSB0aXRsZSBmb3IgS0VZR0VOIHBvcC11cCBtZW51Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJdGVtMjA0OCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5OjprZXlnZW5NZW51SXRlbTIwNDgoKQogewogICAgIHJldHVybiBVSV9TVFJJ
TkcoIjIwNDggKEhpZ2ggR3JhZGUpIiwgIk1lbnUgaXRlbSB0aXRsZSBmb3IgS0VZR0VOIHBvcC11
cCBtZW51Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbktleWNo
YWluSXRlbU5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QpCitTdHJpbmcgRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5OjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9z
dCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJLZXkgZnJvbSA8aG9zdG5hbWU+IiwgIk5hbWUg
b2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLnJlcGxhY2UoIjxo
b3N0bmFtZT4iLCBob3N0KTsKIH0KIAogI2VuZGlmCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmltYWdlVGl0bGUoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgZm9ybWF0IHRoZSBudW1iZXJzIGNvcnJlY3RseS4gSW4gTWFjIFdlYktp
dCwgd2UgdXNlZCArW05TTnVtYmVyRm9ybWF0dGVyIGxvY2FsaXplZFN0cmluZ0Zyb21OdW1iZXI6
bnVtYmVyU3R5bGU6XS4KICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklO
RygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBzdWZmaXggZm9yIGEg
c3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFt
ZSk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExvYWRp
bmdTdGF0ZVRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6bWVkaWFF
bGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTG9hZGlu
Zy4uLiIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBtZXNzYWdlIHdoZW4gdGhlIG1lZGlhIGlz
IGxvYWRpbmciKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVt
ZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCkKIHsKICAgICByZXR1
cm4gVUlfU1RSSU5HKCJMaXZlIEJyb2FkY2FzdCIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBt
ZXNzYWdlIHdoZW4gd2F0Y2hpbmcgYSBsaXZlIGJyb2FkY2FzdCIpOwogfQogCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNv
bnN0IFN0cmluZyYgbmFtZSkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6Omxv
Y2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQogICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKQEAgLTg1MCw3ICs3NjksNyBAQCBT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNv
bnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikK
ICAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYXVkaW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9s
cyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZv
ciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKQEAgLTg5Myw3ICs4MTIsNyBAQCBTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYVRpbWVEZXNj
cmlwdGlvbihmbG9hdCB0aW1lKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6
bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKIHsKICAgICBpZiAoIWlz
ZmluaXRlKHRpbWUpKQogICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJpbmRlZmluaXRlIHRpbWUi
LCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGFuIGluZGVmaW5pdGUgbWVkaWEgY29udHJv
bGxlciB0aW1lIHZhbHVlIik7CkBAIC05MTMsNTIgKzgzMiw0MSBAQCBTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNCiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhVSV9TVFJJTkcoIiUxJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Ig
bWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1p
c3NpbmdUZXh0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnZhbGlkYXRp
b25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygidmFs
dWUgbWlzc2luZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHJlcXVpcmVkIGZvcm0gY29udHJv
bCBlbGVtZW50cyB0aGF0IGhhdmUgbm8gdmFsdWUiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNo
VGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygidHlwZSBtaXNtYXRjaCIsICJWYWxpZGF0
aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCBhIHZhbHVlIG5vdCBtYXRj
aGluZyB0eXBlIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRp
b25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Ojp2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQogewogICAg
IHJldHVybiBVSV9TVFJJTkcoInBhdHRlcm4gbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHJlcXVpcmluZyBhIGNvbnN0cmFpbmVkIHZhbHVlIGFj
Y29yZGluZyB0byBwYXR0ZXJuIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCiB7CiAgICAgcmV0dXJu
IFVJX1NUUklORygidG9vIGxvbmciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRy
b2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIGxvbmdlciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5n
dGgiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZVVuZGVyZmxvd1RleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKQogewogICAgIHJldHVybiBV
SV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0
IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdl
T3ZlcmZsb3dUZXh0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnZhbGlk
YXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
InJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250
cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpOwogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRl
eHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6dmFsaWRhdGlvbk1lc3Nh
Z2VTdGVwTWlzbWF0Y2hUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJzdGVwIG1pc21h
dGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZh
bHVlIG5vdCByZXNwZWN0aW5nIHRoZSBzdGVwIGF0dHJpYnV0ZSIpOwogfQogCi0vLyBWaXNpdGVk
TGlua1N0cmF0ZWd5Ci1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQ
YWdlKiBwYWdlLCBMaW5rSGFzaCBsaW5rSGFzaCkKLXsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2hhcmVkKCkuaXNMaW5rVmlzaXRlZChsaW5rSGFzaCk7Ci19Ci0KLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBMaW5rSGFzaCBsaW5rSGFzaCkK
LXsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRWaXNpdGVkTGluayhsaW5rSGFzaCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaAkocmV2aXNpb24g
ODIzNTkpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6ODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIx
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKKyNkZWZp
bmUgV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVT
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luU3RyYXRl
Z3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXphdGlvblN0cmF0ZWd5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9WaXNpdGVkTGlua1N0cmF0ZWd5Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1T
dHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisgICAgCitwcml2YXRlOgorICAgIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llcygpOworICAgIAorICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRl
Z3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5T
dHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNy
ZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CisKKyAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5n
ZWQoKTsKKworICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5CisgICAgdmlydHVhbCB2b2lk
IHJlZnJlc2hQbHVnaW5zKCk7CisgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCisgICAgLy8g
V2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kgICAgCisgICAgdmlydHVhbCBTdHJpbmcgaW5w
dXRFbGVtZW50QWx0VGV4dCgpOworICAgIHZpcnR1YWwgU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVs
dExhYmVsKCk7CisgICAgdmlydHVhbCBTdHJpbmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9u
KCk7CisgICAgdmlydHVhbCBTdHJpbmcgc3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CisgICAg
dmlydHVhbCBTdHJpbmcgZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpOworICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCk7CisgICAgdmlydHVhbCBTdHJp
bmcgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCk7CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdPcGVuTGlua0luTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCk7CisjaWYgUExBVEZP
Uk0oUVQpCisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJs
VG9DbGlwYm9hcmQoKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ29weSgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dv
QmFjaygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdQYXN0ZSgpOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdEZWxldGUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdJbnB1dE1ldGhvZHMoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdVbmljb2RlKCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFU
KQorICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpOworI2Vu
ZGlmCisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQo
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3Qg
U3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnT3BlbkxpbmsoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJ
Z25vcmVHcmFtbWFyKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Bl
bGxpbmdNZW51KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1Nw
ZWxsaW5nUGFuZWwoYm9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDaGVja1NwZWxsaW5nKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7CisgICAgdmlydHVhbCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdCb2xkKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSXRhbGljKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJs
aW5lKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51
KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1l
bnUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0
aW9uKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQo
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpOwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hJblNwb3RsaWdodCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1Nob3dGb250cygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxl
cygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7CisgICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOworICAgIHZp
cnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZygpOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHko
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVu
dSgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRp
b25zKGJvb2wgc2hvdyk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21h
cnRDb3B5UGFzdGUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFy
dFF1b3RlcygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFz
aGVzKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01l
bnUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNl
KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcpOworI2VuZGlmCisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJvYXJkKCk7CisgICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCk7Cisg
ICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scygp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2Ny
ZWVuKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCk7
CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpOworI2VuZGlmIC8v
IEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1YWwgU3RyaW5nIHNlYXJjaE1lbnVOb1Jl
Y2VudFNlYXJjaGVzVGV4dCgpOworICAgIHZpcnR1YWwgU3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRT
ZWFyY2hlc1RleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRT
ZWFyY2hlc1RleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWFdlYkFyZWFUZXh0KCk7CisgICAg
dmlydHVhbCBTdHJpbmcgQVhMaW5rVGV4dCgpOworICAgIHZpcnR1YWwgU3RyaW5nIEFYTGlzdE1h
cmtlclRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWEltYWdlTWFwVGV4dCgpOworICAgIHZp
cnR1YWwgU3RyaW5nIEFYSGVhZGluZ1RleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWERlZmlu
aXRpb25MaXN0VGVybVRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWERlZmluaXRpb25MaXN0
RGVmaW5pdGlvblRleHQoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBTdHJpbmcg
QVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKTsKKyNlbmRpZgor
ICAgIHZpcnR1YWwgU3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgU3Ry
aW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhUZXh0
RmllbGRBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hB
Y3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlv
blZlcmIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOworICAg
IHZpcnR1YWwgU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgbWlzc2luZ1Bs
dWdpblRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpOworICAg
IHZpcnR1YWwgU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZG
aWxlcyk7CisgICAgdmlydHVhbCBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2aXJ0dWFsIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpOworICAgIHZp
cnR1YWwgU3RyaW5nIGFsbEZpbGVzVGV4dCgpOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZpcnR1YWwgU3RyaW5nIGtleWdlbk1lbnVJdGVtNTEyKCk7CisgICAgdmlydHVhbCBTdHJp
bmcga2V5Z2VuTWVudUl0ZW0xMDI0KCk7CisgICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuTWVudUl0
ZW0yMDQ4KCk7CisgICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25z
dCBTdHJpbmcmIGhvc3QpOworI2VuZGlmCisgICAgdmlydHVhbCBTdHJpbmcgaW1hZ2VUaXRsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCk7CisgICAgdmly
dHVhbCBTdHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpOworICAgIHZp
cnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhl
bHBUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlh
VGltZURlc2NyaXB0aW9uKGZsb2F0KTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVRvb0xvbmdUZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZVVuZGVyZmxvd1RleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCk7CisKKyAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUo
KTsKKworICAgIGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkOworICAgIGJvb2wgbV9zaG91
bGRSZWZyZXNoUGx1Z2luczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNo
ZWRQbHVnaW5zOworCisgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQorICAgIHZp
cnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFz
aCk7CisgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpMaW5rSGFzaCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorCisjZW5kaWYgLy8gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25T
dHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneS5oCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw0MCArMjMsMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCi0jZGVmaW5lIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llc19oCisjaWZuZGVmIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneV9oCisjZGVmaW5l
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneV9oCiAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRF
R0lFUykKIAotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0
cmF0ZWd5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgorI2luY2x1ZGUgIkxvY2FsaXph
dGlvblN0cmF0ZWd5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVz
cGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdl
YkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneSA6
IHB1YmxpYyBMb2NhbGl6YXRpb25TdHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpOwotICAgIAotcHJpdmF0ZToKLSAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMo
KTsKLSAgICAKLSAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5KiBjcmVhdGVMb2NhbGl6
YXRpb25TdHJhdGVneSgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwotCi0gICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0KLSAg
ICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQotICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1
Z2lucygpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBh
Z2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKyAgICBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3koKTsKIAotICAgIC8vIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5ICAg
IAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCk7CiAg
ICAgdmlydHVhbCBTdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKQEAgLTE5NywyMCArMTc4LDEw
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVu
ZGVyZmxvd1RleHQoKTsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdl
T3ZlcmZsb3dUZXh0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVw
TWlzbWF0Y2hUZXh0KCk7Ci0KLSAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsKLQotICAg
IGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkOwotICAgIGJvb2wgbV9zaG91bGRSZWZyZXNo
UGx1Z2luczsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVnaW5z
OwotCi0gICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCk7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCi0jZW5kaWYgLy8gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzX2gKKyNlbmRpZiAvLyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3lfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAJKHJldmlzaW9uIDgyMzU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5OSw0ICs2OTksMTEgQEAgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dAogCiAjZW5kaWYgLy8gVVNFKFBMQVRGT1JN
X1NUUkFURUdJRVMpCiAKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKQorU3Ry
aW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCit7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuaAkocmV2aXNpb24gODIzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6
ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw5ICsxOTQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0
KGNvbnN0IFN0cmluZyYgbWF4aW11bSk7CiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3Rl
cE1pc21hdGNoVGV4dChjb25zdCBTdHJpbmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgc3RlcCk7CiAK
LSNpZiBQTEFURk9STShNQUMpCisKKyNkZWZpbmUgVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRp
b24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCisjZGVmaW5lIFVJX1NUUklOR19L
RVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5
KQorCiAgICAgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpOwotI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDggQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogCisj
aW5jbHVkZSAiRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIFBsYXRmb3JtU3RyYXRlZ2llcyogc19wbGF0Zm9ybVN0cmF0ZWdpZXM7
CkBAIC01MSw3ICs1MywxMiBAQCB2b2lkIHNldFBsYXRmb3JtU3RyYXRlZ2llcyhQbGF0Zm9ybVN0
cmF0CiAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uIGhlcmUgaW4gcmVsZWFzZSBidWlsZHMuCiAg
ICAgQVNTRVJUKHBsYXRmb3JtU3RyYXRlZ2llcyAhPSBzX3BsYXRmb3JtU3RyYXRlZ2llcyk7CiB9
Ci0gICAgCisKK0xvY2FsaXphdGlvblN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gbmV3IERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gODIzNTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgQ29va2llc1N0cmF0ZWd5
KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKSA9IDA7CiAgICAgdmlydHVhbCBQbHVnaW5TdHJhdGVn
eSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKSA9IDA7Ci0gICAgdmlydHVhbCBMb2NhbGl6YXRpb25T
dHJhdGVneSogY3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3koKSA9IDA7CisgICAgdmlydHVhbCBM
b2NhbGl6YXRpb25TdHJhdGVneSogY3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3koKTsKICAgICB2
aXJ0dWFsIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKSA9
IDA7CiAKICAgICBDb29raWVzU3RyYXRlZ3kqIG1fY29va2llc1N0cmF0ZWd5OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNw
cAkocmV2aXNpb24gODIzNTkpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bGl6ZWRTdHJpbmdzTWFjLm1tOjgyMzU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxvY2FsaXplZFN0cmlu
Z3MuaCIKKworI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBsb2NhbGl6ZWRTdHJpbmco
Y29uc3QgY2hhcioga2V5KQoreworICAgIHN0YXRpYyBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBr
ZXlTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBr
ZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIE5TU3Ry
aW5nICpub3RGb3VuZCA9IEAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiOworICAgIE5TU3Ry
aW5nICpyZXN1bHQgPSBbYnVuZGxlIGxvY2FsaXplZFN0cmluZ0ZvcktleTooTlNTdHJpbmcgKilr
ZXlTdHJpbmcuZ2V0KCkgdmFsdWU6bm90Rm91bmQgdGFibGU6bmlsXTsKKworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFi
bGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAkocmV2aXNpb24gODIzNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDI4ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTG9jYWxpemVkU3Ry
aW5ncy5oIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKIAotI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewotICAgIHN0
YXRpYyBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAi
Y29tLmFwcGxlLldlYkNvcmUiXTsKLQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
a0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIE5TU3RyaW5nICpub3RGb3VuZCA9IEAibG9jYWxpemVk
IHN0cmluZyBub3QgZm91bmQiOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBbYnVuZGxlIGxvY2Fs
aXplZFN0cmluZ0ZvcktleTooTlNTdHJpbmcgKilrZXlTdHJpbmcuZ2V0KCkgdmFsdWU6bm90Rm91
bmQgdGFibGU6bmlsXTsKLQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZv
dW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtl
eSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzkx
MTk0MDU+IFdpbjogV2ViS2l0MiBuZWVkcyB0byBiZSBtYWRlIGxvY2FsaXphYmxlCisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJsZW4oa2V5KSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMzY5KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDMt
MjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZGVmYXVsdCBsb2NhbGl6YXRpb24gc3RyYXRl
Z3kgdGhhdCBjYW4gYmUgc2hhcmVkIGJ5IFdlYktpdDEgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NDA2CisKKyAgICAgICAgKiBT
aGFyZWQvV2ViTG9jYWxpemFibGVTdHJpbmdzLmg6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZWQg
aW4gZmF2b3Igb2YgdXNpbmcgV2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmggZGlyZWN0bHkuCisK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzTWFjLm1tOgorICAgICAgICBVc2UgV2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmggZGly
ZWN0bHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgUmVtb3ZlIGxvY2FsaXphdGlvbiBzdHJhdGVn
eSBvdmVycmlkZSBpbiBmYXZvciBvZiB1c2luZyBuZXcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4v
V2ViS2l0Mi52Y3Byb2o6CisgICAgICAgIFJlbW92ZSBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaAor
CisyMDExLTAzLTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDExLTAz
LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODIzNTkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjYx
LDcgKzI2MSw2IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIFwKLQlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViTG9jYWxpemFibGVTdHJpbmdzLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5h
dmlnYXRpb25EYXRhU3RvcmUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51bWJlci5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgSEVBREVSUyAr
PSBcCiAgICAgU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBcCiAgICAgU2hhcmVkL1dl
YkdyYXBoaWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuaCBcCi0gICAgU2hhcmVk
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5oIFwKICAgICBTaGFyZWQvV2ViTmF2aWdhdGlvbkRhdGFT
dG9yZS5oIFwKICAgICBTaGFyZWQvV2ViTnVtYmVyLmggXAogICAgIFNoYXJlZC9XZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggXApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMv
UGx1Z2luUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NTaGltLmgiCiAj
aW1wb3J0ICJQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KICNpbXBvcnQgPHd0Zi9IYXNo
U2V0Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5oCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NfaAotI2RlZmluZSBXZWJMb2NhbGl6
YWJsZVN0cmluZ3NfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNk
ZWZpbmUgVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0
cmluZyhzdHJpbmcpCi0jZGVmaW5lIFVJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2NyaXB0
aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQotCi0jZWxzZQotCi0vLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzkxMTk0MDU+IFdpbjogV2ViS2l0MiBuZWVkcyB0byBiZSBtYWRlIGxv
Y2FsaXphYmxlCi0KLSNkZWZpbmUgVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdURjo6
U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcsIHN0cmxlbihzdHJpbmcpKQotI2RlZmluZSBVSV9TVFJJ
TkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0
cmluZywgc3RybGVuKHN0cmluZykpCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV2ViTG9jYWxpemFi
bGVTdHJpbmdzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0JKHJldmlzaW9uIDgyMzU5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0ICJX
ZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKLSNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5o
IgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkocmV2aXNpb24gODIzNTkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAj
aW1wb3J0ICJXS0FQSUNhc3QuaCIKLSNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgog
I2ltcG9ydCAiV0tWaWV3LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw3ICsxMTA2
LDYgQEAKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9y
UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQ0MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFNTE4RTgxMzQyMjUxRDAwMTlFNjk3IC8qIFdlYkxvY2Fs
aXphYmxlU3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8q
IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MkRCQ0Y1RTAzNzBBREVFMDBDOTE3ODMgLyogV2ViS2l0MlByZWZpeC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTAzLDcgKzIxMDIsNiBAQAogCQkJCUJDQ0Y2QUJBMTJDOTFFRjkwMDhGOUMz
NSAvKiBXZWJJbWFnZS5jcHAgKi8sCiAJCQkJQkNDRjZBQkIxMkM5MUVGOTAwOEY5QzM1IC8qIFdl
YkltYWdlLmggKi8sCiAJCQkJQzAzMzdERDIxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktleWJvYXJk
RXZlbnQuY3BwICovLAotCQkJCTFDRTUxOEU4MTM0MjI1MUQwMDE5RTY5NyAvKiBXZWJMb2NhbGl6
YWJsZVN0cmluZ3MuaCAqLywKIAkJCQk5MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVt
b3J5U2FtcGxlci5jcHAgKi8sCiAJCQkJOTA1NjIwRTkxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1l
bW9yeVNhbXBsZXIuaCAqLywKIAkJCQlDMDMzN0RBRjEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91
c2VFdmVudC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMg
KzMyLDggQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
b29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNFKENGKQog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ4LDMzICs0Myw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gV2UgY2FuJ3QgdXNlIFN0
cmluZzo6Zm9ybWF0IGZvciB0d28gcmVhc29uczoKLS8vICAxKSBJdCBkb2Vzbid0IGhhbmRsZSBu
b24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZy4KLS8vICAyKSBJdCBkb2Vz
bid0IGhhbmRsZSB0aGUgJTIkZCBzeW50YXguCi0vLyBOb3RlIHRoYXQgYmVjYXVzZSB8Zm9ybWF0
fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3Qg
YmUgYSByZWZlcmVuY2UKLS8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRo
ZSBDKysgTjE5MDUgc3RhbmRhcmQuCi1zdGF0aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmlu
ZyhTdHJpbmcgZm9ybWF0LCAuLi4pCi17Ci0jaWYgVVNFKENGKQotICAgIHZhX2xpc3QgYXJndW1l
bnRzOwotICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmluZ0Ny
ZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCksIGFy
Z3VtZW50cykpOwotICAgIHZhX2VuZChhcmd1bWVudHMpOwotICAgIHJldHVybiByZXN1bHQuZ2V0
KCk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICB2YV9saXN0IGFyZ3VtZW50czsKLSAgICB2YV9z
dGFydChhcmd1bWVudHMsIGZvcm1hdCk7Ci0gICAgUVN0cmluZyByZXN1bHQ7Ci0gICAgcmVzdWx0
LnZzcHJpbnRmKGZvcm1hdC5sYXRpbjEoKS5kYXRhKCksIGFyZ3VtZW50cyk7Ci0gICAgdmFfZW5k
KGFyZ3VtZW50cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZm9ybWF0OwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjppbml0aWFsaXplKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBs
YXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7CkBAIC05NywxMSArNjUs
NiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjCiAgICAgcmV0dXJu
IHRoaXM7CiB9CiAKLUxvY2FsaXphdGlvblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQog
VmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVk
TGlua1N0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKQEAgLTExNiwyNSArNzksNiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiAKIC8vIFBsdWdpblN0cmF0
ZWd5CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKCkK
LXsKLSAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlzRW1wdHkoKSk7Ci0gICAgCi0gICAgVmVjdG9y
PFBsdWdpbkluZm8+IHBsdWdpbnM7Ci0gICAgCi0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBz
b21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJlPwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMo
bV9zaG91bGRSZWZyZXNoUGx1Z2lucyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHko
cGx1Z2lucyksIDApOwotCi0gICAgbV9jYWNoZWRQbHVnaW5zLnN3YXAocGx1Z2lucyk7Ci0gICAg
Ci0gICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOwotICAgIG1fcGx1Z2luQ2FjaGVJ
c1BvcHVsYXRlZCA9IHRydWU7Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZy
ZXNoUGx1Z2lucygpCiB7CiAgICAgbV9jYWNoZWRQbHVnaW5zLmNsZWFyKCk7CkBAIC0xNTAsODA1
ICs5NCwyNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mCiAgICAg
cGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2luczsKIH0KIAotLy8gTG9jYWxpemF0aW9uU3RyYXRlZ3kg
ICAgCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlucHV0RWxlbWVudEFsdFRleHQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkdfS0VZKCJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBl
bGVtZW50KSIsICJhbHQgdGV4dCBmb3IgPGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0
bGUsIG9yIHZhbHVlIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0
QnV0dG9uRGVmYXVsdExhYmVsKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJSZXNldCIsICJk
ZWZhdWx0IGxhYmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJbnRyb2R1
Y3Rpb24oKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlRoaXMgaXMgYSBzZWFyY2hhYmxlIGlu
ZGV4LiBFbnRlciBzZWFyY2gga2V5d29yZHM6ICIsCi0gICAgICAgICJ0ZXh0IHRoYXQgYXBwZWFy
cyBhdCB0aGUgc3RhcnQgb2YgbmVhcmx5LW9ic29sZXRlIHdlYiBwYWdlcyBpbiB0aGUgZm9ybSBv
ZiBhICdzZWFyY2hhYmxlIGluZGV4JyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBVSV9TVFJJTkco
IlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVsIGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3
ZWIgcGFnZXMiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRv
bkNob29zZUZpbGVMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ2hvb3NlIEZpbGUi
LCAidGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyIpOwotfQotCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygibm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0IHRvIGRp
c3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmlsZSBpcyBz
ZWxlY3RlZCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0RGV0
YWlsc1N1bW1hcnlUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJEZXRhaWxzIiwgInRl
eHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4gaXQgaGFzIG5vIDxzdW1tYXJ5PiBj
aGlsZCIpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklO
RygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5H
KCJPcGVuIExpbmsgaW4gTmV3IFdpbmRvdyIsICJPcGVuIGluIE5ldyBXaW5kb3cgY29udGV4dCBt
ZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJE
b3dubG9hZCBMaW5rZWQgRmlsZSIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5
IExpbmsiLCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3ciLCAi
T3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VU
b0Rpc2soKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkRvd25sb2FkIEltYWdlIiwgIkRvd25s
b2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4dCBtZW51
IGl0ZW0iKTsKLX0KLQotI2lmIFBMQVRGT1JNKFFUKQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIkNvcHkgSW1hZ2UgQWRkcmVzcyIsICJDb3B5IEltYWdlIEFkZHJl
c3MgbWVudSBpdGVtIik7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIk9wZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIFZpZGVvIGluIE5l
dyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIEF1ZGlv
IGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJvYXJk
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IFZpZGVvIEFkZHJlc3MiLCAiQ29weSBW
aWRlbyBBZGRyZXNzIExvY2F0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtUb0Ns
aXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBBdWRpbyBBZGRyZXNzIiwg
IkNvcHkgQXVkaW8gQWRkcmVzcyBMb2NhdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRp
YUNvbnRyb2xzKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb250cm9scyIsICJNZWRpYSBD
b250cm9scyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIkxvb3AiLCAiTWVkaWEgTG9vcCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdFbnRlclZp
ZGVvRnVsbHNjcmVlbigpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiRW50ZXIgRnVsbHNjcmVl
biIsICJWaWRlbyBFbnRlciBGdWxsc2NyZWVuIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUGxheSIsICJNZWRpYSBQbGF5IGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ01lZGlhUGF1c2UoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlBhdXNlIiwgIk1l
ZGlhIFBhdXNlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygiTXV0ZSIsICJNZWRpYSBNdXRlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUlu
TmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGluIE5ldyBX
aW5kb3ciLCAiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHko
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdHb0JhY2soKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkJhY2siLCAiQmFjayBjb250ZXh0
IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkZvcndhcmQi
LCAiRm9yd2FyZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HKCJSZWxvYWQiLCAiUmVsb2FkIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCi17
Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ3V0IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0
ZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUGFzdGUiLCAiUGFzdGUgY29udGV4dCBtZW51
IGl0ZW0iKTsKLX0KLQotI2lmIFBMQVRGT1JNKEdUSykKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVsZXRlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAiRGVsZXRlIjsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAiSW5wdXQgTWV0aG9kcyI7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJVbmljb2RlIjsKLX0KLQotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuICJTZWxlY3QgQWxsIjsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKLXsK
LSAgICByZXR1cm4gVUlfU1RSSU5HKCJObyBHdWVzc2VzIEZvdW5kIiwgIk5vIEd1ZXNzZXMgRm91
bmQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkcoIklnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0
ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnTGVhcm5TcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTGVhcm4gU3BlbGxp
bmciLCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HKCJTZWFyY2ggaW4gR29vZ2xlIiwgIlNlYXJjaCBpbiBHb29nbGUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0
ZWRTdHJpbmcpCi17Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
LSAgICByZXR1cm4gVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBp
biBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7Ci0jZWxzZQotICAgIHJldHVybiBVSV9T
VFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUg
aXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHNlbGVjdGVk
U3RyaW5nKTsKLSNlbmRpZgotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBM
aW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HKCJJZ25vcmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1hciBjb250
ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNw
ZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRleHQgc3ViLW1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCi17Ci0gICAgaWYgKHNob3cpCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVu
dSBpdGVtIHRpdGxlIik7Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTcGVsbGluZyBhbmQg
R3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygiQ2hlY2sgRG9jdW1lbnQgTm93IiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCi17Ci0gICAgcmV0dXJuIFVJX1NU
UklORygiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdoaWxl
IHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoIkNoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZyIsICJDaGVj
ayBncmFtbWFyIHdpdGggc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoIkZvbnQiLCAiRm9udCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0i
KTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
Qm9sZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQm9sZCIsICJCb2xkIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0l0YWxpYygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSXRhbGljIiwgIkl0YWxp
YyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQotewotICAgIHJldHVybiBVSV9TVFJJTkco
IlVuZGVybGluZSIsICJVbmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCi17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygiT3V0bGluZSIsICJPdXRsaW5lIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z1dyaXRpbmdEaXJlY3Rpb25NZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJQYXJhZ3Jh
cGggRGlyZWN0aW9uIiwgIlBhcmFncmFwaCBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z1RleHREaXJlY3Rpb25NZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWxlY3Rpb24g
RGlyZWN0aW9uIiwgIlNlbGVjdGlvbiBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rl
ZmF1bHREaXJlY3Rpb24oKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkRlZmF1bHQiLCAiRGVm
YXVsdCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpCi17
Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTGVmdCB0byBSaWdodCIsICJMZWZ0IHRvIFJpZ2h0IGNv
bnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJS
aWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
I2lmIFBMQVRGT1JNKE1BQykKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkco
IlNlYXJjaCBpbiBTcG90bGlnaHQiLCAiU2VhcmNoIGluIFNwb3RsaWdodCBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTaG93Rm9udHMoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgRm9udHMiLCAi
U2hvdyBmb250cyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkcoIlN0eWxlcy4uLiIsICJTdHlsZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBDb2xvcnMiLCAiU2hvdyBjb2xvcnMgY29u
dGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU3Bl
ZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpCi17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygiU3RhcnQgU3BlYWtpbmciLCAiU3RhcnQgc3BlYWtpbmcgY29u
dGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJT
dG9wIFNwZWFraW5nIiwgIlN0b3Agc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNw
ZWxsaW5nQXV0b21hdGljYWxseSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ29ycmVjdCBT
cGVsbGluZyBBdXRvbWF0aWNhbGx5IiwgIkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGljYWxseSBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpCi17Ci0gICAgcmV0dXJuIFVJX1NU
UklORygiU3Vic3RpdHV0aW9ucyIsICJTdWJzdGl0dXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdTaG93U3Vic3RpdHV0aW9ucyhib29sIHNob3cpCi17Ci0gICAgaWYgKHNob3cpIAotICAgICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRpdGxl
Iik7Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTdWJzdGl0dXRpb25zIiwgIm1lbnUgaXRl
bSB0aXRsZSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQg
Q29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVv
dGVzKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBRdW90ZXMiLCAiU21hcnQgUXVv
dGVzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJTbWFydCBEYXNoZXMiLCAiU21hcnQgRGFzaGVzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
TGlua3MoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNtYXJ0IExp
bmtzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygiVGV4dCBSZXBsYWNlbWVudCIsICJUZXh0IFJlcGxhY2VtZW50IGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlRy
YW5zZm9ybWF0aW9ucyIsICJUcmFuc2Zvcm1hdGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01h
a2VVcHBlckNhc2UoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk1ha2UgVXBwZXIgQ2FzZSIs
ICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpCi17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygiTWFrZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIgQ2FzZSBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJD
YXBpdGFsaXplIiwgIkNhcGl0YWxpemUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIHJlcGxhY2VkU3RyaW5nOwotfQotCi0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQotewotICAgIHJl
dHVybiBVSV9TVFJJTkcoIkluc3BlY3QgRWxlbWVudCIsICJJbnNwZWN0IEVsZW1lbnQgY29udGV4
dCBtZW51IGl0ZW0iKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1Rl
eHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJl
bCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhl
IHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVk
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVSZWNlbnRT
ZWFyY2hlc1RleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlJlY2VudCBTZWFyY2hlcyIs
ICJsYWJlbCBmb3IgZmlyc3QgaXRlbSBpbiB0aGUgbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlj
a2luZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB1c2VkIGFzIGVtYmVkZGVkIG1lbnUgdGl0
bGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudUNsZWFy
UmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDbGVhciBSZWNl
bnQgU2VhcmNoZXMiLCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRoYXQgZW1w
dGllcyBtZW51J3MgY29udGVudHMiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhXZWJBcmVhVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSFRNTCBjb250ZW50
IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igd2ViIGFyZWEiKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rVGV4dCgpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygibGluayIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxp
bmsiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygibGlzdCBtYXJrZXIiLCAiYWNjZXNzaWJpbGl0
eSByb2xlIGRlc2NyaXB0aW9uIGZvciBsaXN0IG1hcmtlciIpOwotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpBWEltYWdlTWFwVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklO
RygiaW1hZ2UgbWFwIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaW1hZ2Ug
bWFwIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSGVhZGluZ1RleHQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoImhlYWRpbmciLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciBoZWFkaW5ncyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpBWERlZmluaXRpb25MaXN0VGVybVRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoInRlcm0iLCAidGVybSB3b3JkIG9mIGEgZGVmaW5pdGlvbiIpOwotfQotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoImRlZmluaXRpb24iLCAiZGVmaW5pdGlvbiBwaHJhc2UiKTsK
LX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFY
QVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlhVHlwZSkKLXsKLSAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0IikKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklORygiYWxlcnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBh
biBhbGVydC4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYWxlcnQgZGlhbG9nIiwgIkFuIEFSSUEg
YWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYWxlcnQgZGlhbG9nLiIpOwotICAg
IGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uRGlhbG9nIikKLSAgICAgICAgcmV0dXJu
IFVJX1NUUklORygiZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFj
dHMgYXMgYW4gZGlhbG9nLiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9u
TG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygibG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJp
bGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBjb25zb2xlIGxvZy4iKTsKLSAgICBpZiAoYXJpYVR5
cGUgPT0gIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJtYXJxdWVlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBt
YXJxdWVlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvblN0YXR1
cyIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFwcGxpY2F0aW9uIHN0YXR1cyIsICJBbiBB
UklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgc3RhdHVzIHVwZGF0ZS4iKTsg
ICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25UaW1lciIpCi0gICAgICAg
IHJldHVybiBVSV9TVFJJTkcoInRpbWVyIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0
aGF0IGFjdHMgYXMgYW4gdXBkYXRpbmcgdGltZXIuIik7ICAgIAotICAgIGlmIChhcmlhVHlwZSA9
PSAiQVJJQURvY3VtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZG9jdW1lbnQiLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGRvY3VtZW50LiIpOyAg
ICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudEFydGljbGUiKQotICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJhcnRpY2xlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0
aGF0IGFjdHMgYXMgYW4gYXJ0aWNsZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklB
RG9jdW1lbnROb3RlIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygibm90ZSIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgbm90ZSBpbiBhIGRvY3VtZW50LiIp
OyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudFJlZ2lvbiIpCi0gICAgICAg
IHJldHVybiBVSV9TVFJJTkcoInJlZ2lvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAg
dGhhdCBhY3RzIGFzIGEgZGlzdGluY3QgcmVnaW9uIGluIGEgZG9jdW1lbnQuIik7ICAgIAotICAg
IGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQXBwbGljYXRpb24iKQotICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJhcHBsaWNhdGlvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAg
dGhhdCBhY3RzIGFzIGFuIGFwcGxpY2F0aW9uLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0g
IkFSSUFMYW5kbWFya0Jhbm5lciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImJhbm5lciIs
ICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgYmFubmVyLiIpOyAg
ICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnkiKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJjb21wbGVtZW50YXJ5IiwgIkFuIEFSSUEgYWNjZXNzaWJp
bGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSByZWdpb24gb2YgY29tcGxlbWVudGFyeSBpbmZvcm1h
dGlvbi4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtDb250ZW50SW5m
byIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImNvbnRlbnQiLCAiQW4gQVJJQSBhY2Nlc3Np
YmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgY29udGVudC4iKTsgICAgCi0gICAgaWYgKGFyaWFU
eXBlID09ICJBUklBTGFuZG1hcmtNYWluIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygibWFp
biIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBpcyB0aGUgbWFpbiBwb3J0aW9u
IG9mIHRoZSB3ZWJzaXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFy
a05hdmlnYXRpb24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJuYXZpZ2F0aW9uIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIHRoZSBtYWluIG5hdmlnYXRp
b24gZWxlbWVudHMgb2YgYSB3ZWJzaXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFS
SUFMYW5kbWFya1NlYXJjaCIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlYXJjaCIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBhIHNlYXJjaCBmZWF0dXJl
IG9mIGEgd2Vic2l0ZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBVXNlckludGVy
ZmFjZVRvb2x0aXAiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0b29sdGlwIiwgIkFuIEFS
SUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSB0b29sdGlwLiIpOyAgICAKLSAg
ICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFUYWJQYW5lbCIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoInRhYiBwYW5lbCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlu
cyB0aGUgY29udGVudCBvZiBhIHRhYi4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1
bWVudE1hdGgiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtYXRoIiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIG1hdGhlbWF0aWNhbCBzeW1ib2xzLiIpOwot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpBWEJ1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoInBy
ZXNzIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgYnV0
dG9uIGlzIHByZXNzZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpIAotewotICAg
IHJldHVybiBVSV9TVFJJTkcoInNlbGVjdCIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0
IHdpbGwgb2NjdXIgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFj
Y2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhUZXh0
RmllbGRBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJhY3RpdmF0ZSIsICJW
ZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHRleHQgZmllbGQg
aXMgc2VsZWN0ZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoInVuY2hlY2siLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhh
dCB3aWxsIG9jY3VyIHdoZW4gYSBjaGVja2VkIGNoZWNrYm94IGlzIGNsaWNrZWQsIGFzIHVzZWQg
YnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpB
WFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygi
Y2hlY2siLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYW4g
dW5jaGVja2VkIGNoZWNrYm94IGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIp
OwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0aW9uVmVy
YigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInNlbGVjdCI7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJzZWxlY3QiOwotfQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKCkKLXsKLSAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJqdW1wIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2ls
bCBvY2N1ciB3aGVuIGEgbGluayBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHki
KTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0
IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWdpbiBpcyBtaXNzaW5nIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNoZWRQbHVnaW5UZXh0KCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HKCJQbHVnLWluIEZhaWx1cmUiLCAiTGFiZWwgdGV4dCB0byBiZSB1c2VkIGlmIHBsdWdp
biBob3N0IHByb2Nlc3MgaGFzIGNyYXNoZWQiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQot
ewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlZCBmaWxlcyIs
ICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGluIGEgZmls
ZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1iZXJPZkZp
bGVzKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dW5rbm93bkZpbGVTaXpl
VGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiVW5rbm93biIsICJVbmtub3duIGZpbGVz
aXplIEZUUCBkaXJlY3RvcnkgbGlzdGluZyBpdGVtIik7Ci19Ci0KLSNpZiBQTEFURk9STShXSU4p
Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwbG9hZEZpbGVUZXh0KCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAidXBsb2FkIjsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsRmlsZXNUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKLX0KLQotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShNQUMpCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJdGVtNTEy
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCI1MTIgKExvdyBHcmFkZSkiLCAiTWVudSBpdGVt
IHRpdGxlIGZvciBLRVlHRU4gcG9wLXVwIG1lbnUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6a2V5Z2VuTWVudUl0ZW0xMDI0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5H
KCIxMDI0IChNZWRpdW0gR3JhZGUpIiwgIk1lbnUgaXRlbSB0aXRsZSBmb3IgS0VZR0VOIHBvcC11
cCBtZW51Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJ
dGVtMjA0OCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiMjA0OCAoSGlnaCBHcmFkZSkiLCAi
TWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVwIG1lbnUiKTsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBXVEY6OlN0
cmluZyYgaG9zdCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJLZXkgZnJvbSA8aG9zdG5hbWU+
IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLnJl
cGxhY2UoIjxob3N0bmFtZT4iLCBob3N0KTsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZm9ybWF0IHRoZSBu
dW1iZXJzIGNvcnJlY3RseS4gSW4gTWFjIFdlYktpdCwgd2UgdXNlZCArW05TTnVtYmVyRm9ybWF0
dGVyIGxvY2FsaXplZFN0cmluZ0Zyb21OdW1iZXI6bnVtYmVyU3R5bGU6XS4KLSAgICByZXR1cm4g
Zm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxz
IiwgIndpbmRvdyB0aXRsZSBzdWZmaXggZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0
aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
LnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIkxvYWRpbmcuLi4iLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2Fn
ZSB3aGVuIHRoZSBtZWRpYSBpcyBsb2FkaW5nIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQotewotICAgIHJl
dHVybiBVSV9TVFJJTkcoIkxpdmUgQnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVz
IG1lc3NhZ2Ugd2hlbiB3YXRjaGluZyBhIGxpdmUgYnJvYWRjYXN0Iik7Ci19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmco
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQot
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNj
ZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIi
KTsKLSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklORygidmlkZW8gZWxlbWVudCBjb250cm9sbGVyIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNj
cmlwdGlvbiBmb3IgdmlkZW8gZWxlbWVudCBjb250cm9sbGVyIik7Ci0gICAgaWYgKG5hbWUgPT0g
Ik11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtdXRlIiwgImFjY2Vzc2li
aWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbXV0ZSBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9
PSAiVW5NdXRlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygidW5tdXRlIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdHVybiBtdXRlIG9mZiBidXR0b24iKTsK
LSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkco
InBsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBwbGF5IGJ1dHRvbiIp
OwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoInBhdXNlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcGF1c2UgYnV0
dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoIm1vdmllIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1l
bGluZSBzbGlkZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJ0aW1lbGluZSBzbGlkZXIgdGh1bWIiLCAiYWNjZXNzaWJpbGl0eSBy
b2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lbGluZSB0aHVtYiIpOwotICAgIGlmIChuYW1lID09ICJS
ZXdpbmRCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYWNrIDMwIHNlY29uZHMi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBzZWVrIGJhY2sgMzAgc2Vjb25k
cyBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJldHVybiB0byByZWFsdGltZSIsICJhY2Nlc3NpYmls
aXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHJldHVybiB0byByZWFsIHRpbWUgYnV0dG9uIik7Ci0g
ICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImVsYXBzZWQgdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IGVsYXBzZWQgdGltZSBkaXNwbGF5Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdE
aXNwbGF5IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmVtYWluaW5nIHRpbWUiLCAiYWNj
ZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lIHJlbWFpbmluZyBkaXNwbGF5Iik7
Ci0gICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJzdGF0dXMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBtb3ZpZSBz
dGF0dXMiKTsKLSAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1dHRvbiIpCi0gICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoImZ1bGxzY3JlZW4iLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBlbnRlciBmdWxsc2NyZWVuIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJTZWVr
Rm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImZhc3QgZm9yd2FyZCIs
ICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGZhc3QgZm9yd2FyZCBidXR0b24i
KTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJmYXN0IHJldmVyc2UiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZv
ciBmYXN0IHJldmVyc2UgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0
aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNob3cgY2xvc2VkIGNhcHRp
b25zIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igc2hvdyBjbG9zZWQgY2Fw
dGlvbnMgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRv
biIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImhpZGUgY2xvc2VkIGNhcHRpb25zIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0
dG9uIik7Ci0KLSAgICAvLyBGSVhNRTogdGhlIENvbnRyb2xzUGFuZWwgY29udGFpbmVyIHNob3Vs
ZCBuZXZlciBiZSB2aXNpYmxlIGluIHRoZSBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4KLSAgICBp
ZiAobmFtZSA9PSAiQ29udHJvbHNQYW5lbCIpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhl
bHBUZXh0KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVt
ZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYXVkaW8gZWxlbWVudCBwbGF5YmFjayBj
b250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiVmlk
ZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygidmlkZW8gZWxlbWVudCBwbGF5
YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRl
c2NyaXB0aW9uIGZvciB2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLSAgICBpZiAobmFtZSA9
PSAiTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm11dGUgYXVkaW8gdHJh
Y2tzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtdXRlIGJ1dHRvbiIpOwotICAgIGlm
IChuYW1lID09ICJVbk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bm11
dGUgYXVkaW8gdHJhY2tzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB1biBtdXRlIGJ1
dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygiYmVnaW4gcGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBs
YXkgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKLSAgICAgICAgcmV0
dXJuIFVJX1NUUklORygicGF1c2UgcGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIHBhdXNlIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQotICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1
bWIiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIHRodW1i
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIgdGh1bWIiKTsK
LSAgICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklO
Rygic2VlayBtb3ZpZSBiYWNrIDMwIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIGp1bXAgYmFjayAzMCBzZWNvbmRzIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmV0dXJuIHN0
cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9y
IHJldHVybiBzdHJlYW1pbmcgbW92aWUgdG8gcmVhbCB0aW1lIGJ1dHRvbiIpOwotICAgIGlmIChu
YW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJj
dXJyZW50IG1vdmllIHRpbWUgaW4gc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBm
b3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsKLSAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmlu
Z0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJudW1iZXIgb2Ygc2Vjb25kcyBv
ZiBtb3ZpZSByZW1haW5pbmciLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJlbWFpbmlu
ZyB0aW1lIGRpc3BsYXkiKTsKLSAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCi0gICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoImN1cnJlbnQgbW92aWUgc3RhdHVzIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciBtb3ZpZSBzdGF0dXMgZGlzcGxheSIpOwotICAgIGlmIChuYW1lID09
ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsgcXVpY2ts
eSBiYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBmYXN0IHJld2luZCBidXR0b24i
KTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJzZWVrIHF1aWNrbHkgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IgZmFzdCBmb3J3YXJkIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVu
QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiUGxheSBtb3ZpZSBpbiBmdWxsc2Ny
ZWVuIG1vZGUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGVudGVyIGZ1bGxzY3JlZW4g
YnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInN0YXJ0IGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25z
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBzaG93IGNsb3NlZCBjYXB0aW9ucyBidXR0
b24iKTsKLSAgICBpZiAobmFtZSA9PSAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikKLSAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygic3RvcCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyIsICJh
Y2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0
aW9uKGZsb2F0IHRpbWUpCi17Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKLSAgICAgICAgcmV0
dXJuIFVJX1NUUklORygiaW5kZWZpbml0ZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciBhbiBpbmRlZmluaXRlIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSIpOwotCi0gICAg
aW50IHNlY29uZHMgPSBzdGF0aWNfY2FzdDxpbnQ+KGZhYnNmKHRpbWUpKTsgCi0gICAgaW50IGRh
eXMgPSBzZWNvbmRzIC8gKDYwICogNjAgKiAyNCk7Ci0gICAgaW50IGhvdXJzID0gc2Vjb25kcyAv
ICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7Ci0gICAg
c2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChkYXlzKQotICAgICAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFVJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVz
ICU0JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJv
bGxlciB0aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRz
KTsKLSAgICBpZiAoaG91cnMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
VUlfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNz
aWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBt
aW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKLSAgICBpZiAobWludXRlcykKLSAg
ICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhVSV9TVFJJTkcoIiUxJGQgbWludXRl
cyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRy
b2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29uZHMpOwotICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlMSRkIHNlY29uZHMiLCAi
YWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8
IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygidmFsdWUgbWlzc2luZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHJlcXVpcmVk
IGZvcm0gY29udHJvbCBlbGVtZW50cyB0aGF0IGhhdmUgbm8gdmFsdWUiKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJ0eXBlIG1pc21hdGNoIiwgIlZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIGEgdmFsdWUgbm90IG1hdGNoaW5n
IHR5cGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1l
c3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJwYXR0
ZXJuIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9s
cyByZXF1aXJpbmcgYSBjb25zdHJhaW5lZCB2YWx1ZSBhY2NvcmRpbmcgdG8gcGF0dGVybiIpOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVRvb0xv
bmdUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJ0b28gbG9uZyIsICJWYWxpZGF0aW9u
IG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgbG9uZ2VyIHRo
YW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpCit2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCiB7Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygicmFuZ2UgdW5kZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQg
Zm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7Ci19
CisgICAgaWYgKG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkKKyAgICAgICAgcmV0dXJuOwogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZs
b3dUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJyYW5nZSBvdmVyZmxvdyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdoZXIg
dGhhbiBhbGxvd2VkIG1heGltdW0iKTsKLX0KKyAgICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlz
RW1wdHkoKSk7CisgICAgCisgICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnM7CisgICAgCisg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJl
PworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
Q29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHkocGx1Z2lucyksIDApOwogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90IHJlc3BlY3RpbmcgdGhlIHN0
ZXAgYXR0cmlidXRlIik7CisgICAgbV9jYWNoZWRQbHVnaW5zLnN3YXAocGx1Z2lucyk7CisgICAg
CisgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOworICAgIG1fcGx1Z2luQ2FjaGVJ
c1BvcHVsYXRlZCA9IHRydWU7CiB9CiAKIC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKKwogYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2gg
bGlua0hhc2gpCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlzTGlua1Zpc2l0
ZWQobGlua0hhc2gpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZp
c2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMSBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3Ry
YXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRl
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Niw3ICs0NSw2IEBAIHByaXZhdGU6
CiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7Ci0gICAgdmly
dHVhbCBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSogY3JlYXRlTG9jYWxpemF0aW9uU3Ry
YXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0
ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eQpAQCAtNTUsMTU4ICs1MywxNSBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVhbCB2
b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiYpOwotCi0gICAgLy8gV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kgICAg
Ci0gICAgdmlydHVhbCBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpOwotICAgIHZpcnR1YWwg
U3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2Vh
cmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3VibWl0QnV0
dG9uRGVmYXVsdExhYmVsKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZmlsZUJ1dHRvbkNob29zZUZp
bGVMYWJlbCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExh
YmVsKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpOwot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIFN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmls
ZUxhYmVsKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpOwot
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRv
RGlzaygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRv
Q2xpcGJvYXJkKCk7Ci0jaWYgUExBVEZPUk0oUVQpCi0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKTsKLSNlbmRpZgotICAgIHZpcnR1
YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1N0b3AoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSZWxv
YWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpOwotI2lmIFBMQVRGT1JNKEdU
SykKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWxldGUoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHMoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmljb2RlKCk7Ci0jZW5kaWYKLSNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCgpOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTZWFyY2hXZWIoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCk7Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCk7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnT3V0bGluZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdSaWdodFRvTGVmdCgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpOwotICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpOwotICAgIHZpcnR1YWwgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTcGVlY2hNZW51KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
U3RhcnRTcGVha2luZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0
b3BTcGVha2luZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJl
Y3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NhcGl0YWxpemUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwotI2VuZGlmCi0gICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpOwot
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93
KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1Rv
Q2xpcGJvYXJkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1
ZGlvTGlua1RvQ2xpcGJvYXJkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnVG9nZ2xlTWVkaWFDb250cm9scygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFQYXVzZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z01lZGlhTXV0ZSgpOwotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHZpcnR1
YWwgU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpOwotICAgIHZpcnR1YWwg
U3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBBWFdlYkFyZWFUZXh0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgQVhMaW5rVGV4dCgpOwotICAg
IHZpcnR1YWwgU3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBB
WEltYWdlTWFwVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYSGVhZGluZ1RleHQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKTsKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgdmlydHVhbCBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJp
bmcmIGFyaWFUeXBlKTsKLSNlbmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIEFYQnV0dG9uQWN0aW9u
VmVyYigpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBBWE1l
bnVMaXN0QWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFj
dGlvblZlcmIoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
cmFzaGVkUGx1Z2luVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9h
ZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcyk7Ci0gICAgdmlydHVhbCBTdHJpbmcgdW5rbm93
bkZpbGVTaXplVGV4dCgpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2aXJ0dWFsIFN0cmluZyB1
cGxvYWRGaWxlVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGFsbEZpbGVzVGV4dCgpOwotI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgU3RyaW5nIGtleWdlbk1lbnVJdGVt
NTEyKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0xMDI0KCk7Ci0gICAgdmly
dHVhbCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5
Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpOwotI2VuZGlmCi0gICAgdmly
dHVhbCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVsZW1lbnRMb2Fk
aW5nU3RhdGVUZXh0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2Fk
Y2FzdFN0YXRlVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJv
bEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxp
emVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0KTsKLSAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCk7Ci0gICAgdmlydHVh
bCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCk7Ci0KICAgICB2
b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsKIAotICAgIGJvb2wgbV9wbHVnaW5DYWNoZUlzUG9w
dWxhdGVkOwotICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2luczsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVnaW5zOwotCiAgICAgLy8gV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRM
aW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CisKKyAgICBib29sIG1fcGx1
Z2luQ2FjaGVJc1BvcHVsYXRlZDsKKyAgICBib29sIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnM7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQkocmV2aXNp
b24gODIzNTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJFcnJvcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lt
cG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV2ViRXJyb3IuaCIKLSNpbXBvcnQgIldlYkxvY2Fs
aXphYmxlU3RyaW5ncy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxwdGhyZWFkLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDgyMzU5KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0ICJGdWxsS2V5Ym9hcmRBY2Nlc3NX
YXRjaGVyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW1wb3J0ICJXZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4K
QEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPG1hY2gvbWFjaC5oPgogI2ltcG9ydCA8bWFjaC9t
YWNoX2Vycm9yLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiAj
aW1wb3J0IDxzYW5kYm94Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZp
c2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjY3LDEwICs2NjcsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCi0J
CQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxX
ZWJNb3VzZUV2ZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87560</attachid>
            <date>2011-03-30 10:16:37 -0700</date>
            <delta_ts>2011-03-30 10:23:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57406-20110330101636.patch</filename>
            <type>text/plain</type>
            <size>154285</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDMtMjkgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgZGVmYXVsdCBsb2NhbGl6YXRpb24gc3RyYXRlZ3kgdGhhdCBjYW4g
YmUgc2hhcmVkIGJ5IFdlYktpdDEgYW5kIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NDA2CisKKyAgICAgICAgQ3VycmVudGx5LCBvbmx5
IFdlYktpdDIgdXNlcyB0aGlzIGRlZmF1bHQgc3RyYXRlZ3ksIGJ1dCBXZWJLaXQxIHNob3VsZCBi
ZSBhYmxlCisgICAgICAgIHRvIGFkb3B0IGl0IHNvb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkRlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmguCisgICAgICAgIENvcHkgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBMb2NhbGl6YXRpb24gc3RyYXRlZ3kgZnJvbSBXZWJLaXQyIGludG8g
YSBzaGFyZWQgZGVmYXVsdCBzdHJhdGVneS4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgQWRkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgbG9jYWxpemF0aW9uIGJvdHRsZW5lY2sg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisgICAg
ICAgIEFkZCBsb2NhbGl6YXRpb24gbWFjcm9zIGhlcmUsIGluc3RlYWQgb2YgZGVmaW5pbmcgdGhl
bSBpbiB0aGUgYWJvdmUgbGF5ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVM
b2NhbGl6YXRpb25TdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgIEFkZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHN0cmF0ZWd5IGNy
ZWF0aW9uIGZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgdGhlIGRlZmF1bHQgc3RyYXRlZ3kuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tLgorICAg
ICAgICAoV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgQWRkIHN0dWIgZm9yIHdp
bmRvd3MsIHRoaXMgd2lsbCBiZSB1cGRhdGUgdG8gcHVsbCBmcm9tIHRoZSBidW5kbGUgaW4gYSBm
b2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisK
IDIwMTEtMDMtMzAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogU291cmNlL1dlYkNvcmUvQW5kcm9p
ZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA4
MjQ2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTQ2
OCw2ICs0NjgsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlw
bGF0Zm9ybS9BcmVuYS5jcHAgXAogCXBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAJcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKKwlwbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3kuY3BwIFwKIAlwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogCXBsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAgXAogCXBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gODI0NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTAzMyw2ICsxMDMzLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5jcHAKICAgICBwbGF0Zm9ybS9Db250ZW50
VHlwZS5jcHAKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKyAgICBwbGF0Zm9y
bS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNjcsNiArMjM2Nyw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw2ICs0NzksNyBAQCBfX1pON1dlYkNvcmUx
N0dseXBoUGFnZVRyZWVOb2RlMTh0cmVlR2x5CiBfX1pON1dlYkNvcmUxN0hpc3RvcnlDb250cm9s
bGVyMjZzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUV2CiBfX1pON1dlYkNvcmUxN25hbWVGb3JD
dXJzb3JUeXBlRU5TXzZDdXJzb3I0VHlwZUUKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZp
bGVFUktOM1dURjZTdHJpbmdFUmkKK19fWk43V2ViQ29yZTE4UGxhdGZvcm1TdHJhdGVnaWVzMjZj
cmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneUV2CiBfX1pON1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVu
dU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKIF9fWk43V2ViQ29yZTE4aXNTdGFydE9mUGFy
YWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGVFCiBfX1pON1dlYkNvcmUxOHBsdWdpblNjcmlwdE9iamVjdEVQTjNKU0M5RXhlY1N0YXRl
RVBOU18xM0pTSFRNTEVsZW1lbnRFCkBAIC03NTQsOCArNzU1LDggQEAgX19aTjdXZWJDb3JlNkVk
aXRvcjI0aXNTZWxlY3Rpb25VbmdyYW1tYQogX19aTjdXZWJDb3JlNkVkaXRvcjI2ZGVjcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI2aW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI2d3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmRFUktOM1dURjZTdHJpbmdFUktOUzFfNlZlY3RvcklTMl9MbTBFRUUKLV9fWk43V2ViQ29y
ZTZFZGl0b3IyN3JlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTZFZGl0b3IyN2hhbmRsZUNvcnJlY3Rpb25QYW5lbFJlc3VsdEVSS04zV1RGNlN0
cmluZ0UKK19fWk43V2ViQ29yZTZFZGl0b3IyN3JlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3IyOWNhbkRlY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyOWNhbkluY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzMGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVj
dGlvbkVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKQEAgLTEyMTcs
OSArMTIxOCw5IEBAIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTdmaXJzdFJlY3RGb3JSYW5nZUUKIF9f
Wk5LN1dlYkNvcmU2RWRpdG9yMTdzZWxlY3Rpb25IYXNTdHlsZUVpUktOM1dURjZTdHJpbmdFCiBf
X1pOSzdXZWJDb3JlNkVkaXRvcjE3c2hvdWxkRGVsZXRlUmFuZ2VFUE5TXzVSYW5nZUUKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yMjNnZXRDb21wb3NpdGlvblNlbGVjdGlvbkVSalMxXworX19aTks3V2Vi
Q29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJr
ZXIxME1hcmtlclR5cGVFaWkKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnRFdgogX19aTks3V2ViQ29yZTZFZGl0b3IzMWZvbnRBdHRyaWJ1dGVzRm9y
U2VsZWN0aW9uU3RhcnRFdgotX19aTks3V2ViQ29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVFaWkKIF9fWk5LN1dlYkNv
cmU2RWRpdG9yMzdiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0RXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yNmNhbkN1dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjdDb21tYW5kMTFp
c1N1cHBvcnRlZEV2CkBAIC0xMjg3LDYgKzEyODgsNyBAQCBfX1pUVk43V2ViQ29yZTEyQ2hyb21l
Q2xpZW50RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VFCiBfX1pUVk43V2ViQ29y
ZTE3RmlsZUNob29zZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRF
CitfX1pUVk43V2ViQ29yZTE4UGxhdGZvcm1TdHJhdGVnaWVzRQogX19aVFZON1dlYkNvcmUyNUhp
c3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXJFCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9maWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3Rl
cnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9Db29raWVKYXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQ29v
a2llc1N0cmF0ZWd5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0N1cnNvci5oJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0lt
YWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgnLApAQCAtMzQ5Myw2
ICszNDk0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL0N1cnNvci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0RlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0RyYWdEYXRh
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vRXZlbnRMb29wLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDgy
NDYxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTk0
OCw2ICs5NDgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51
bWJlck5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRm
b3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCisgICAgcGxhdGZvcm0vRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5LmNwcCBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKICAgICBwbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXApAQCAt
MTg3Niw2ICsxODc3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vQ29udGVudFR5cGUu
aCBcCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuaCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBcCisgICAgcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Lmgg
XAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmggXAogICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5oIFwK
ICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTc5MCw2ICsyNTc5MCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cRHJhZ0ltYWdlLmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CkBAIC0yNjI5Nyw2ICsyNjMwNSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cd2luXExvY2FsaXpl
ZFN0cmluZ3NXaW4uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cd2luXExvZ2dpbmdXaW4uY3BwIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gODI0NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxNzgsNiArNTE3
OCw4IEBACiAJCUJDQzA2NTg4MEYzQ0UyQTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTg0MEYzQ0Uy
QTcwMENEMkQ4NyAvKiBKU0NsaWVudFJlY3QuaCAqLzsgfTsKIAkJQkNDMDY1ODkwRjNDRTJBNzAw
Q0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1ODUwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50
UmVjdExpc3QuY3BwICovOyB9OwogCQlCQ0MwNjU4QTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGll
bnRSZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDMDY1ODYwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuaCAqLzsgfTsK
KwkJQkNDMzZFQjgxMzQyQUEzRjAwNEJFRUY3IC8qIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Mz
NkVCNjEzNDJBQTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcCAq
LzsgfTsKKwkJQkNDMzZFQjkxMzQyQUEzRjAwNEJFRUY3IC8qIERlZmF1bHRMb2NhbGl6YXRpb25T
dHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNDMzZFQjcxMzQyQUEzRjAwNEJFRUY3IC8qIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5o
ICovOyB9OwogCQlCQ0M0Mzg3ODBFODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
ICovOyB9OwogCQlCQ0M1NzMzNTBENjk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDNTczMzMw
RDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJQkNDNTczMzYw
RDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dyZXNzRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M1NzMzNDBENjk1QkJFMDA2RUY1MTcgLyog
RE9NUHJvZ3Jlc3NFdmVudC5tbSAqLzsgfTsKQEAgLTExNjE0LDYgKzExNjE2LDggQEAKIAkJQkND
MDY1ODQwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NsaWVudFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNDMDY1ODUwRjNDRTJBNzAwQ0QyRDg3IC8qIEpTQ2xpZW50UmVjdExpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDbGllbnRSZWN0TGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzA2NTg2MEYzQ0UyQTcwMENEMkQ4NyAv
KiBKU0NsaWVudFJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q2xpZW50UmVjdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDMzZFQjYx
MzQyQUEzRjAwNEJFRUY3IC8qIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0MzNkVCNzEzNDJBQTNGMDA0
QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0M0Mzg3NzBFODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQzU3MzMzMEQ2OTVCQkUwMDZFRjUxNyAvKiBET01Qcm9ncmVzc0V2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNTczMzQwRDY5NUJCRTAwNkVGNTE3IC8qIERPTVByb2dy
ZXNzRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01Q
cm9ncmVzc0V2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg0OTMsNiAr
MTg0OTcsOCBAQAogCQkJCTJFNDM0NjU3MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVhZENv
cGllci5oICovLAogCQkJCUUxMUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwICov
LAogCQkJCUY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBDdXJzb3IuaCAqLywKKwkJCQlCQ0Mz
NkVCNjEzNDJBQTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcCAq
LywKKwkJCQlCQ0MzNkVCNzEzNDJBQTNGMDA0QkVFRjcgLyogRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5LmggKi8sCiAJCQkJQTc5NTQ2NDIwQjVDNENCNDAwN0I0MzhGIC8qIERyYWdEYXRhLmNw
cCAqLywKIAkJCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLywKIAkJ
CQlBN0NGQjNDRjBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmNwcCAqLywKQEAgLTIyNzQ4
LDYgKzIyNzU0LDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nl
c3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNDMzZFQjkxMzQyQUEzRjAw
NEJFRUY3IC8qIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTk5QzY3MUUxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGMzQ3NDJERDEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDc0MkUxMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3Jr
ZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDI1LDYgKzI1NDMyLDcgQEAK
IAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzM2RUI4MTM0MkFBM0YwMDRC
RUVGNyAvKiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTk5QzY3MUMxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyog
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNw
cAkocmV2aXNpb24gODIzNTkpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDo4MjM1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisKKyNpZiBVU0UoUExBVEZP
Uk1fU1RSQVRFR0lFUykKKworI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHRNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKKyNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJMb2NhbGl6YWJs
ZVN0cmluZ3MuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gV2UgY2FuJ3QgdXNlIFN0cmluZzo6Zm9ybWF0IGZvciB0d28gcmVhc29u
czoKKy8vICAxKSBJdCBkb2Vzbid0IGhhbmRsZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUg
Zm9ybWF0IHN0cmluZy4KKy8vICAyKSBJdCBkb2Vzbid0IGhhbmRsZSB0aGUgJTIkZCBzeW50YXgu
CisvLyBOb3RlIHRoYXQgYmVjYXVzZSB8Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFy
YW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBjYW5ub3QgYmUgYSByZWZlcmVuY2UKKy8vIHR5cGUgYWNj
b3JkaW5nIHRvIHNlY3Rpb24gMTguNy8zIG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQuCitzdGF0
aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCit7Cisj
aWYgVVNFKENGKQorICAgIHZhX2xpc3QgYXJndW1lbnRzOworICAgIHZhX3N0YXJ0KGFyZ3VtZW50
cywgZm9ybWF0KTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFk
b3B0Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMo
MCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCksIGFyZ3VtZW50cykpOworICAgIHZhX2VuZChhcmd1
bWVudHMpOworICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisjZWxpZiBQTEFURk9STShRVCkKKyAg
ICB2YV9saXN0IGFyZ3VtZW50czsKKyAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7Cisg
ICAgUVN0cmluZyByZXN1bHQ7CisgICAgcmVzdWx0LnZzcHJpbnRmKGZvcm1hdC5sYXRpbjEoKS5k
YXRhKCksIGFyZ3VtZW50cyk7CisgICAgdmFfZW5kKGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIHJl
c3VsdDsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZm9ybWF0Owor
I2VuZGlmCit9CisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1T
dHJhdGVnaWVzLCAoKSk7CisgICAgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKCZwbGF0Zm9ybVN0cmF0
ZWdpZXMpOworfQorCitXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
cygpCisgICAgOiBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQoZmFsc2UpCisgICAgLCBtX3Nob3Vs
ZFJlZnJlc2hQbHVnaW5zKGZhbHNlKQoreworfQorCitDb29raWVzU3RyYXRlZ3kqIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlQ29va2llc1N0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhp
czsKK30KKworUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGx1
Z2luU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitMb2NhbGl6YXRpb25TdHJh
dGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgp
Cit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1Zpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKKy8vIENvb2tpZXNTdHJhdGVneQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6bm90aWZ5Q29va2llc0NoYW5nZWQoKQoreworICAgIFdlYkNvb2tpZU1hbmFnZXI6OnNo
YXJlZCgpLmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpOworfQorCisvLyBQbHVnaW5TdHJhdGVn
eQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCit7
CisgICAgaWYgKG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKG1fY2FjaGVkUGx1Z2lucy5pc0VtcHR5KCkpOworICAgIAorICAgIFZlY3RvcjxQ
bHVnaW5JbmZvPiBwbHVnaW5zOworICAgIAorICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZG8gc29t
ZXRoaW5nIGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5zKG1f
c2hvdWxkUmVmcmVzaFBsdWdpbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnM6OlJlcGx5KHBs
dWdpbnMpLCAwKTsKKworICAgIG1fY2FjaGVkUGx1Z2lucy5zd2FwKHBsdWdpbnMpOworICAgIAor
ICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKKyAgICBtX3BsdWdpbkNhY2hlSXNQ
b3B1bGF0ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVz
aFBsdWdpbnMoKQoreworICAgIG1fY2FjaGVkUGx1Z2lucy5jbGVhcigpOworICAgIG1fcGx1Z2lu
Q2FjaGVJc1BvcHVsYXRlZCA9IGZhbHNlOworICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSB0
cnVlOworCisgICAgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOworfQorCit2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zKQoreworICAgIHBvcHVsYXRlUGx1Z2luQ2FjaGUo
KTsKKyAgICBwbHVnaW5zID0gbV9jYWNoZWRQbHVnaW5zOworfQorCisvLyBMb2NhbGl6YXRpb25T
dHJhdGVneSAgICAKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVtZW50
QWx0VGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklOR19LRVkoIlN1Ym1pdCIsICJTdWJtaXQg
KGlucHV0IGVsZW1lbnQpIiwgImFsdCB0ZXh0IGZvciA8aW5wdXQ+IGVsZW1lbnRzIHdpdGggbm8g
YWx0LCB0aXRsZSwgb3IgdmFsdWUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlJl
c2V0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFJlc2V0IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBh
Z2VzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaGFibGVJbmRl
eEludHJvZHVjdGlvbigpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiVGhpcyBpcyBhIHNlYXJj
aGFibGUgaW5kZXguIEVudGVyIHNlYXJjaCBrZXl3b3JkczogIiwKKyAgICAgICAgInRleHQgdGhh
dCBhcHBlYXJzIGF0IHRoZSBzdGFydCBvZiBuZWFybHktb2Jzb2xldGUgd2ViIHBhZ2VzIGluIHRo
ZSBmb3JtIG9mIGEgJ3NlYXJjaGFibGUgaW5kZXgnIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiU3VibWl0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFN1Ym1pdCBidXR0b25zIGluIGZv
cm1zIG9uIHdlYiBwYWdlcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpm
aWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDaG9v
c2UgRmlsZSIsICJ0aXRsZSBmb3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3Rl
ZExhYmVsKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJubyBmaWxlIHNlbGVjdGVkIiwgInRl
eHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBm
aWxlIGlzIHNlbGVjdGVkIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
ZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkRldGFp
bHMiLCAidGV4dCB0byBkaXNwbGF5IGluIDxkZXRhaWxzPiB0YWcgd2hlbiBpdCBoYXMgbm8gPHN1
bW1hcnk+IGNoaWxkIik7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoIk9wZW4gTGluayBpbiBOZXcgV2luZG93IiwgIk9wZW4gaW4gTmV3IFdpbmRvdyBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIkRvd25sb2FkIExpbmtlZCBGaWxlIiwgIkRvd25sb2FkIExpbmtlZCBGaWxlIGNvbnRl
eHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5O
ZXdXaW5kb3coKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gSW1hZ2UgaW4gTmV3IFdp
bmRvdyIsICJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30K
KworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxv
YWRJbWFnZVRvRGlzaygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiRG93bmxvYWQgSW1hZ2Ui
LCAiRG93bmxvYWQgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQo
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkgSW1hZ2UiLCAiQ29weSBJbWFnZSBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oUVQpCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBJbWFnZSBBZGRyZXNzIiwgIkNvcHkgSW1h
Z2UgQWRkcmVzcyBtZW51IGl0ZW0iKTsKK30KKyNlbmRpZgorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBWaWRlbyBpbiBOZXcgV2luZG93IiwgIk9wZW4gVmlk
ZW8gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuQXVkaW9Jbk5ld1dpbmRvdygp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBBdWRpbyBpbiBOZXcgV2luZG93IiwgIk9w
ZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9D
bGlwYm9hcmQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkgVmlkZW8gQWRkcmVzcyIs
ICJDb3B5IFZpZGVvIEFkZHJlc3MgTG9jYXRpb24gY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlv
TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IEF1ZGlvIEFk
ZHJlc3MiLCAiQ29weSBBdWRpbyBBZGRyZXNzIExvY2F0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Rv
Z2dsZU1lZGlhQ29udHJvbHMoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNvbnRyb2xzIiwg
Ik1lZGlhIENvbnRyb2xzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiTG9vcCIsICJNZWRpYSBMb29wIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0VudGVyVmlkZW9GdWxsc2NyZWVuKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJFbnRlciBG
dWxsc2NyZWVuIiwgIlZpZGVvIEVudGVyIEZ1bGxzY3JlZW4gY29udGV4dCBtZW51IGl0ZW0iKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVk
aWFQbGF5KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQbGF5IiwgIk1lZGlhIFBsYXkgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiUGF1
c2UiLCAiTWVkaWEgUGF1c2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJNdXRlIiwgIk1lZGlhIE11dGUgY29udGV4dCBtZW51IGl0ZW0iKTsK
K30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3Bl
bkZyYW1lSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gRnJhbWUg
aW4gTmV3IFdpbmRvdyIsICJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ29weSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSIsICJDb3B5IGNvbnRleHQg
bWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjaygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQmFjayIsICJCYWNr
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
Rm9yd2FyZCIsICJGb3J3YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlJlbG9hZCIsICJSZWxvYWQgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
Q3V0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDdXQiLCAiQ3V0IGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ1Bhc3RlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQYXN0ZSIsICJQYXN0ZSBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWxldGUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJEZWxldGUiOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHMoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJJbnB1dCBNZXRob2RzIjsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVW5pY29kZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gIlVuaWNvZGUiOworfQorCisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gIlNlbGVjdCBBbGwiOworfQorCisjZW5kaWYKKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91
bmQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vl
c3NlcyBGb3VuZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCit7CisgICAgcmV0
dXJuIFVJX1NUUklORygiSWdub3JlIFNwZWxsaW5nIiwgIklnbm9yZSBTcGVsbGluZyBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJMZWFy
biBTcGVsbGluZyIsICJMZWFybiBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIo
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNlYXJjaCBpbiBHb29nbGUiLCAiU2VhcmNoIGlu
IEdvb2dsZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFN0cmluZykKK3sKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorICAgIHJldHVybiBVSV9TVFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJM
b29rIFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBtZW51IGl0ZW0iKTsKKyNlbHNlCisgICAgcmV0
dXJuIFVJX1NUUklORygiTG9vayBVcCDigJw8c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRl
eHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+Iiwg
c2VsZWN0ZWRTdHJpbmcpOworI2VuZGlmCit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIo
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIklnbm9yZSBHcmFtbWFyIiwgIklnbm9yZSBHcmFt
bWFyIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAiU3BlbGxpbmcgYW5kIEdyYW1tYXIgY29udGV4
dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykKK3sKKyAgICBpZiAo
c2hvdykKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBTcGVsbGluZyBhbmQgR3JhbW1h
ciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIaWRlIFNwZWxs
aW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJDaGVjayBEb2N1bWVudCBOb3ciLCAiQ2hlY2sgc3BlbGxpbmcg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciLCAiQ2hlY2sgc3BlbGxp
bmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGlu
ZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5n
IiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiRm9udCIsICJGb250IGNvbnRleHQgc3ViLW1l
bnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdCb2xkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJCb2xkIiwgIkJvbGQgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJJdGFsaWMi
LCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiVW5kZXJsaW5lIiwgIlVuZGVybGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5l
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPdXRsaW5lIiwgIk91dGxpbmUgY29udGV4dCBt
ZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkco
IlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1t
ZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNl
bGVjdGlvbiBEaXJlY3Rpb24iLCAiU2VsZWN0aW9uIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiRGVmYXVs
dCIsICJEZWZhdWx0IHdyaXRpbmcgZGlyZWN0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1Jp
Z2h0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8g
UmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2ggaW4gU3BvdGxpZ2h0IGNvbnRl
eHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dGb250cygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBG
b250cyIsICJTaG93IGZvbnRzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpCit7CisgICAgcmV0
dXJuIFVJX1NUUklORygiU3R5bGVzLi4uIiwgIlN0eWxlcyBjb250ZXh0IG1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93
Q29sb3JzKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IENvbG9ycyIsICJTaG93IGNv
bG9ycyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJTcGVlY2giLCAiU3BlZWNoIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5n
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdGFydCBTcGVha2luZyIsICJTdGFydCBzcGVh
a2luZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIlN0b3AgU3BlYWtpbmciLCAiU3RvcCBzcGVha2luZyBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdD
b3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJD
b3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiLCAiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0
aWNhbGx5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlvbnMgY29udGV4dCBzdWIt
bWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykKK3sKKyAgICBpZiAoc2hvdykg
CisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0
ZW0gdGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIaWRlIFN1YnN0aXR1dGlvbnMiLCAi
bWVudSBpdGVtIHRpdGxlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJTbWFydCBDb3B5L1Bhc3RlIiwgIlNtYXJ0IENvcHkvUGFzdGUgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
U21hcnRRdW90ZXMoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IFF1b3RlcyIsICJT
bWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnU21hcnRMaW5rcygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQgTGlua3MiLCAi
U21hcnQgTGlua3MgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50IiwgIlRleHQgUmVwbGFjZW1lbnQgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiVHJhbnNmb3JtYXRpb25zIiwgIlRyYW5zZm9ybWF0aW9ucyBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTWFrZSBVcHBl
ciBDYXNlIiwgIk1ha2UgVXBwZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNl
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtlIExvd2VyIENhc2UiLCAiTWFrZSBMb3dl
ciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VC
YWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gcmVwbGFjZWRTdHJpbmc7Cit9CisKKyNlbmRpZgorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiSW5zcGVjdCBFbGVtZW50IiwgIkluc3BlY3QgRWxlbWVu
dCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVOb1JlY2VudFNl
YXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTm8gcmVjZW50IHNlYXJjaGVz
IiwgIkxhYmVsIGZvciBvbmx5IGl0ZW0gaW4gbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlja2lu
ZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB3aGVuIG5vIHNlYXJjaGVzIGhhdmUgYmVlbiBw
ZXJmb3JtZWQiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVu
dVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiUmVjZW50IFNl
YXJjaGVzIiwgImxhYmVsIGZvciBmaXJzdCBpdGVtIGluIHRoZSBtZW51IHRoYXQgYXBwZWFycyB3
aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHVzZWQgYXMgZW1iZWRkZWQg
bWVudSB0aXRsZSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hN
ZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkNs
ZWFyIFJlY2VudCBTZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUg
dGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpBWFdlYkFyZWFUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIVE1M
IGNvbnRlbnQiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB3ZWIgYXJlYSIp
OworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtUZXh0KCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJsaW5rIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlv
biBmb3IgbGluayIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpc3RN
YXJrZXJUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJsaXN0IG1hcmtlciIsICJhY2Nl
c3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpc3QgbWFya2VyIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJpbWFnZSBtYXAiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZv
ciBpbWFnZSBtYXAiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhIZWFk
aW5nVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiaGVhZGluZyIsICJhY2Nlc3NpYmls
aXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGhlYWRpbmdzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCit7CisgICAgcmV0dXJu
IFVJX1NUUklORygidGVybSIsICJ0ZXJtIHdvcmQgb2YgYSBkZWZpbml0aW9uIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4
dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiZGVmaW5pdGlvbiIsICJkZWZpbml0aW9uIHBo
cmFzZSIpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6QVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKQorewor
ICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uQWxlcnQiKQorICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJhbGVydCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBh
Y3RzIGFzIGFuIGFsZXJ0LiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9u
QWxlcnREaWFsb2ciKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhbGVydCBkaWFsb2ciLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhbGVydCBkaWFsb2cu
Iik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25EaWFsb2ciKQorICAgICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJkaWFsb2ciLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3Vw
IHRoYXQgYWN0cyBhcyBhbiBkaWFsb2cuIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBw
bGljYXRpb25Mb2ciKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJsb2ciLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGNvbnNvbGUgbG9nLiIpOworICAgIGlm
IChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uTWFycXVlZSIpCisgICAgICAgIHJldHVybiBV
SV9TVFJJTkcoIm1hcnF1ZWUiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0
cyBhcyBhIG1hcnF1ZWUuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0
aW9uU3RhdHVzIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYXBwbGljYXRpb24gc3RhdHVz
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBzdGF0dXMgdXBk
YXRlLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvblRpbWVyIikK
KyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidGltZXIiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5
IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiB1cGRhdGluZyB0aW1lci4iKTsgICAgCisgICAgaWYgKGFy
aWFUeXBlID09ICJBUklBRG9jdW1lbnQiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJkb2N1
bWVudCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgZG9jdW1l
bnQuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50QXJ0aWNsZSIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFydGljbGUiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5
IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhcnRpY2xlLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUg
PT0gIkFSSUFEb2N1bWVudE5vdGUiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJub3RlIiwg
IkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBub3RlIGluIGEgZG9j
dW1lbnQuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50UmVnaW9uIikK
KyAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmVnaW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0
eSBncm91cCB0aGF0IGFjdHMgYXMgYSBkaXN0aW5jdCByZWdpb24gaW4gYSBkb2N1bWVudC4iKTsg
ICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtBcHBsaWNhdGlvbiIpCisgICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoImFwcGxpY2F0aW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0
eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYXBwbGljYXRpb24uIik7ICAgIAorICAgIGlmIChhcmlh
VHlwZSA9PSAiQVJJQUxhbmRtYXJrQmFubmVyIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygi
YmFubmVyIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBiYW5u
ZXIuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQ29tcGxlbWVudGFy
eSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImNvbXBsZW1lbnRhcnkiLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHJlZ2lvbiBvZiBjb21wbGVtZW50YXJ5
IGluZm9ybWF0aW9uLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0Nv
bnRlbnRJbmZvIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiY29udGVudCIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBjb250ZW50LiIpOyAgICAKKyAgICBp
ZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya01haW4iKQorICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJtYWluIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGlzIHRoZSBtYWlu
IHBvcnRpb24gb2YgdGhlIHdlYnNpdGUuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJ
QUxhbmRtYXJrTmF2aWdhdGlvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm5hdmlnYXRp
b24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgdGhlIG1haW4g
bmF2aWdhdGlvbiBlbGVtZW50cyBvZiBhIHdlYnNpdGUuIik7ICAgIAorICAgIGlmIChhcmlhVHlw
ZSA9PSAiQVJJQUxhbmRtYXJrU2VhcmNoIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2Vh
cmNoIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIGEgc2VhcmNo
IGZlYXR1cmUgb2YgYSB3ZWJzaXRlLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFV
c2VySW50ZXJmYWNlVG9vbHRpcCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRvb2x0aXAi
LCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHRvb2x0aXAuIik7
ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQVRhYlBhbmVsIikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygidGFiIHBhbmVsIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGNvbnRhaW5zIHRoZSBjb250ZW50IG9mIGEgdGFiLiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAi
QVJJQURvY3VtZW50TWF0aCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1hdGgiLCAiQW4g
QVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgbWF0aGVtYXRpY2FsIHN5bWJv
bHMuIik7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygicHJlc3MiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdo
ZW4gYSBidXR0b24gaXMgcHJlc3NlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkg
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygic2VsZWN0IiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0
aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWQsIGFzIHVz
ZWQgYnkgYWNjZXNzaWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWFRleHRGaWVsZEFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoImFjdGl2
YXRlIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgdGV4
dCBmaWVsZCBpcyBzZWxlY3RlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygidW5jaGVjayIsICJWZXJiIHN0YXRpbmcgdGhlIGFj
dGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIGNoZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwg
YXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OkFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJjaGVjayIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIg
d2hlbiBhbiB1bmNoZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3Np
YmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RB
Y3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAic2VsZWN0
IjsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0
aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gInNlbGVjdCI7
Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlua0FjdGlvblZlcmIoKQor
eworICAgIHJldHVybiBVSV9TVFJJTkcoImp1bXAiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24g
dGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBsaW5rIGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNz
aWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptaXNzaW5nUGx1
Z2luVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTWlzc2luZyBQbHVnLWluIiwgIkxh
YmVsIHRleHQgdG8gYmUgdXNlZCB3aGVuIGEgcGx1Z2luIGlzIG1pc3NpbmciKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3Jhc2hlZFBsdWdpblRleHQoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlBsdWctaW4gRmFpbHVyZSIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQg
aWYgcGx1Z2luIGhvc3QgcHJvY2VzcyBoYXMgY3Jhc2hlZCIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9m
RmlsZXMpCit7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhVSV9TVFJJTkcoIiVk
IGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQg
aW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51
bWJlck9mRmlsZXMpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmtub3du
RmlsZVNpemVUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25v
d24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKTsKK30KKworI2lmIFBMQVRG
T1JNKFdJTikKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBsb2FkRmlsZVRleHQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJ1cGxvYWQiOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxGaWxlc1RleHQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJhbGwgZmlsZXMiOworfQorCisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykKKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuTWVu
dUl0ZW01MTIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIjUxMiAoTG93IEdyYWRlKSIsICJN
ZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjprZXlnZW5NZW51SXRlbTEwMjQoKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoIjEwMjQgKE1lZGl1bSBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlH
RU4gcG9wLXVwIG1lbnUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5
Z2VuTWVudUl0ZW0yMDQ4KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCIyMDQ4IChIaWdoIEdy
YWRlKSIsICJNZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0
IFdURjo6U3RyaW5nJiBob3N0KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIktleSBmcm9tIDxo
b3N0bmFtZT4iLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4g
dGFnIikucmVwbGFjZSgiPGhvc3RuYW1lPiIsIGhvc3QpOworfQorCisjZW5kaWYKKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmb3Jt
YXQgdGhlIG51bWJlcnMgY29ycmVjdGx5LiBJbiBNYWMgV2ViS2l0LCB3ZSB1c2VkICtbTlNOdW1i
ZXJGb3JtYXR0ZXIgbG9jYWxpemVkU3RyaW5nRnJvbU51bWJlcjpudW1iZXJTdHlsZTpdLgorICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5cl
ZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIHN1ZmZpeCBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1
c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiTG9hZGluZy4uLiIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1
cyBtZXNzYWdlIHdoZW4gdGhlIG1lZGlhIGlzIGxvYWRpbmciKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiTGl2ZSBCcm9hZGNhc3QiLCAiTWVkaWEgY29udHJvbGxl
ciBzdGF0dXMgbWVzc2FnZSB3aGVuIHdhdGNoaW5nIGEgbGl2ZSBicm9hZGNhc3QiKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVu
dFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxl
bWVudCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImF1ZGlvIGVsZW1lbnQgY29udHJvbGxl
ciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGF1ZGlvIGVsZW1lbnQgY29u
dHJvbGxlciIpOworICAgIGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJ2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSBy
b2xlIGRlc2NyaXB0aW9uIGZvciB2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAo
bmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm11dGUiLCAi
YWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBtdXRlIGJ1dHRvbiIpOworICAgIGlm
IChuYW1lID09ICJVbk11dGVCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bm11
dGUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0dXJuIG11dGUgb2ZmIGJ1
dHRvbiIpOworICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygicGxheSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHBsYXkg
YnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygicGF1c2UiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBw
YXVzZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygibW92aWUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24g
Zm9yIHRpbWVsaW5lIHNsaWRlciIpOworICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRpbWVsaW5lIHNsaWRlciB0aHVtYiIsICJhY2Nlc3Np
YmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHRpbWVsaW5lIHRodW1iIik7CisgICAgaWYgKG5h
bWUgPT0gIlJld2luZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImJhY2sgMzAg
c2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHNlZWsgYmFjayAz
MCBzZWNvbmRzIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmV0dXJuIHRvIHJlYWx0aW1lIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcmV0dXJuIHRvIHJlYWwgdGltZSBidXR0
b24iKTsKKyAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKKyAgICAgICAgcmV0
dXJuIFVJX1NUUklORygiZWxhcHNlZCB0aW1lIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlw
dGlvbiBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJl
bWFpbmluZ0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJyZW1haW5pbmcgdGlt
ZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHRpbWUgcmVtYWluaW5nIGRp
c3BsYXkiKTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJldHVy
biBVSV9TVFJJTkcoInN0YXR1cyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IG1vdmllIHN0YXR1cyIpOworICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVuQnV0dG9uIikKKyAg
ICAgICAgcmV0dXJuIFVJX1NUUklORygiZnVsbHNjcmVlbiIsICJhY2Nlc3NpYmlsaXR5IHJvbGUg
ZGVzY3JpcHRpb24gZm9yIGVudGVyIGZ1bGxzY3JlZW4gYnV0dG9uIik7CisgICAgaWYgKG5hbWUg
PT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZmFzdCBm
b3J3YXJkIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgZmFzdCBmb3J3YXJk
IGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCisgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoImZhc3QgcmV2ZXJzZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIGZhc3QgcmV2ZXJzZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2hvd0Ns
b3NlZENhcHRpb25zQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2hvdyBjbG9z
ZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBzaG93IGNs
b3NlZCBjYXB0aW9ucyBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiSGlkZUNsb3NlZENhcHRp
b25zQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiaGlkZSBjbG9zZWQgY2FwdGlv
bnMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBoaWRlIGNsb3NlZCBjYXB0
aW9ucyBidXR0b24iKTsKKworICAgIC8vIEZJWE1FOiB0aGUgQ29udHJvbHNQYW5lbCBjb250YWlu
ZXIgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgaW4gdGhlIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5
LgorICAgIGlmIChuYW1lID09ICJDb250cm9sc1BhbmVsIikKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xF
bGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lID09ICJB
dWRpb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhdWRpbyBlbGVtZW50IHBs
YXliYWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUg
ZGVzY3JpcHRpb24gZm9yIGF1ZGlvIGVsZW1lbnQgY29udHJvbGxlciIpOworICAgIGlmIChuYW1l
ID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ2aWRlbyBlbGVt
ZW50IHBsYXliYWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJhY2Nlc3NpYmlsaXR5
IHJvbGUgZGVzY3JpcHRpb24gZm9yIHZpZGVvIGVsZW1lbnQgY29udHJvbGxlciIpOworICAgIGlm
IChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibXV0ZSBh
dWRpbyB0cmFja3MiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG11dGUgYnV0dG9uIik7
CisgICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoInVubXV0ZSBhdWRpbyB0cmFja3MiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHVu
IG11dGUgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJiZWdpbiBwbGF5YmFjayIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IgcGxheSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJwYXVzZSBwbGF5YmFjayIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgcGF1c2UgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlciIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1vdmllIHRpbWUgc2NydWJiZXIiLCAiYWNjZXNzaWJp
bGl0eSBoZWxwIHRleHQgZm9yIHRpbWVsaW5lIHNsaWRlciIpOworICAgIGlmIChuYW1lID09ICJT
bGlkZXJUaHVtYiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1vdmllIHRpbWUgc2NydWJi
ZXIgdGh1bWIiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHRpbWVsaW5lIHNsaWRlciB0
aHVtYiIpOworICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQorICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJzZWVrIG1vdmllIGJhY2sgMzAgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IganVtcCBiYWNrIDMwIHNlY29uZHMgYnV0dG9uIik7CisgICAgaWYgKG5hbWUg
PT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJy
ZXR1cm4gc3RyZWFtaW5nIG1vdmllIHRvIHJlYWwgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgcmV0dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUgYnV0dG9uIik7Cisg
ICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImN1cnJlbnQgbW92aWUgdGltZSBpbiBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBlbGFwc2VkIHRpbWUgZGlzcGxheSIpOworICAgIGlmIChuYW1lID09ICJUaW1l
UmVtYWluaW5nRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm51bWJlciBvZiBz
ZWNvbmRzIG9mIG1vdmllIHJlbWFpbmluZyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Ig
cmVtYWluaW5nIHRpbWUgZGlzcGxheSIpOworICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5
IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiY3VycmVudCBtb3ZpZSBzdGF0dXMiLCAiYWNj
ZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1vdmllIHN0YXR1cyBkaXNwbGF5Iik7CisgICAgaWYg
KG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2Vl
ayBxdWlja2x5IGJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGZhc3QgcmV3aW5k
IGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCisgICAgICAg
IHJldHVybiBVSV9TVFJJTkcoInNlZWsgcXVpY2tseSBmb3J3YXJkIiwgImFjY2Vzc2liaWxpdHkg
aGVscCB0ZXh0IGZvciBmYXN0IGZvcndhcmQgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIkZ1
bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJQbGF5IG1vdmllIGlu
IGZ1bGxzY3JlZW4gbW9kZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZW50ZXIgZnVs
bHNjcmVlbiBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2hvd0Nsb3NlZENhcHRpb25zQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic3RhcnQgZGlzcGxheWluZyBjbG9zZWQg
Y2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHNob3cgY2xvc2VkIGNhcHRp
b25zIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24i
KQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzdG9wIGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRp
b25zIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBoaWRlIGNsb3NlZCBjYXB0aW9ucyBi
dXR0b24iKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFUaW1l
RGVzY3JpcHRpb24oZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJpbmRlZmluaXRlIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSBo
ZWxwIHRleHQgZm9yIGFuIGluZGVmaW5pdGUgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlIik7
CisKKyAgICBpbnQgc2Vjb25kcyA9IHN0YXRpY19jYXN0PGludD4oZmFic2YodGltZSkpOyAKKyAg
ICBpbnQgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2MCAqIDI0KTsKKyAgICBpbnQgaG91cnMgPSBz
ZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2
MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGRheXMpCisgICAgICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAlMyRk
IG1pbnV0ZXMgJTQkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRp
YSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gMSBkYXkiKSwgZGF5cywgaG91cnMsIG1pbnV0ZXMs
IHNlY29uZHMpOworICAgIGlmIChob3VycykKKyAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhVSV9TVFJJTkcoIiUxJGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIs
ICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVl
ID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIGlmIChtaW51
dGVzKQorICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygiJTEk
ZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVk
aWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwgbWludXRlcywgc2Vjb25k
cyk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhVSV9TVFJJTkcoIiUxJGQgc2Vj
b25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1l
IHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJ2YWx1ZSBtaXNzaW5nIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
cmVxdWlyZWQgZm9ybSBjb250cm9sIGVsZW1lbnRzIHRoYXQgaGF2ZSBubyB2YWx1ZSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNt
YXRjaFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInR5cGUgbWlzbWF0Y2giLCAiVmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggYSB2YWx1ZSBub3Qg
bWF0Y2hpbmcgdHlwZSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxp
ZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoInBhdHRlcm4gbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHJlcXVpcmluZyBhIGNvbnN0cmFpbmVkIHZhbHVlIGFjY29yZGluZyB0byBwYXR0
ZXJuIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNz
YWdlVG9vTG9uZ1RleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInRvbyBsb25nIiwgIlZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBs
b25nZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJyYW5nZSB1bmRlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2Vk
IG1pbmltdW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlv
bk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygicmFu
Z2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xz
IHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygic3RlcCBtaXNtYXRjaCIsICJWYWxpZGF0aW9uIG1l
c3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBub3QgcmVzcGVjdGluZyB0
aGUgc3RlcCBhdHRyaWJ1dGUiKTsKK30KKworLy8gVmlzaXRlZExpbmtTdHJhdGVneQorYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2gg
bGlua0hhc2gpCit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlzTGlua1Zpc2l0
ZWQobGlua0hhc2gpOworfQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVmlzaXRl
ZExpbmsoUGFnZSogcGFnZSwgTGlua0hhc2ggbGlua0hhc2gpCit7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuYWRkVmlzaXRlZExpbmsobGlua0hhc2gpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3kuY3BwCShyZXZpc2lvbiA4MjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwx
MyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKKyNpbmNsdWRlICJEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCIKIAog
I2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCi0jaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3Jl
LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlci5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTQ0LDkgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgeworbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBXZSBjYW4ndCB1c2UgU3RyaW5nOjpmb3JtYXQgZm9yIHR3
byByZWFzb25zOgogLy8gIDEpIEl0IGRvZXNuJ3QgaGFuZGxlIG5vbi1BU0NJSSBjaGFyYWN0ZXJz
IGluIHRoZSBmb3JtYXQgc3RyaW5nLgpAQCAtNzUsMTIxICs2Nyw0OCBAQCBzdGF0aWMgU3RyaW5n
IGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICgpKTsKLSAgICBzZXRQbGF0
Zm9ybVN0cmF0ZWdpZXMoJnBsYXRmb3JtU3RyYXRlZ2llcyk7Ci19Ci0KLVdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKCkKLSAgICA6IG1fcGx1Z2luQ2FjaGVJc1Bv
cHVsYXRlZChmYWxzZSkKLSAgICAsIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMoZmFsc2UpCi17Ci19
Ci0KLUNvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVDb29raWVz
U3RyYXRlZ3koKQotewotICAgIHJldHVybiB0aGlzOwotfQotCi1QbHVnaW5TdHJhdGVneSogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCi17Ci0gICAgcmV0dXJu
IHRoaXM7Ci19Ci0KLUxvY2FsaXphdGlvblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQot
VmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVk
TGlua1N0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotLy8gQ29va2llc1N0cmF0
ZWd5Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCgp
Ci17Ci0gICAgV2ViQ29va2llTWFuYWdlcjo6c2hhcmVkKCkuZGlzcGF0Y2hDb29raWVzRGlkQ2hh
bmdlKCk7Ci19Ci0KLS8vIFBsdWdpblN0cmF0ZWd5Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKCkKLXsKLSAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9w
dWxhdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlz
RW1wdHkoKSk7Ci0gICAgCi0gICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnM7Ci0gICAgCi0g
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJl
PwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
Q29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHkocGx1Z2lucyksIDApOwotCi0gICAgbV9jYWNoZWRQ
bHVnaW5zLnN3YXAocGx1Z2lucyk7Ci0gICAgCi0gICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9
IGZhbHNlOwotICAgIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCA9IHRydWU7Ci19Ci0KLXZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCi17Ci0gICAgbV9jYWNoZWRQ
bHVnaW5zLmNsZWFyKCk7Ci0gICAgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkID0gZmFsc2U7Ci0g
ICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IHRydWU7Ci0KLSAgICBwb3B1bGF0ZVBsdWdpbkNh
Y2hlKCk7Ci19Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMp
CitEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkRlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eSgpCiB7Ci0gICAgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOwotICAgIHBsdWdpbnMgPSBtX2NhY2hl
ZFBsdWdpbnM7CiB9CiAKLS8vIExvY2FsaXphdGlvblN0cmF0ZWd5ICAgIAotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjppbnB1dEVsZW1lbnRBbHRUZXh0KCkKK1N0cmluZyBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmlucHV0RWxlbWVudEFsdFRleHQoKQogewogICAgIHJldHVy
biBVSV9TVFJJTkdfS0VZKCJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBlbGVtZW50KSIsICJhbHQg
dGV4dCBmb3IgPGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9yIHZhbHVlIik7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExh
YmVsKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnJlc2V0QnV0dG9uRGVm
YXVsdExhYmVsKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJSZXNldCIsICJkZWZhdWx0IGxh
YmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOwogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQor
U3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2VhcmNoYWJsZUluZGV4SW50cm9k
dWN0aW9uKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJUaGlzIGlzIGEgc2VhcmNoYWJsZSBp
bmRleC4gRW50ZXIgc2VhcmNoIGtleXdvcmRzOiAiLAogICAgICAgICAidGV4dCB0aGF0IGFwcGVh
cnMgYXQgdGhlIHN0YXJ0IG9mIG5lYXJseS1vYnNvbGV0ZSB3ZWIgcGFnZXMgaW4gdGhlIGZvcm0g
b2YgYSAnc2VhcmNoYWJsZSBpbmRleCciKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCiB7CiAgICAgcmV0dXJuIFVJ
X1NUUklORygiU3VibWl0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFN1Ym1pdCBidXR0b25zIGluIGZv
cm1zIG9uIHdlYiBwYWdlcyIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpm
aWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OmZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKQogewogICAgIHJldHVybiBVSV9TVFJJ
TkcoIkNob29zZSBGaWxlIiwgInRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9y
bXMiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWwoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Zmls
ZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIm5v
IGZpbGUgc2VsZWN0ZWQiLCAidGV4dCB0byBkaXNwbGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4g
SFRNTCBmb3JtcyB3aGVuIG5vIGZpbGUgaXMgc2VsZWN0ZWQiKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkKIHsK
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0
YWlscz4gdGFnIHdoZW4gaXQgaGFzIG5vIDxzdW1tYXJ5PiBjaGlsZCIpOwogfQogCiAjaWYgUExB
VEZPUk0oTUFDKQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weUltYWdlVW5rbm93
bkZpbGVMYWJlbCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb3B5SW1h
Z2VVbmtub3duRmlsZUxhYmVsKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bmtub3duIiwg
IlVua25vd24gZmlsZW5hbWUiKTsKIH0KQEAgLTE5NywxNDggKzExNiwxNDggQEAgU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29weUltYWdlVQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09w
ZW5MaW5rSW5OZXdXaW5kb3coKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6
Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpCiB7CiAgICAgcmV0dXJuIFVJ
X1NUUklORygiT3BlbiBMaW5rIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBpbiBOZXcgV2luZG93IGNv
bnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpCitTdHJpbmcgRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQog
ewogICAgIHJldHVybiBVSV9TVFJJTkcoIkRvd25sb2FkIExpbmtlZCBGaWxlIiwgIkRvd25sb2Fk
IExpbmtlZCBGaWxlIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQorU3Ry
aW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUxp
bmtUb0NsaXBib2FyZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBMaW5rIiwgIkNv
cHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJ
bk5ld1dpbmRvdygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBJbWFnZSBpbiBOZXcg
V2luZG93IiwgIk9wZW4gSW1hZ2UgaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEb3du
bG9hZEltYWdlVG9EaXNrKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIkRvd25sb2FkIEltYWdlIiwgIkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVt
Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKIHsKICAgICByZXR1
cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0i
KTsKIH0KIAogI2lmIFBMQVRGT1JNKFFUKQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQorU3RyaW5nIERlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9D
bGlwYm9hcmQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkgSW1hZ2UgQWRkcmVzcyIs
ICJDb3B5IEltYWdlIEFkZHJlc3MgbWVudSBpdGVtIik7CiB9CiAjZW5kaWYKIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5k
b3coKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVt
VGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4g
VmlkZW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3cgY29udGV4dCBt
ZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQogewog
ICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIEF1
ZGlvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJv
YXJkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRl
bVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygi
Q29weSBWaWRlbyBBZGRyZXNzIiwgIkNvcHkgVmlkZW8gQWRkcmVzcyBMb2NhdGlvbiBjb250ZXh0
IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKQorU3RyaW5nIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJv
YXJkKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IEF1ZGlvIEFkZHJlc3MiLCAiQ29w
eSBBdWRpbyBBZGRyZXNzIExvY2F0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29u
dHJvbHMoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJ
dGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ29u
dHJvbHMiLCAiTWVkaWEgQ29udHJvbHMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29w
KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRh
Z1RvZ2dsZU1lZGlhTG9vcCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTG9vcCIsICJNZWRp
YSBMb29wIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9G
dWxsc2NyZWVuKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJFbnRlciBGdWxsc2NyZWVuIiwg
IlZpZGVvIEVudGVyIEZ1bGxzY3JlZW4gY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCkKK1N0
cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlh
UGxheSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiUGxheSIsICJNZWRpYSBQbGF5IGNvbnRl
eHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpCiB7CiAgICAgcmV0dXJuIFVJX1NU
UklORygiUGF1c2UiLCAiTWVkaWEgUGF1c2UgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKCkK
K1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ01l
ZGlhTXV0ZSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTXV0ZSIsICJNZWRpYSBNdXRlIGNv
bnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93
KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3ciLCAi
T3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKQorU3RyaW5n
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weSgpCiB7
CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dv
QmFjaygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdHb0JhY2soKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkJhY2siLCAiQmFjayBjb250
ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6Y29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJGb3J3YXJkIiwgIkZvcndhcmQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcCgpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkKIHsK
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0ZW0iKTsK
IH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmVs
b2FkKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRl
bVRhZ1JlbG9hZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiUmVsb2FkIiwgIlJlbG9hZCBj
b250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdDdXQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJDdXQi
LCAiQ3V0IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKIHsKICAgICByZXR1cm4gVUlf
U1RSSU5HKCJQYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiAjaWYgUExB
VEZPUk0oR1RLKQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdEZWxldGUoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4
dE1lbnVJdGVtVGFnRGVsZXRlKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAiRGVsZXRlIjsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnSW5wdXRNZXRob2RzKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OmNvbnRleHRNZW51SXRlbVRhZ0lucHV0TWV0aG9kcygpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gIklucHV0IE1ldGhvZHMiOwogfQogCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdVbmljb2RlKCkKK1N0cmluZyBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuICJVbmljb2RlIjsKQEAgLTM0OCw3ICsyNjcs
NyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVuCiAKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiAiU2VsZWN0IEFsbCI7CkBAIC0zNTYsMjcgKzI3NSwyNyBA
QCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVuCiAKICNlbmRpZgogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNG
b3VuZCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0
ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTm8gR3Vlc3Nl
cyBGb3VuZCIsICJObyBHdWVzc2VzIEZvdW5kIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxs
aW5nKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZVNwZWxsaW5nKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJJZ25vcmUgU3Bl
bGxpbmciLCAiSWdub3JlIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmco
KQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFn
TGVhcm5TcGVsbGluZygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTGVhcm4gU3BlbGxpbmci
LCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigp
CiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU2VhcmNoIGluIEdvb2dsZSIsICJTZWFyY2ggaW4g
R29vZ2xlIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcm
IHNlbGVjdGVkU3RyaW5nKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29u
dGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRT
dHJpbmcpCiB7CiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBE
aWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7CkBAIC0zODUsMTkzICszMDQsMTkzIEBAIFN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW4KICNlbmRpZgogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCitT
dHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdPcGVu
TGluaygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBMaW5rIiwgIk9wZW4gTGluayBj
b250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKQogewogICAgIHJl
dHVybiBVSV9TVFJJTkcoIklnbm9yZSBHcmFtbWFyIiwgIklnbm9yZSBHcmFtbWFyIGNvbnRleHQg
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRl
eHQgc3ViLW1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQ
YW5lbChib29sIHNob3cpCiB7CiAgICAgaWYgKHNob3cpCiAgICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CiAgICAg
cmV0dXJuIFVJX1NUUklORygiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0g
dGl0bGUiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJDaGVjayBEb2N1bWVudCBOb3ciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0
ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCiB7
CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNo
ZWNrIHNwZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmcoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKIHsKICAgICByZXR1cm4gVUlf
U1RSSU5HKCJDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxpbmciLCAiQ2hlY2sgZ3JhbW1hciB3aXRo
IHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkKIHsKICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJGb250IiwgIkZvbnQgY29udGV4dCBzdWItbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0JvbGQo
KQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFn
Qm9sZCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQm9sZCIsICJCb2xkIGNvbnRleHQgbWVu
dSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0l0YWxpYygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250
ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkl0YWxpYyIs
ICJJdGFsaWMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCiB7CiAgICAg
cmV0dXJuIFVJX1NUUklORygiVW5kZXJsaW5lIiwgIlVuZGVybGluZSBjb250ZXh0IG1lbnUgaXRl
bSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRN
ZW51SXRlbVRhZ091dGxpbmUoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIk91dGxpbmUiLCAi
T3V0bGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpCitTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGly
ZWN0aW9uTWVudSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiUGFyYWdyYXBoIERpcmVjdGlv
biIsICJQYXJhZ3JhcGggZGlyZWN0aW9uIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwogfQogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0
aW9uTWVudSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU2Vs
ZWN0aW9uIERpcmVjdGlvbiIsICJTZWxlY3Rpb24gZGlyZWN0aW9uIGNvbnRleHQgc3ViLW1lbnUg
aXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OmNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKQogewogICAgIHJldHVybiBV
SV9TVFJJTkcoIkRlZmF1bHQiLCAiRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IG1l
bnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdMZWZ0VG9SaWdodCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
Ojpjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklO
RygiTGVmdCB0byBSaWdodCIsICJMZWZ0IHRvIFJpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0
VG9MZWZ0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51
SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJSaWdodCB0byBM
ZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykKIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoSW5TcG90bGlnaHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQogewogICAgIHJldHVybiBV
SV9TVFJJTkcoIlNlYXJjaCBpbiBTcG90bGlnaHQiLCAiU2VhcmNoIGluIFNwb3RsaWdodCBjb250
ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJTaG93IEZvbnRzIiwgIlNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCkK
K1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1N0
eWxlcygpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3R5bGVzLi4uIiwgIlN0eWxlcyBjb250
ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKQogewogICAgIHJldHVybiBVSV9T
VFJJTkcoIlNob3cgQ29sb3JzIiwgIlNob3cgY29sb3JzIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWVj
aE1lbnUoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJ
dGVtVGFnU3BlZWNoTWVudSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiU3BlZWNoIiwgIlNw
ZWVjaCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpCitTdHJpbmcgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCkK
IHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTdGFydCBTcGVha2luZyIsICJTdGFydCBzcGVha2lu
ZyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCkKIHsKICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJTdG9wIFNwZWFraW5nIiwgIlN0b3Agc3BlYWtpbmcgY29udGV4dCBt
ZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCitTdHJpbmcgRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRv
bWF0aWNhbGx5KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3JyZWN0IFNwZWxsaW5nIEF1
dG9tYXRpY2FsbHkiLCAiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVu
dSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKIHsKICAgICByZXR1
cm4gVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlvbnMgY29udGV4dCBzdWIt
bWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykKK1N0cmluZyBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJv
b2wgc2hvdykKIHsKICAgICBpZiAoc2hvdykgCiAgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNo
b3cgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0ZW0gdGl0bGUiKTsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJIaWRlIFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRpdGxlIik7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3Rl
KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRh
Z1NtYXJ0Q29weVBhc3RlKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBDb3B5L1Bh
c3RlIiwgIlNtYXJ0IENvcHkvUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKQor
U3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU21h
cnRRdW90ZXMoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IFF1b3RlcyIsICJTbWFy
dCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQorU3RyaW5nIERlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQogewog
ICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMgY29udGV4
dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJTbWFydCBMaW5rcyIsICJTbWFydCBMaW5rcyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQog
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVw
bGFjZW1lbnQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1l
bnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJUZXh0
IFJlcGxhY2VtZW50IiwgIlRleHQgUmVwbGFjZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJUcmFuc2Zvcm1hdGlvbnMiLCAiVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUg
aXRlbSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdNYWtlVXBwZXJDYXNlKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OmNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKQogewogICAgIHJldHVybiBVSV9TVFJJ
TkcoIk1ha2UgVXBwZXIgQ2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0i
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
TWFrZUxvd2VyQ2FzZSgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250
ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJN
YWtlIExvd2VyIENhc2UiLCAiTWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0
YWxpemUoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6Y29udGV4dE1lbnVJ
dGVtVGFnQ2FwaXRhbGl6ZSgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiQ2FwaXRhbGl6ZSIs
ICJDYXBpdGFsaXplIGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2soY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZykKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRl
eHRNZW51SXRlbVRhZ0NoYW5nZUJhY2soY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiByZXBsYWNlZFN0cmluZzsKQEAgLTU3
OSw2NSArNDk4LDY1IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW4K
IAogI2VuZGlmCiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0luc3BlY3RFbGVtZW50KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKIHsKICAgICByZXR1cm4gVUlfU1RS
SU5HKCJJbnNwZWN0IEVsZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVt
Iik7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVz
VGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiTm8gcmVjZW50IHNlYXJjaGVzIiwgIkxh
YmVsIGZvciBvbmx5IGl0ZW0gaW4gbWVudSB0aGF0IGFwcGVhcnMgd2hlbiBjbGlja2luZyBvbiB0
aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB3aGVuIG5vIHNlYXJjaGVzIGhhdmUgYmVlbiBwZXJmb3Jt
ZWQiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudVJlY2Vu
dFNlYXJjaGVzVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzZWFy
Y2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJSZWNl
bnQgU2VhcmNoZXMiLCAibGFiZWwgZm9yIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBl
YXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJl
ZGRlZCBtZW51IHRpdGxlIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
YXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5OjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQogewogICAg
IHJldHVybiBVSV9TVFJJTkcoIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4g
UmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOwogfQog
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFdlYkFyZWFUZXh0KCkKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYV2ViQXJlYVRleHQoKQogewogICAgIHJldHVy
biBVSV9TVFJJTkcoIkhUTUwgY29udGVudCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRp
b24gZm9yIHdlYiBhcmVhIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFY
TGlua1RleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6QVhMaW5rVGV4
dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygibGluayIsICJhY2Nlc3NpYmlsaXR5IHJvbGUg
ZGVzY3JpcHRpb24gZm9yIGxpbmsiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhMaXN0TWFya2VyVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
OjpBWExpc3RNYXJrZXJUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJsaXN0IG1hcmtl
ciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpc3QgbWFya2VyIik7CiB9
CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KCkKK1N0cmlu
ZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYSW1hZ2VNYXBUZXh0KCkKIHsKICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJpbWFnZSBtYXAiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBpbWFnZSBtYXAiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhIZWFkaW5nVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWEhl
YWRpbmdUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJoZWFkaW5nIiwgImFjY2Vzc2li
aWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaGVhZGluZ3MiKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKK1N0cmluZyBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCiB7CiAg
ICAgcmV0dXJuIFVJX1NUUklORygidGVybSIsICJ0ZXJtIHdvcmQgb2YgYSBkZWZpbml0aW9uIik7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxpc3REZWZp
bml0aW9uVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpBWERlZmlu
aXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoImRlZmlu
aXRpb24iLCAiZGVmaW5pdGlvbiBwaHJhc2UiKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3Qg
U3RyaW5nJiBhcmlhVHlwZSkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFY
QVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlhVHlwZSkKIHsKICAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0IikKICAgICAgICAgcmV0dXJuIFVJX1NU
UklORygiYWxlcnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBh
biBhbGVydC4iKTsKQEAgLTY4NSw3NyArNjA0LDc3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OkFYQVJJQUNvbnQKIH0KICNlbmRpZgogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpBWEJ1dHRvbkFjdGlvblZlcmIoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6QVhCdXR0b25BY3Rpb25WZXJiKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJwcmVz
cyIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIGJ1dHRv
biBpcyBwcmVzc2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6QVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKSAKK1N0cmluZyBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkgCiB7
CiAgICAgcmV0dXJuIFVJX1NUUklORygic2VsZWN0IiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9u
IHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWQsIGFzIHVzZWQg
YnkgYWNjZXNzaWJpbGl0eSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpB
WFRleHRGaWVsZEFjdGlvblZlcmIoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJhY3Rp
dmF0ZSIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHRl
eHQgZmllbGQgaXMgc2VsZWN0ZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwogfQogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIo
KQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6QVhDaGVja2VkQ2hlY2tCb3hB
Y3Rpb25WZXJiKCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bmNoZWNrIiwgIlZlcmIgc3Rh
dGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgY2hlY2tlZCBjaGVja2JveCBp
cyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQorU3RyaW5n
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZl
cmIoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoImNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUg
YWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGFuIHVuY2hlY2tlZCBjaGVja2JveCBpcyBjbGlj
a2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6QVhNZW51TGlzdEFjdGlvblZlcmIoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6QVhNZW51TGlzdEFjdGlvblZlcmIoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuICJzZWxlY3QiOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxp
emF0aW9uU3RyYXRlZ3k6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuICJzZWxlY3QiOwogfQogCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OkFYTGlua0FjdGlvblZlcmIoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
Imp1bXAiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBs
aW5rIGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptaXNzaW5nUGx1Z2luVGV4dCgpCitTdHJpbmcgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5OjptaXNzaW5nUGx1Z2luVGV4dCgpCiB7CiAgICAgcmV0dXJu
IFVJX1NUUklORygiTWlzc2luZyBQbHVnLWluIiwgIkxhYmVsIHRleHQgdG8gYmUgdXNlZCB3aGVu
IGEgcGx1Z2luIGlzIG1pc3NpbmciKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y3Jhc2hlZFBsdWdpblRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6Y3Jhc2hlZFBsdWdpblRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlBsdWctaW4g
RmFpbHVyZSIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgaWYgcGx1Z2luIGhvc3QgcHJvY2VzcyBo
YXMgY3Jhc2hlZCIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptdWx0aXBs
ZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCitTdHJpbmcgRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5OjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJl
ck9mRmlsZXMpCiB7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhVSV9TVFJJTkco
IiVkIGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0
ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiks
IG51bWJlck9mRmlsZXMpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmtu
b3duRmlsZVNpemVUZXh0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnVu
a25vd25GaWxlU2l6ZVRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIlVua25vd24iLCAi
VW5rbm93biBmaWxlc2l6ZSBGVFAgZGlyZWN0b3J5IGxpc3RpbmcgaXRlbSIpOwogfQogCiAjaWYg
UExBVEZPUk0oV0lOKQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGxvYWRGaWxl
VGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojp1cGxvYWRGaWxlVGV4
dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gInVwbG9hZCI7CiB9CiAK
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbEZpbGVzVGV4dCgpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjphbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuICJhbGwgZmlsZXMiOwpAQCAtNzY1LDQ1ICs2ODQsNDUgQEAg
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsRmlsZXNUZQogCiAjaWYgUExBVEZPUk0o
TUFDKQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjprZXlnZW5NZW51SXRlbTUxMigp
CitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjprZXlnZW5NZW51SXRlbTUxMigp
CiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiNTEyIChMb3cgR3JhZGUpIiwgIk1lbnUgaXRlbSB0
aXRsZSBmb3IgS0VZR0VOIHBvcC11cCBtZW51Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmtleWdlbk1lbnVJdGVtMTAyNCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5OjprZXlnZW5NZW51SXRlbTEwMjQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkco
IjEwMjQgKE1lZGl1bSBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVw
IG1lbnUiKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuTWVudUl0
ZW0yMDQ4KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmtleWdlbk1lbnVJ
dGVtMjA0OCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygiMjA0OCAoSGlnaCBHcmFkZSkiLCAi
TWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVwIG1lbnUiKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBXVEY6OlN0
cmluZyYgaG9zdCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmtleWdlbktl
eWNoYWluSXRlbU5hbWUoY29uc3QgU3RyaW5nJiBob3N0KQogewogICAgIHJldHVybiBVSV9TVFJJ
TkcoIktleSBmcm9tIDxob3N0bmFtZT4iLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVk
IGJ5IHRoZSBLRVlHRU4gdGFnIikucmVwbGFjZSgiPGhvc3RuYW1lPiIsIGhvc3QpOwogfQogCiAj
ZW5kaWYKIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRsZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQorU3RyaW5nIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6aW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmb3JtYXQgdGhl
IG51bWJlcnMgY29ycmVjdGx5LiBJbiBNYWMgV2ViS2l0LCB3ZSB1c2VkICtbTlNOdW1iZXJGb3Jt
YXR0ZXIgbG9jYWxpemVkU3RyaW5nRnJvbU51bWJlcjpudW1iZXJTdHlsZTpdLgogICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5clZCBwaXhl
bHMiLCAid2luZG93IHRpdGxlIHN1ZmZpeCBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11
bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCitTdHJpbmcgRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjptZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkK
IHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIg
c3RhdHVzIG1lc3NhZ2Ugd2hlbiB0aGUgbWVkaWEgaXMgbG9hZGluZyIpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0
KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6Om1lZGlhRWxlbWVudExpdmVC
cm9hZGNhc3RTdGF0ZVRleHQoKQogewogICAgIHJldHVybiBVSV9TVFJJTkcoIkxpdmUgQnJvYWRj
YXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB3YXRjaGluZyBhIGxp
dmUgYnJvYWRjYXN0Iik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2Fs
aXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQorU3RyaW5n
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVu
dFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxl
bWVudCIpCiAgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImF1ZGlvIGVsZW1lbnQgY29udHJvbGxl
ciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGF1ZGlvIGVsZW1lbnQgY29u
dHJvbGxlciIpOwpAQCAtODUwLDcgKzc2OSw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmxvY2FsaXplZE0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25z
dCBTdHJpbmcmIG5hbWUpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpsb2Nh
bGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQogICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJhdWRpbyBlbGVtZW50IHBsYXliYWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJh
Y2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGF1ZGlvIGVsZW1lbnQgY29udHJvbGxl
ciIpOwpAQCAtODkzLDcgKzgxMiw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omxv
Y2FsaXplZE0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCitTdHJp
bmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlw
dGlvbihmbG9hdCB0aW1lKQogewogICAgIGlmICghaXNmaW5pdGUodGltZSkpCiAgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoImluZGVmaW5pdGUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IgYW4gaW5kZWZpbml0ZSBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUiKTsKQEAgLTkx
Myw1MiArODMyLDQxIEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE0K
ICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygiJTEkZCBzZWNvbmRz
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFs
dWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHMpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQorU3RyaW5nIERlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0
KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJ2YWx1ZSBtaXNzaW5nIiwgIlZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgcmVxdWlyZWQgZm9ybSBjb250cm9sIGVsZW1lbnRzIHRoYXQgaGF2ZSBubyB2
YWx1ZSIpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVz
c2FnZVR5cGVNaXNtYXRjaFRleHQoKQorU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKIHsKICAgICByZXR1cm4gVUlf
U1RSSU5HKCJ0eXBlIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9y
bSBjb250cm9scyB3aXRoIGEgdmFsdWUgbm90IG1hdGNoaW5nIHR5cGUiKTsKIH0KIAotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hU
ZXh0KCkKK1N0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnZhbGlkYXRpb25NZXNz
YWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygicGF0dGVy
biBtaXNtYXRjaCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
cmVxdWlyaW5nIGEgY29uc3RyYWluZWQgdmFsdWUgYWNjb3JkaW5nIHRvIHBhdHRlcm4iKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25n
VGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojp2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KCkKIHsKICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0b28gbG9uZyIsICJW
YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUg
bG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpCitT
dHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojp2YWxpZGF0aW9uTWVzc2FnZVJhbmdl
VW5kZXJmbG93VGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygicmFuZ2UgdW5kZXJmbG93
IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVl
IGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKQorU3RyaW5nIERl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93
VGV4dCgpCiB7CiAgICAgcmV0dXJuIFVJX1NUUklORygicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRo
YW4gYWxsb3dlZCBtYXhpbXVtIik7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgpCitTdHJpbmcgRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5Ojp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKQogewog
ICAgIHJldHVybiBVSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90IHJlc3BlY3RpbmcgdGhlIHN0
ZXAgYXR0cmlidXRlIik7CiB9CiAKLS8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKLWJvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGxpbmtI
YXNoKQotewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pc0xpbmtWaXNpdGVkKGxp
bmtIYXNoKTsKLX0KLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFZpc2l0ZWRMaW5r
KFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGxpbmtIYXNoKQotewotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmFkZFZpc2l0ZWRMaW5rKGxpbmtIYXNoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRF
R0lFUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25T
dHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRM
b2NhbGl6YXRpb25TdHJhdGVneS5oCShyZXZpc2lvbiA4MjM1OSkJKGZyb20gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDo4MjM1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAorI2RlZmluZSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNf
aAorCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
b2tpZXNTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5TdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TG9jYWxpemF0aW9uU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3Ry
YXRlZ3kuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0
ZWRMaW5rU3RyYXRlZ3kgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
KyAgICAKK3ByaXZhdGU6CisgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzKCk7CisgICAgCisgICAg
Ly8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCisgICAgdmlydHVhbCBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSogY3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3ko
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0
ZWRMaW5rU3RyYXRlZ3koKTsKKworICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQorICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOworCisgICAgLy8gV2ViQ29yZTo6
UGx1Z2luU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+Jik7CisKKyAgICAvLyBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJh
dGVneSAgICAKKyAgICB2aXJ0dWFsIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCk7CisgICAg
dmlydHVhbCBTdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBz
dWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlQnV0dG9u
Q2hvb3NlRmlsZUxhYmVsKCk7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNl
bGVjdGVkTGFiZWwoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0RGV0YWlsc1N1bW1hcnlU
ZXh0KCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgU3RyaW5nIGNvcHlJbWFnZVVu
a25vd25GaWxlTGFiZWwoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
IHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2so
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJv
YXJkKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5O
ZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9h
ZEltYWdlVG9EaXNrKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29w
eUltYWdlVG9DbGlwYm9hcmQoKTsKKyNpZiBQTEFURk9STShRVCkKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpOworI2VuZGlmCisg
ICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3co
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCk7CisgICAgdmly
dHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7CisgICAgdmlydHVhbCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU3RvcCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1JlbG9hZCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCk7CisjaWYgUExB
VEZPUk0oR1RLKQorICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZSgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lucHV0TWV0aG9kcygpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpOworICAgIHZp
cnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBp
bmcoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOworICAgIHZpcnR1YWwgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZp
cnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCk7CisgICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCk7CisgICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCk7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTdGFydFNwZWFraW5nKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU3RvcFNwZWFraW5nKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCk7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoYm9vbCBzaG93KTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCk7CisgICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpOworICAgIHZpcnR1YWwgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0NoYW5nZUJhY2soY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZyk7CisjZW5k
aWYKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2lu
ZG93KCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5O
ZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5Vmlk
ZW9MaW5rVG9DbGlwYm9hcmQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCk7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWVkaWFNdXRlKCk7CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCisg
ICAgdmlydHVhbCBTdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCk7CisgICAg
dmlydHVhbCBTdHJpbmcgc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpOworICAgIHZpcnR1
YWwgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpOworICAgIHZpcnR1
YWwgU3RyaW5nIEFYV2ViQXJlYVRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWExpbmtUZXh0
KCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhMaXN0TWFya2VyVGV4dCgpOworICAgIHZpcnR1YWwg
U3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhIZWFkaW5nVGV4
dCgpOworICAgIHZpcnR1YWwgU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpOworICAg
IHZpcnR1YWwgU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIFN0cmluZyBBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNv
bnN0IFN0cmluZyYgYXJpYVR5cGUpOworI2VuZGlmCisgICAgdmlydHVhbCBTdHJpbmcgQVhCdXR0
b25BY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZl
cmIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWFRleHRGaWVsZEFjdGlvblZlcmIoKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgU3Ry
aW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBTdHJpbmcgQVhNZW51TGlz
dFBvcHVwQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgU3RyaW5nIEFYTGlua0FjdGlvblZlcmIo
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpOworICAgIHZpcnR1YWwg
U3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgbXVsdGlwbGVG
aWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyB1bmtub3duRmlsZVNpemVUZXh0KCk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZpcnR1YWwg
U3RyaW5nIHVwbG9hZEZpbGVUZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgYWxsRmlsZXNUZXh0
KCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBTdHJpbmcga2V5Z2Vu
TWVudUl0ZW01MTIoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBrZXlnZW5NZW51SXRlbTEwMjQoKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCk7CisjZW5kaWYK
KyAgICB2aXJ0dWFsIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhRWxl
bWVudExvYWRpbmdTdGF0ZVRleHQoKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVsZW1lbnRM
aXZlQnJvYWRjYXN0U3RhdGVUZXh0KCk7CisgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkTWVk
aWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKTsK
KworICAgIHZvaWQgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOworCisgICAgYm9vbCBtX3BsdWdpbkNh
Y2hlSXNQb3B1bGF0ZWQ7CisgICAgYm9vbCBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zOworICAgIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBtX2NhY2hlZFBsdWdpbnM7CisKKyAgICAvLyBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQo
V2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
VmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMp
CisKKyNlbmRpZiAvLyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmgJKHJl
dmlzaW9uIDgyMzU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQwICsyMywyMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzX2gKLSNkZWZpbmUgV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKKyNpZm5kZWYgRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5X2gKKyNkZWZpbmUgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5X2gKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVzU3RyYXRlZ3kuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2ll
cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luU3RyYXRlZ3kuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0xvY2FsaXphdGlvblN0cmF0ZWd5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9WaXNpdGVkTGlu
a1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSAiTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvY2FsaXph
dGlvblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xh
c3MgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5IDogcHVibGljIExvY2FsaXphdGlvblN0cmF0
ZWd5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgCi1wcml2
YXRlOgotICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llcygpOwotICAgIAotICAgIC8vIFdlYkNvcmU6
OlBsYXRmb3JtU3RyYXRlZ2llcwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0
cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9j
YWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7Ci0gICAgdmly
dHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0
ZWd5KCk7Ci0KLSAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLQotICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0
ZWd5Ci0gICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiYpOworICAgIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneSgpOwogCi0gICAgLy8g
V2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kgICAgCitwcml2YXRlOgogICAgIHZpcnR1YWwg
U3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKTsKICAgICB2aXJ0dWFsIFN0cmluZyByZXNldEJ1
dHRvbkRlZmF1bHRMYWJlbCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHNlYXJjaGFibGVJbmRleElu
dHJvZHVjdGlvbigpOwpAQCAtMTg0LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBT
dHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCk7CiAgICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuS2V5
Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpOwogI2VuZGlmCi0gICAgdmlydHVhbCBT
dHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVs
ZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFFbGVtZW50
TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1l
ZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJik7CkBAIC0xOTcsMjAgKzE3OCwx
MCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VV
bmRlcmZsb3dUZXh0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZU92ZXJmbG93VGV4dCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3Rl
cE1pc21hdGNoVGV4dCgpOwotCi0gICAgdm9pZCBwb3B1bGF0ZVBsdWdpbkNhY2hlKCk7Ci0KLSAg
ICBib29sIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZDsKLSAgICBib29sIG1fc2hvdWxkUmVmcmVz
aFBsdWdpbnM7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2lu
czsKLQotICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOwotICAg
IHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gpOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAotI2VuZGlmIC8vIFdl
YlBsYXRmb3JtU3RyYXRlZ2llc19oCisjZW5kaWYgLy8gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTksNCArNjk5LDExIEBAIFN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQKIAogI2VuZGlmIC8vIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQogCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikKK1N0
cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQoreworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgJKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4
dChjb25zdCBTdHJpbmcmIG1heGltdW0pOwogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0
ZXBNaXNtYXRjaFRleHQoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIHN0ZXApOwog
Ci0jaWYgUExBVEZPUk0oTUFDKQorCisjZGVmaW5lIFVJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0
aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5nKQorI2RlZmluZSBVSV9TVFJJTkdf
S0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKGtl
eSkKKwogICAgIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KTsKLSNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gODI0NjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKIAor
I2luY2x1ZGUgIkRlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBQbGF0Zm9ybVN0cmF0ZWdpZXMqIHNfcGxhdGZvcm1TdHJhdGVnaWVz
OwpAQCAtNTEsNyArNTMsMTIgQEAgdm9pZCBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoUGxhdGZvcm1T
dHJhdAogICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBoZXJlIGluIHJlbGVhc2UgYnVpbGRzLgog
ICAgIEFTU0VSVChwbGF0Zm9ybVN0cmF0ZWdpZXMgIT0gc19wbGF0Zm9ybVN0cmF0ZWdpZXMpOwog
fQotICAgIAorCitMb2NhbGl6YXRpb25TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVMb2NhbGl6YXRpb25TdHJhdGVneSgpCit7CisgICAgcmV0dXJuIG5ldyBEZWZhdWx0TG9jYWxp
emF0aW9uU3RyYXRlZ3k7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIENvb2tpZXNTdHJhdGVn
eSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1YWwgUGx1Z2luU3RyYXRl
Z3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgPSAwOwotICAgIHZpcnR1YWwgTG9jYWxpemF0aW9u
U3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkgPSAwOworICAgIHZpcnR1YWwg
TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7CiAgICAg
dmlydHVhbCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkg
PSAwOwogCiAgICAgQ29va2llc1N0cmF0ZWd5KiBtX2Nvb2tpZXNTdHJhdGVneTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHAJKHJldmlzaW9uIDgyMzU5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9j
YWxpemVkU3RyaW5nc01hYy5tbTo4MjM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCisKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgbG9jYWxpemVkU3RyaW5n
KGNvbnN0IGNoYXIqIGtleSkKK3sKKyAgICBzdGF0aWMgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1
bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07CisKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIAorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
a2V5U3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwg
a2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBOU1N0
cmluZyAqbm90Rm91bmQgPSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKKyAgICBOU1N0
cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KE5TU3RyaW5nICop
a2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07CisKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXph
YmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAJKHJldmlzaW9uIDgyMzU5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywyOCArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkxvY2FsaXplZFN0
cmluZ3MuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAKLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKIHsKLSAgICBz
dGF0aWMgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmllcjpA
ImNvbS5hcHBsZS5XZWJDb3JlIl07Ci0KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBOU1N0cmluZyAqbm90Rm91bmQgPSBAImxvY2FsaXpl
ZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2Nh
bGl6ZWRTdHJpbmdGb3JLZXk6KE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZv
dW5kIHRhYmxlOm5pbF07Ci0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RG
b3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBr
ZXkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85
MTE5NDA1PiBXaW46IFdlYktpdDIgbmVlZHMgdG8gYmUgbWFkZSBsb2NhbGl6YWJsZQorICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KGtleSwgc3RybGVuKGtleSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDExLTAz
LTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlZmF1bHQgbG9jYWxpemF0aW9uIHN0cmF0
ZWd5IHRoYXQgY2FuIGJlIHNoYXJlZCBieSBXZWJLaXQxIGFuZCBXZWJLaXQyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzQwNgorCisgICAgICAgICog
U2hhcmVkL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmVk
IGluIGZhdm9yIG9mIHVzaW5nIFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oIGRpcmVjdGx5Lgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbToKKyAgICAgICAgVXNlIFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oIGRp
cmVjdGx5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIFJlbW92ZSBsb2NhbGl6YXRpb24gc3RyYXRl
Z3kgb3ZlcnJpZGUgaW4gZmF2b3Igb2YgdXNpbmcgbmV3IGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2lu
L1dlYktpdDIudmNwcm9qOgorICAgICAgICBSZW1vdmUgV2ViTG9jYWxpemFibGVTdHJpbmdzLmgK
KworMjAxMS0wMy0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxMS0w
My0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
ODI0NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtMjYxLDcgKzI2MSw2IEBAIGxpYldlYktpdDJfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1h
Z2UuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIFwKLQlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTG9jYWxpemFibGVTdHJpbmdzLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk51
bWJlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBcCiAgICAgU2hh
cmVkL1dlYkdyYXBoaWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuaCBcCi0gICAg
U2hhcmVkL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5oIFwKICAgICBTaGFyZWQvV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZS5oIFwKICAgICBTaGFyZWQvV2ViTnVtYmVyLmggXAogICAgIFNoYXJlZC9XZWJP
cGVuUGFuZWxQYXJhbWV0ZXJzLmggXApJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCShyZXZpc2lvbiA4MjQ2MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NTaGlt
LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiV2ViTG9jYWxpemFibGVT
dHJpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8ZGxmY24uaD4KICNpbXBvcnQgPHd0
Zi9IYXNoU2V0Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTG9jYWxpemFibGVT
dHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5oCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NfaAotI2RlZmluZSBXZWJM
b2NhbGl6YWJsZVN0cmluZ3NfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0KLSNkZWZpbmUgVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2Fs
aXplZFN0cmluZyhzdHJpbmcpCi0jZGVmaW5lIFVJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRl
c2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQotCi0jZWxzZQotCi0vLyBG
SVhNRTogPHJkYXI6Ly9wcm9ibGVtLzkxMTk0MDU+IFdpbjogV2ViS2l0MiBuZWVkcyB0byBiZSBt
YWRlIGxvY2FsaXphYmxlCi0KLSNkZWZpbmUgVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24p
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcsIHN0cmxlbihzdHJpbmcpKQotI2RlZmluZSBV
SV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHN0cmluZywgc3RybGVuKHN0cmluZykpCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV2ViTG9j
YWxpemFibGVTdHJpbmdzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0JKHJldmlzaW9uIDgyNDYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW1w
b3J0ICJXZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQg
IldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKLSNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3Ry
aW5ncy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQkocmV2aXNpb24gODI0NjEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKLSNpbXBvcnQgIldlYkxvY2FsaXphYmxlU3RyaW5n
cy5oIgogI2ltcG9ydCAiV0tWaWV3LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRT
dHJpbmdzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw3
ICsxMTA2LDYgQEAKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQz
MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQ0
MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNFNTE4RTgxMzQyMjUxRDAwMTlFNjk3IC8qIFdl
YkxvY2FsaXphYmxlU3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMz
Qzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMkRCQ0Y1RTAzNzBBREVFMDBDOTE3ODMgLyogV2ViS2l0MlByZWZpeC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTAzLDcgKzIxMDIsNiBAQAogCQkJCUJDQ0Y2QUJBMTJDOTFFRjkw
MDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAgKi8sCiAJCQkJQkNDRjZBQkIxMkM5MUVGOTAwOEY5QzM1
IC8qIFdlYkltYWdlLmggKi8sCiAJCQkJQzAzMzdERDIxMjdBMkEwRTAwOEZGNEY0IC8qIFdlYktl
eWJvYXJkRXZlbnQuY3BwICovLAotCQkJCTFDRTUxOEU4MTM0MjI1MUQwMDE5RTY5NyAvKiBXZWJM
b2NhbGl6YWJsZVN0cmluZ3MuaCAqLywKIAkJCQk5MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyog
V2ViTWVtb3J5U2FtcGxlci5jcHAgKi8sCiAJCQkJOTA1NjIwRTkxMkJDMjQ4QjAwMDc5OUI2IC8q
IFdlYk1lbW9yeVNhbXBsZXIuaCAqLywKIAkJCQlDMDMzN0RBRjEyN0EyOEQwMDA4RkY0RjQgLyog
V2ViTW91c2VFdmVudC5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTMgKzMyLDggQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgotI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNF
KENGKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ4LDMzICs0Myw2IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gV2UgY2FuJ3Qg
dXNlIFN0cmluZzo6Zm9ybWF0IGZvciB0d28gcmVhc29uczoKLS8vICAxKSBJdCBkb2Vzbid0IGhh
bmRsZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZy4KLS8vICAyKSBJ
dCBkb2Vzbid0IGhhbmRsZSB0aGUgJTIkZCBzeW50YXguCi0vLyBOb3RlIHRoYXQgYmVjYXVzZSB8
Zm9ybWF0fCBpcyB1c2VkIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHZhX3N0YXJ0LCBpdCBj
YW5ub3QgYmUgYSByZWZlcmVuY2UKLS8vIHR5cGUgYWNjb3JkaW5nIHRvIHNlY3Rpb24gMTguNy8z
IG9mIHRoZSBDKysgTjE5MDUgc3RhbmRhcmQuCi1zdGF0aWMgU3RyaW5nIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCi17Ci0jaWYgVVNFKENGKQotICAgIHZhX2xpc3Qg
YXJndW1lbnRzOwotICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0Q0YsIGZvcm1hdC5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0
cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0
KCksIGFyZ3VtZW50cykpOwotICAgIHZhX2VuZChhcmd1bWVudHMpOwotICAgIHJldHVybiByZXN1
bHQuZ2V0KCk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICB2YV9saXN0IGFyZ3VtZW50czsKLSAg
ICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7Ci0gICAgUVN0cmluZyByZXN1bHQ7Ci0gICAg
cmVzdWx0LnZzcHJpbnRmKGZvcm1hdC5sYXRpbjEoKS5kYXRhKCksIGFyZ3VtZW50cyk7Ci0gICAg
dmFfZW5kKGFyZ3VtZW50cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZm9ybWF0OwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFdlYlBsYXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7CkBAIC05Nywx
MSArNjUsNiBAQCBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjCiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKLUxvY2FsaXphdGlvblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkKLXsKLSAgICByZXR1cm4gdGhpczsK
LX0KLQogVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVW
aXNpdGVkTGlua1N0cmF0ZWd5KCkKIHsKICAgICByZXR1cm4gdGhpczsKQEAgLTExNiwyNSArNzks
NiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiAKIC8vIFBsdWdp
blN0cmF0ZWd5CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNh
Y2hlKCkKLXsKLSAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlzRW1wdHkoKSk7Ci0gICAgCi0gICAg
VmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnM7Ci0gICAgCi0gICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJlPwotICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBs
dWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2luczo6
UmVwbHkocGx1Z2lucyksIDApOwotCi0gICAgbV9jYWNoZWRQbHVnaW5zLnN3YXAocGx1Z2lucyk7
Ci0gICAgCi0gICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOwotICAgIG1fcGx1Z2lu
Q2FjaGVJc1BvcHVsYXRlZCA9IHRydWU7Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWZyZXNoUGx1Z2lucygpCiB7CiAgICAgbV9jYWNoZWRQbHVnaW5zLmNsZWFyKCk7CkBAIC0x
NTAsODA1ICs5NCwyNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5m
CiAgICAgcGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2luczsKIH0KIAotLy8gTG9jYWxpemF0aW9uU3Ry
YXRlZ3kgICAgCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlucHV0RWxlbWVudEFs
dFRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfS0VZKCJTdWJtaXQiLCAiU3VibWl0IChp
bnB1dCBlbGVtZW50KSIsICJhbHQgdGV4dCBmb3IgPGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFs
dCwgdGl0bGUsIG9yIHZhbHVlIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJSZXNl
dCIsICJkZWZhdWx0IGxhYmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdl
cyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJ
bnRyb2R1Y3Rpb24oKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlRoaXMgaXMgYSBzZWFyY2hh
YmxlIGluZGV4LiBFbnRlciBzZWFyY2gga2V5d29yZHM6ICIsCi0gICAgICAgICJ0ZXh0IHRoYXQg
YXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgbmVhcmx5LW9ic29sZXRlIHdlYiBwYWdlcyBpbiB0aGUg
Zm9ybSBvZiBhICdzZWFyY2hhYmxlIGluZGV4JyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkcoIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVsIGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3Jt
cyBvbiB3ZWIgcGFnZXMiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Zmls
ZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ2hvb3Nl
IEZpbGUiLCAidGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyIpOwotfQot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRM
YWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygibm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0
IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmls
ZSBpcyBzZWxlY3RlZCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZh
dWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJEZXRhaWxz
IiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4gaXQgaGFzIG5vIDxzdW1t
YXJ5PiBjaGlsZCIpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7Ci19Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HKCJPcGVuIExpbmsgaW4gTmV3IFdpbmRvdyIsICJPcGVuIGluIE5ldyBXaW5kb3cgY29u
dGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJEb3dubG9hZCBMaW5rZWQgRmlsZSIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0
IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5H
KCJDb3B5IExpbmsiLCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3
V2luZG93KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEltYWdlIGluIE5ldyBXaW5k
b3ciLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2Fk
SW1hZ2VUb0Rpc2soKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkRvd25sb2FkIEltYWdlIiwg
IkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkK
LXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4
dCBtZW51IGl0ZW0iKTsKLX0KLQotI2lmIFBMQVRGT1JNKFFUKQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQot
ewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkgSW1hZ2UgQWRkcmVzcyIsICJDb3B5IEltYWdl
IEFkZHJlc3MgbWVudSBpdGVtIik7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIk9wZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIFZpZGVv
IGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQot
ewotICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyIsICJPcGVu
IEF1ZGlvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xp
cGJvYXJkKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IFZpZGVvIEFkZHJlc3MiLCAi
Q29weSBWaWRlbyBBZGRyZXNzIExvY2F0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xp
bmtUb0NsaXBib2FyZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBBdWRpbyBBZGRy
ZXNzIiwgIkNvcHkgQXVkaW8gQWRkcmVzcyBMb2NhdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dn
bGVNZWRpYUNvbnRyb2xzKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb250cm9scyIsICJN
ZWRpYSBDb250cm9scyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIkxvb3AiLCAiTWVkaWEgTG9vcCBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdF
bnRlclZpZGVvRnVsbHNjcmVlbigpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiRW50ZXIgRnVs
bHNjcmVlbiIsICJWaWRlbyBFbnRlciBGdWxsc2NyZWVuIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlh
UGxheSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUGxheSIsICJNZWRpYSBQbGF5IGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlBhdXNl
IiwgIk1lZGlhIFBhdXNlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiTXV0ZSIsICJNZWRpYSBNdXRlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5G
cmFtZUluTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGlu
IE5ldyBXaW5kb3ciLCAiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0NvcHkoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNvcHkiLCAiQ29weSBjb250ZXh0IG1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdHb0JhY2soKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkJhY2siLCAiQmFjayBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkZv
cndhcmQiLCAiRm9yd2FyZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkKLXsKLSAgICByZXR1cm4g
VUlfU1RSSU5HKCJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HKCJSZWxvYWQiLCAiUmVsb2FkIGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0N1
dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ3V0IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdQYXN0ZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUGFzdGUiLCAiUGFzdGUgY29udGV4
dCBtZW51IGl0ZW0iKTsKLX0KLQotI2lmIFBMQVRGT1JNKEdUSykKLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVsZXRlKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAiRGVsZXRlIjsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiSW5wdXQgTWV0aG9kcyI7Ci19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJVbmljb2RlIjsKLX0KLQotI2VuZGlmCi0K
LSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuICJTZWxlY3QgQWxsIjsKLX0KLQotI2VuZGlmCi0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5k
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJObyBHdWVzc2VzIEZvdW5kIiwgIk5vIEd1ZXNz
ZXMgRm91bmQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIklnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBt
ZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTGVhcm4g
U3BlbGxpbmciLCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkK
LXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWFyY2ggaW4gR29vZ2xlIiwgIlNlYXJjaCBpbiBH
b29nbGUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYg
c2VsZWN0ZWRTdHJpbmcpCi17Ci0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9v
ayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7Ci0jZWxzZQotICAgIHJldHVy
biBVSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHNl
bGVjdGVkU3RyaW5nKTsKLSNlbmRpZgotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygi
T3BlbiBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkK
LXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJJZ25vcmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1h
ciBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRleHQg
c3ViLW1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCi17Ci0gICAgaWYgKHNo
b3cpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIi
LCAibWVudSBpdGVtIHRpdGxlIik7Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTcGVsbGlu
ZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCi17Ci0gICAg
cmV0dXJuIFVJX1NUUklORygiQ2hlY2sgRG9jdW1lbnQgTm93IiwgIkNoZWNrIHNwZWxsaW5nIGNv
bnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5n
IHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmco
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZyIs
ICJDaGVjayBncmFtbWFyIHdpdGggc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkZvbnQiLCAiRm9udCBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQm9sZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQm9sZCIsICJCb2xkIGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0l0YWxpYygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSXRhbGljIiwg
Ikl0YWxpYyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkcoIlVuZGVybGluZSIsICJVbmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiT3V0bGluZSIsICJPdXRsaW5lIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJQ
YXJhZ3JhcGggRGlyZWN0aW9uIiwgIlBhcmFncmFwaCBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVu
dSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWxl
Y3Rpb24gRGlyZWN0aW9uIiwgIlNlbGVjdGlvbiBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBp
dGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0RlZmF1bHREaXJlY3Rpb24oKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkRlZmF1bHQi
LCAiRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdo
dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTGVmdCB0byBSaWdodCIsICJMZWZ0IHRvIFJp
Z2h0IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkcoIlNlYXJjaCBpbiBTcG90bGlnaHQiLCAiU2VhcmNoIGluIFNwb3RsaWdodCBjb250ZXh0
IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdTaG93Rm9udHMoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgRm9u
dHMiLCAiU2hvdyBmb250cyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIlN0eWxlcy4uLiIsICJTdHlsZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0Nv
bG9ycygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBDb2xvcnMiLCAiU2hvdyBjb2xv
cnMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklO
RygiU3BlZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU3RhcnQgU3BlYWtpbmciLCAiU3RhcnQgc3BlYWtp
bmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJTdG9wIFNwZWFraW5nIiwgIlN0b3Agc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29y
cmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ29y
cmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IiwgIkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGlj
YWxseSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygiU3Vic3RpdHV0aW9ucyIsICJTdWJzdGl0dXRpb25zIGNvbnRleHQgc3ViLW1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29sIHNob3cpCi17Ci0gICAgaWYgKHNob3cpIAot
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVt
IHRpdGxlIik7Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSGlkZSBTdWJzdGl0dXRpb25zIiwgIm1l
bnUgaXRlbSB0aXRsZSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygi
U21hcnQgQ29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0UXVvdGVzKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBRdW90ZXMiLCAiU21h
cnQgUXVvdGVzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCkKLXsKLSAgICByZXR1cm4g
VUlfU1RSSU5HKCJTbWFydCBEYXNoZXMiLCAiU21hcnQgRGFzaGVzIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z1NtYXJ0TGlua3MoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNt
YXJ0IExpbmtzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiVGV4dCBSZXBsYWNlbWVudCIsICJUZXh0IFJlcGxhY2VtZW50IGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoIlRyYW5zZm9ybWF0aW9ucyIsICJUcmFuc2Zvcm1hdGlvbnMgY29udGV4dCBzdWItbWVudSBp
dGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ01ha2VVcHBlckNhc2UoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk1ha2UgVXBwZXIg
Q2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTWFrZSBMb3dlciBDYXNlIiwgIk1ha2UgTG93ZXIg
Q2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJDYXBpdGFsaXplIiwgIkNhcGl0YWxpemUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFj
ayhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIHJlcGxhY2VkU3RyaW5nOwotfQotCi0jZW5kaWYKLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoIkluc3BlY3QgRWxlbWVudCIsICJJbnNwZWN0IEVsZW1lbnQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVT
KQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51Tm9SZWNlbnRTZWFy
Y2hlc1RleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk5vIHJlY2VudCBzZWFyY2hlcyIs
ICJMYWJlbCBmb3Igb25seSBpdGVtIGluIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcg
b24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgd2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVy
Zm9ybWVkIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVS
ZWNlbnRTZWFyY2hlc1RleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlJlY2VudCBTZWFy
Y2hlcyIsICJsYWJlbCBmb3IgZmlyc3QgaXRlbSBpbiB0aGUgbWVudSB0aGF0IGFwcGVhcnMgd2hl
biBjbGlja2luZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB1c2VkIGFzIGVtYmVkZGVkIG1l
bnUgdGl0bGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVu
dUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDbGVh
ciBSZWNlbnQgU2VhcmNoZXMiLCAibWVudSBpdGVtIGluIFJlY2VudCBTZWFyY2hlcyBtZW51IHRo
YXQgZW1wdGllcyBtZW51J3MgY29udGVudHMiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6QVhXZWJBcmVhVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSFRNTCBj
b250ZW50IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igd2ViIGFyZWEiKTsK
LX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaW5rVGV4dCgpCi17Ci0gICAg
cmV0dXJuIFVJX1NUUklORygibGluayIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24g
Zm9yIGxpbmsiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhMaXN0TWFy
a2VyVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygibGlzdCBtYXJrZXIiLCAiYWNjZXNz
aWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBsaXN0IG1hcmtlciIpOwotfQotCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEltYWdlTWFwVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygiaW1hZ2UgbWFwIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
aW1hZ2UgbWFwIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSGVhZGlu
Z1RleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoImhlYWRpbmciLCAiYWNjZXNzaWJpbGl0
eSByb2xlIGRlc2NyaXB0aW9uIGZvciBoZWFkaW5ncyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpBWERlZmluaXRpb25MaXN0VGVybVRleHQoKQotewotICAgIHJldHVybiBV
SV9TVFJJTkcoInRlcm0iLCAidGVybSB3b3JkIG9mIGEgZGVmaW5pdGlvbiIpOwotfQotCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoImRlZmluaXRpb24iLCAiZGVmaW5pdGlvbiBwaHJh
c2UiKTsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlhVHlwZSkKLXsKLSAg
ICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0IikKLSAgICAgICAgcmV0dXJu
IFVJX1NUUklORygiYWxlcnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0
cyBhcyBhbiBhbGVydC4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFs
ZXJ0RGlhbG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYWxlcnQgZGlhbG9nIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYWxlcnQgZGlhbG9nLiIp
OwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uRGlhbG9nIikKLSAgICAgICAg
cmV0dXJuIFVJX1NUUklORygiZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0
aGF0IGFjdHMgYXMgYW4gZGlhbG9nLiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxp
Y2F0aW9uTG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygibG9nIiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBjb25zb2xlIGxvZy4iKTsKLSAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiKQotICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJtYXJxdWVlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMg
YXMgYSBtYXJxdWVlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlv
blN0YXR1cyIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFwcGxpY2F0aW9uIHN0YXR1cyIs
ICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgc3RhdHVzIHVwZGF0
ZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25UaW1lciIpCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRpbWVyIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBn
cm91cCB0aGF0IGFjdHMgYXMgYW4gdXBkYXRpbmcgdGltZXIuIik7ICAgIAotICAgIGlmIChhcmlh
VHlwZSA9PSAiQVJJQURvY3VtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZG9jdW1l
bnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGRvY3VtZW50
LiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudEFydGljbGUiKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcnRpY2xlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBn
cm91cCB0aGF0IGFjdHMgYXMgYW4gYXJ0aWNsZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09
ICJBUklBRG9jdW1lbnROb3RlIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygibm90ZSIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgbm90ZSBpbiBhIGRvY3Vt
ZW50LiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudFJlZ2lvbiIpCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJlZ2lvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkg
Z3JvdXAgdGhhdCBhY3RzIGFzIGEgZGlzdGluY3QgcmVnaW9uIGluIGEgZG9jdW1lbnQuIik7ICAg
IAotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQXBwbGljYXRpb24iKQotICAgICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJhcHBsaWNhdGlvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkg
Z3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFwcGxpY2F0aW9uLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5
cGUgPT0gIkFSSUFMYW5kbWFya0Jhbm5lciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImJh
bm5lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgYmFubmVy
LiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnki
KQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJjb21wbGVtZW50YXJ5IiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSByZWdpb24gb2YgY29tcGxlbWVudGFyeSBp
bmZvcm1hdGlvbi4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtDb250
ZW50SW5mbyIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImNvbnRlbnQiLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgY29udGVudC4iKTsgICAgCi0gICAgaWYg
KGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtNYWluIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklO
RygibWFpbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBpcyB0aGUgbWFpbiBw
b3J0aW9uIG9mIHRoZSB3ZWJzaXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFM
YW5kbWFya05hdmlnYXRpb24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJuYXZpZ2F0aW9u
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIHRoZSBtYWluIG5h
dmlnYXRpb24gZWxlbWVudHMgb2YgYSB3ZWJzaXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUg
PT0gIkFSSUFMYW5kbWFya1NlYXJjaCIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlYXJj
aCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBhIHNlYXJjaCBm
ZWF0dXJlIG9mIGEgd2Vic2l0ZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBVXNl
ckludGVyZmFjZVRvb2x0aXAiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0b29sdGlwIiwg
IkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSB0b29sdGlwLiIpOyAg
ICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFUYWJQYW5lbCIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkcoInRhYiBwYW5lbCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBj
b250YWlucyB0aGUgY29udGVudCBvZiBhIHRhYi4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFS
SUFEb2N1bWVudE1hdGgiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtYXRoIiwgIkFuIEFS
SUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIG1hdGhlbWF0aWNhbCBzeW1ib2xz
LiIpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpBWEJ1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoInByZXNzIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVu
IGEgYnV0dG9uIGlzIHByZXNzZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpIAot
ewotICAgIHJldHVybiBVSV9TVFJJTkcoInNlbGVjdCIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlv
biB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHJhZGlvIGJ1dHRvbiBpcyBjbGlja2VkLCBhcyB1c2Vk
IGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJhY3RpdmF0
ZSIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIHRleHQg
ZmllbGQgaXMgc2VsZWN0ZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQot
ewotICAgIHJldHVybiBVSV9TVFJJTkcoInVuY2hlY2siLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rp
b24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBjaGVja2VkIGNoZWNrYm94IGlzIGNsaWNrZWQsIGFz
IHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFVJX1NU
UklORygiY2hlY2siLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdo
ZW4gYW4gdW5jaGVja2VkIGNoZWNrYm94IGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJp
bGl0eSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0
aW9uVmVyYigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInNlbGVjdCI7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlv
blZlcmIoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJzZWxlY3QiOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKCkKLXsK
LSAgICByZXR1cm4gVUlfU1RSSU5HKCJqdW1wIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRo
YXQgd2lsbCBvY2N1ciB3aGVuIGEgbGluayBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2li
aWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdp
blRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJl
bCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWdpbiBpcyBtaXNzaW5nIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNoZWRQbHVnaW5UZXh0KCkKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HKCJQbHVnLWluIEZhaWx1cmUiLCAiTGFiZWwgdGV4dCB0byBiZSB1c2VkIGlm
IHBsdWdpbiBob3N0IHByb2Nlc3MgaGFzIGNyYXNoZWQiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZp
bGVzKQotewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlZCBm
aWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZpbGVzIHNlbGVjdGVkIGlu
IGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBsZSBmaWxlcyIpLCBudW1i
ZXJPZkZpbGVzKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dW5rbm93bkZp
bGVTaXplVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiVW5rbm93biIsICJVbmtub3du
IGZpbGVzaXplIEZUUCBkaXJlY3RvcnkgbGlzdGluZyBpdGVtIik7Ci19Ci0KLSNpZiBQTEFURk9S
TShXSU4pCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwbG9hZEZpbGVUZXh0KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAidXBsb2FkIjsKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsRmlsZXNUZXh0KCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKLX0KLQotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdlbk1lbnVJ
dGVtNTEyKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCI1MTIgKExvdyBHcmFkZSkiLCAiTWVu
dSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVwIG1lbnUiKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuTWVudUl0ZW0xMDI0KCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HKCIxMDI0IChNZWRpdW0gR3JhZGUpIiwgIk1lbnUgaXRlbSB0aXRsZSBmb3IgS0VZR0VO
IHBvcC11cCBtZW51Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmtleWdl
bk1lbnVJdGVtMjA0OCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiMjA0OCAoSGlnaCBHcmFk
ZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVwIG1lbnUiKTsKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBX
VEY6OlN0cmluZyYgaG9zdCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJLZXkgZnJvbSA8aG9z
dG5hbWU+IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRh
ZyIpLnJlcGxhY2UoIjxob3N0bmFtZT4iLCBob3N0KTsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZm9ybWF0
IHRoZSBudW1iZXJzIGNvcnJlY3RseS4gSW4gTWFjIFdlYktpdCwgd2UgdXNlZCArW05TTnVtYmVy
Rm9ybWF0dGVyIGxvY2FsaXplZFN0cmluZ0Zyb21OdW1iZXI6bnVtYmVyU3R5bGU6XS4KLSAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQg
cGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBzdWZmaXggZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNl
cyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIkxvYWRpbmcuLi4iLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMg
bWVzc2FnZSB3aGVuIHRoZSBtZWRpYSBpcyBsb2FkaW5nIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkcoIkxpdmUgQnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIg
c3RhdHVzIG1lc3NhZ2Ugd2hlbiB3YXRjaGluZyBhIGxpdmUgYnJvYWRjYXN0Iik7Ci19Ci0KLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRT
dHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1l
bnQiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRy
b2xsZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJu
IFVJX1NUUklORygidmlkZW8gZWxlbWVudCBjb250cm9sbGVyIiwgImFjY2Vzc2liaWxpdHkgcm9s
ZSBkZXNjcmlwdGlvbiBmb3IgdmlkZW8gZWxlbWVudCBjb250cm9sbGVyIik7Ci0gICAgaWYgKG5h
bWUgPT0gIk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtdXRlIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbXV0ZSBidXR0b24iKTsKLSAgICBpZiAo
bmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygidW5tdXRl
IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdHVybiBtdXRlIG9mZiBidXR0
b24iKTsKLSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9T
VFJJTkcoInBsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBwbGF5IGJ1
dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkcoInBhdXNlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcGF1
c2UgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkcoIm1vdmllIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZv
ciB0aW1lbGluZSBzbGlkZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0aW1lbGluZSBzbGlkZXIgdGh1bWIiLCAiYWNjZXNzaWJp
bGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lbGluZSB0aHVtYiIpOwotICAgIGlmIChuYW1l
ID09ICJSZXdpbmRCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYWNrIDMwIHNl
Y29uZHMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBzZWVrIGJhY2sgMzAg
c2Vjb25kcyBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRv
biIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJldHVybiB0byByZWFsdGltZSIsICJhY2Nl
c3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHJldHVybiB0byByZWFsIHRpbWUgYnV0dG9u
Iik7Ci0gICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCi0gICAgICAgIHJldHVy
biBVSV9TVFJJTkcoImVsYXBzZWQgdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRp
b24gZm9yIGVsYXBzZWQgdGltZSBkaXNwbGF5Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1h
aW5pbmdEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmVtYWluaW5nIHRpbWUi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lIHJlbWFpbmluZyBkaXNw
bGF5Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJzdGF0dXMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBt
b3ZpZSBzdGF0dXMiKTsKLSAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1dHRvbiIpCi0gICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoImZ1bGxzY3JlZW4iLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRl
c2NyaXB0aW9uIGZvciBlbnRlciBmdWxsc2NyZWVuIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09
ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImZhc3QgZm9y
d2FyZCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGZhc3QgZm9yd2FyZCBi
dXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0b24iKQotICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJmYXN0IHJldmVyc2UiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0
aW9uIGZvciBmYXN0IHJldmVyc2UgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNob3dDbG9z
ZWRDYXB0aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNob3cgY2xvc2Vk
IGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igc2hvdyBjbG9z
ZWQgY2FwdGlvbnMgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImhpZGUgY2xvc2VkIGNhcHRpb25z
IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaGlkZSBjbG9zZWQgY2FwdGlv
bnMgYnV0dG9uIik7Ci0KLSAgICAvLyBGSVhNRTogdGhlIENvbnRyb2xzUGFuZWwgY29udGFpbmVy
IHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGluIHRoZSBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4K
LSAgICBpZiAobmFtZSA9PSAiQ29udHJvbHNQYW5lbCIpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0K
LQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxl
bWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBpZiAobmFtZSA9PSAiQXVk
aW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYXVkaW8gZWxlbWVudCBwbGF5
YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRl
c2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLSAgICBpZiAobmFtZSA9
PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygidmlkZW8gZWxlbWVu
dCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSBy
b2xlIGRlc2NyaXB0aW9uIGZvciB2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLSAgICBpZiAo
bmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm11dGUgYXVk
aW8gdHJhY2tzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtdXRlIGJ1dHRvbiIpOwot
ICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJ1bm11dGUgYXVkaW8gdHJhY2tzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB1biBt
dXRlIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKLSAgICAgICAgcmV0
dXJuIFVJX1NUUklORygiYmVnaW4gcGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIHBsYXkgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKLSAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygicGF1c2UgcGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxw
IHRleHQgZm9yIHBhdXNlIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIiKTsKLSAgICBpZiAobmFtZSA9PSAiU2xp
ZGVyVGh1bWIiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVy
IHRodW1iIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIgdGh1
bWIiKTsKLSAgICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygic2VlayBtb3ZpZSBiYWNrIDMwIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxw
IHRleHQgZm9yIGp1bXAgYmFjayAzMCBzZWNvbmRzIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09
ICJSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmV0
dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRl
eHQgZm9yIHJldHVybiBzdHJlYW1pbmcgbW92aWUgdG8gcmVhbCB0aW1lIGJ1dHRvbiIpOwotICAg
IGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJjdXJyZW50IG1vdmllIHRpbWUgaW4gc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsKLSAgICBpZiAobmFtZSA9PSAiVGltZVJl
bWFpbmluZ0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJudW1iZXIgb2Ygc2Vj
b25kcyBvZiBtb3ZpZSByZW1haW5pbmciLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJl
bWFpbmluZyB0aW1lIGRpc3BsYXkiKTsKLSAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIp
Ci0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImN1cnJlbnQgbW92aWUgc3RhdHVzIiwgImFjY2Vz
c2liaWxpdHkgaGVscCB0ZXh0IGZvciBtb3ZpZSBzdGF0dXMgZGlzcGxheSIpOwotICAgIGlmIChu
YW1lID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsg
cXVpY2tseSBiYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBmYXN0IHJld2luZCBi
dXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQotICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJzZWVrIHF1aWNrbHkgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgZmFzdCBmb3J3YXJkIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJGdWxs
c2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiUGxheSBtb3ZpZSBpbiBm
dWxsc2NyZWVuIG1vZGUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGVudGVyIGZ1bGxz
Y3JlZW4gYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRv
biIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInN0YXJ0IGRpc3BsYXlpbmcgY2xvc2VkIGNh
cHRpb25zIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBzaG93IGNsb3NlZCBjYXB0aW9u
cyBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklORygic3RvcCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9u
cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0
dG9uIik7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhVGltZURl
c2NyaXB0aW9uKGZsb2F0IHRpbWUpCi17Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKLSAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygiaW5kZWZpbml0ZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBhbiBpbmRlZmluaXRlIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSIpOwot
Ci0gICAgaW50IHNlY29uZHMgPSBzdGF0aWNfY2FzdDxpbnQ+KGZhYnNmKHRpbWUpKTsgCi0gICAg
aW50IGRheXMgPSBzZWNvbmRzIC8gKDYwICogNjAgKiAyNCk7Ci0gICAgaW50IGhvdXJzID0gc2Vj
b25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7
Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChkYXlzKQotICAgICAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFVJX1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBt
aW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEg
Y29udHJvbGxlciB0aW1lIHZhbHVlID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBz
ZWNvbmRzKTsKLSAgICBpZiAoaG91cnMpCi0gICAgICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoVUlfU1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAi
YWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+
PSA2MCBtaW51dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKLSAgICBpZiAobWludXRl
cykKLSAgICAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhVSV9TVFJJTkcoIiUxJGQg
bWludXRlcyAlMiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlh
IGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29uZHMp
OwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoVUlfU1RSSU5HKCIlMSRkIHNlY29u
ZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2
YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygidmFsdWUgbWlzc2luZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHJl
cXVpcmVkIGZvcm0gY29udHJvbCBlbGVtZW50cyB0aGF0IGhhdmUgbm8gdmFsdWUiKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0
Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJ0eXBlIG1pc21hdGNoIiwgIlZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIGEgdmFsdWUgbm90IG1h
dGNoaW5nIHR5cGUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRh
dGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5H
KCJwYXR0ZXJuIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBj
b250cm9scyByZXF1aXJpbmcgYSBjb25zdHJhaW5lZCB2YWx1ZSBhY2NvcmRpbmcgdG8gcGF0dGVy
biIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2Fn
ZVRvb0xvbmdUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJ0b28gbG9uZyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgbG9u
Z2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCiB7Ci0gICAgcmV0
dXJuIFVJX1NUUklORygicmFuZ2UgdW5kZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3Ig
aW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2VyIHRoYW4gYWxsb3dlZCBtaW5pbXVt
Iik7Ci19CisgICAgaWYgKG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkKKyAgICAgICAgcmV0dXJu
OwogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdl
T3ZlcmZsb3dUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJyYW5nZSBvdmVyZmxvdyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBo
aWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKTsKLX0KKyAgICBBU1NFUlQobV9jYWNoZWRQbHVn
aW5zLmlzRW1wdHkoKSk7CisgICAgCisgICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnM7Cisg
ICAgCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJv
ciBoZXJlPworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViQ29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHkocGx1Z2lucyksIDApOwogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90IHJlc3BlY3Rpbmcg
dGhlIHN0ZXAgYXR0cmlidXRlIik7CisgICAgbV9jYWNoZWRQbHVnaW5zLnN3YXAocGx1Z2lucyk7
CisgICAgCisgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOworICAgIG1fcGx1Z2lu
Q2FjaGVJc1BvcHVsYXRlZCA9IHRydWU7CiB9CiAKIC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKKwog
Ym9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlu
a0hhc2ggbGlua0hhc2gpCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlzTGlu
a1Zpc2l0ZWQobGlua0hhc2gpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICsz
MSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0
cmF0ZWd5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtTdHJhdGVneS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3Ry
YXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBw
cml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5T
dHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgCkBAIC00Niw3ICs0NSw2IEBAIHBy
aXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSogY3JlYXRlTG9jYWxpemF0
aW9uU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kq
IGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneQpAQCAtNTUsMTU4ICs1MywxNSBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6OlBs
dWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiYpOwotCi0gICAgLy8gV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRl
Z3kgICAgCi0gICAgdmlydHVhbCBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpOwotICAgIHZp
cnR1YWwgU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCk7Ci0gICAgdmlydHVhbCBTdHJp
bmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3Vi
bWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZmlsZUJ1dHRvbkNo
b29zZUZpbGVMYWJlbCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxl
Y3RlZExhYmVsKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4
dCgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIFN0cmluZyBjb3B5SW1hZ2VVbmtu
b3duRmlsZUxhYmVsKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3
V2luZG93KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJ
bWFnZVRvRGlzaygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJ
bWFnZVRvQ2xpcGJvYXJkKCk7Ci0jaWYgUExBVEZPUk0oUVQpCi0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKTsKLSNlbmRpZgotICAg
IHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCk7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpOwotICAgIHZpcnR1YWwgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1N0b3AoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdSZWxvYWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpOwotI2lmIFBMQVRG
T1JNKEdUSykKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWxldGUoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHMoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmljb2RlKCk7Ci0jZW5kaWYKLSNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZyk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCk7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5n
KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0
aFNwZWxsaW5nKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1l
bnUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpOwotICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU3RhcnRTcGVha2luZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1N0b3BTcGVha2luZygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwotI2VuZGlm
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRv
dygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3
V2luZG93KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVv
TGlua1RvQ2xpcGJvYXJkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scygpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01lZGlhTXV0ZSgpOwotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
IHZpcnR1YWwgU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpOwotICAgIHZp
cnR1YWwgU3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBBWFdlYkFyZWFUZXh0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgQVhMaW5rVGV4dCgp
OwotICAgIHZpcnR1YWwgU3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBBWEltYWdlTWFwVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYSGVhZGluZ1RleHQo
KTsKLSAgICB2aXJ0dWFsIFN0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKTsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgdmlydHVhbCBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25z
dCBTdHJpbmcmIGFyaWFUeXBlKTsKLSNlbmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIEFYQnV0dG9u
QWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJi
KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgU3RyaW5nIEFYTWVudUxpc3RQ
b3B1cEFjdGlvblZlcmIoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7
Ci0gICAgdmlydHVhbCBTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIG11bHRpcGxlRmls
ZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcyk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
dW5rbm93bkZpbGVTaXplVGV4dCgpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2aXJ0dWFsIFN0
cmluZyB1cGxvYWRGaWxlVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGFsbEZpbGVzVGV4dCgp
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgU3RyaW5nIGtleWdlbk1l
bnVJdGVtNTEyKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0xMDI0KCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCk7Ci0gICAgdmlydHVhbCBTdHJp
bmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpOwotI2VuZGlmCi0g
ICAgdmlydHVhbCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVsZW1l
bnRMb2FkaW5nU3RhdGVUZXh0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVkaWFFbGVtZW50TGl2
ZUJyb2FkY2FzdFN0YXRlVGV4dCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlh
Q29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBTdHJpbmcg
bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYpOwotICAg
IHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0KTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCk7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCk7Ci0K
ICAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsKIAotICAgIGJvb2wgbV9wbHVnaW5DYWNo
ZUlzUG9wdWxhdGVkOwotICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2luczsKLSAgICBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVnaW5zOwotCiAgICAgLy8gV2ViQ29y
ZTo6VmlzaXRlZExpbmtTdHJhdGVneQogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdl
YkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZp
c2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CisKKyAgICBib29s
IG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZDsKKyAgICBib29sIG1fc2hvdWxkUmVmcmVzaFBsdWdp
bnM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQko
cmV2aXNpb24gODI0NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJFcnJvcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV2ViRXJyb3IuaCIKLSNpbXBvcnQgIldl
YkxvY2FsaXphYmxlU3RyaW5ncy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDxwdGhyZWFkLmg+CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDgy
NDYxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0ICJGdWxsS2V5Ym9hcmRB
Y2Nlc3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW1wb3J0ICJX
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2Fj
aGUuaD4KQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPG1hY2gvbWFjaC5oPgogI2ltcG9ydCA8
bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRC
T1gpCiAjaW1wb3J0IDxzYW5kYm94Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9q
CShyZXZpc2lvbiA4MjQ2MSkKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjY3LDEwICs2NjcsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViTG9jYWxpemFibGVTdHJpbmdz
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxXZWJNb3VzZUV2ZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="79981"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>