<?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>42836</bug_id>
          
          <creation_ts>2010-07-22 10:56:57 -0700</creation_ts>
          <short_desc>Add localized strings stubs for WebKit2</short_desc>
          <delta_ts>2010-07-22 14:31:53 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254882</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-22 10:56:57 -0700</bug_when>
    <thetext>Add localized strings stubs for WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254883</commentid>
    <comment_count>1</comment_count>
      <attachid>62315</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-22 10:59:21 -0700</bug_when>
    <thetext>Created attachment 62315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254895</commentid>
    <comment_count>2</comment_count>
      <attachid>62315</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-07-22 11:16:06 -0700</bug_when>
    <thetext>Comment on attachment 62315
Patch

&gt; Index: WebKit2/WebProcess/WebCoreSupport/WebLocalizationStrategy.h
&gt; ===================================================================
&gt; --- WebKit2/WebProcess/WebCoreSupport/WebLocalizationStrategy.h	(revision 0)
&gt; +++ WebKit2/WebProcess/WebCoreSupport/WebLocalizationStrategy.h	(revision 0)

Doesn&apos;t look like this file is used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254897</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-22 11:18:39 -0700</bug_when>
    <thetext>Fixed in r63904.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254989</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-22 14:31:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63904 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62315</attachid>
            <date>2010-07-22 10:59:21 -0700</date>
            <delta_ts>2010-07-22 11:16:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>local.diff</filename>
            <type>text/plain</type>
            <size>169658</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzkwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDctMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODM2CisgICAgICAg
IEFkZCBsb2NhbGl6ZWQgc3RyaW5ncyBzdHVicyBmb3IgV2ViS2l0Mi4KKworICAgICAgICAtIENv
bnZlcnQgV2ViS2l0IChtYWMpIHRvIHVzZSBhIExvY2FsaXphdGlvblN0cmF0ZWd5IHJhdGhlciB0
aGFuIHRoZSBXZWJDb3JlVmlld0ZhY3RvcnkKKyAgICAgICAgICBmb3IgbG9jYWxpemVkIHN0cmlu
Z3MuCisKKyAgICAgICAgR2V0cyB1cyBiZWxvdyAyMDAgdGVzdHMgZmFpbGluZyBpbiBXZWJLaXRU
ZXN0UnVubmVyLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVW
aWV3RmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXphdGlvblN0cmF0ZWd5Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3k6On5Mb2NhbGl6
YXRpb25TdHJhdGVneSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBsdWdpblN0cmF0ZWd5KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemF0aW9uU3RyYXRl
Z3kpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzOjp+UGxhdGZvcm1T
dHJhdGVnaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5t
bToKKwogMjAxMC0wNy0yMiAgSm9vbmUgSHVyICA8am9vbmUuaHVyQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDYz
Nzk0KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNDUwLDYg
KzQ1MCw3IEBAIF9fWk43V2ViQ29yZTIxcmVwb3J0VGhyZWFkVmlvbGF0aW9uRVBLY04KIF9fWk43
V2ViQ29yZTIxc2V0UGxhdGZvcm1TdHJhdGVnaWVzRVBOU18xOFBsYXRmb3JtU3RyYXRlZ2llc0UK
IF9fWk43V2ViQ29yZTIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dDI2Y2FuU3VzcGVuZEFjdGl2ZURP
TU9iamVjdHNFdgogX19aTjdXZWJDb3JlMjJhcHBsaWNhdGlvbklzQXBwbGVNYWlsRXYKK19fWk43
V2ViQ29yZTIyY29udGV4dE1lbnVJdGVtVGFnQm9sZEV2CiBfX1pON1dlYkNvcmUyMmNvdW50ZXJW
YWx1ZUZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVu
dEZyb21UZXh0RVBOU181UmFuZ2VFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMjJleHRlcm5h
bFJlcHJlc2VudGF0aW9uRVBOU181RnJhbWVFagpAQCAtNDYxLDYgKzQ2Miw4IEBAIF9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U1ZW0KIF9fWk43V2ViQ29yZTIzUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmRDMUVQTlNfOERvY3VtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE2RG9j
dW1lbnRGcmFnbWVudEVFRWJiYmJiTlNfMTBFZGl0QWN0aW9uRQogX19aTjdXZWJDb3JlMjNjcmVh
dGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVjdG9ySVBOU180Tm9k
ZUVMbTBFRUUKIF9fWk43V2ViQ29yZTI0QmluYXJ5UHJvcGVydHlMaXN0V3JpdGVyMTd3cml0ZVBy
b3BlcnR5TGlzdEV2CitfX1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpY0V2Citf
X1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlc0V2CiBfX1pON1dlYkNvcmUyNGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQTlNfOERvY3VtZW50RVJLTlNfNlN0cmluZ0VTNF9OU18y
N0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0bm90aWZ5SGlzdG9yeUl0
ZW1DaGFuZ2VkRQpAQCAtNDc0LDIxICs0NzcsNTMgQEAgX19aTjdXZWJDb3JlMjVQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyMQogX19aTjdXZWJDb3JlMjVQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
MTRyZWdpc3RlclBsdWdpbkVQNF9OUFAKIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlcjE2dW5yZWdpc3RlclBsdWdpbkVQNF9OUFAKIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlcjlzY2hlZHVsZXJFdgorX19aTjdXZWJDb3JlMjVjb250ZXh0TWVudUl0
ZW1UYWdPdXRsaW5lRXYKIF9fWk43V2ViQ29yZTI2Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25D
MUV2CiBfX1pON1dlYkNvcmUyNk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyNmNyZWF0ZUVQTlNf
NUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RQorX19aTjdXZWJD
b3JlMjZjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudUV2CitfX1pON1dlYkNvcmUyNmNvbnRleHRN
ZW51SXRlbVRhZ09wZW5MaW5rRXYKIF9fWk43V2ViQ29yZTI2dXNlc1Rlc3RNb2RlRm9jdXNSaW5n
Q29sb3JFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dU
RjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN2Fw
cGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlckV2CitfX1pON1dlYkNvcmUyN2NvbnRleHRNZW51SXRl
bVRhZ1Nob3dGb250c0V2CitfX1pON1dlYkNvcmUyN2NvbnRleHRNZW51SXRlbVRhZ1VuZGVybGlu
ZUV2CitfX1pON1dlYkNvcmUyOGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemVFdgorX19aTjdX
ZWJDb3JlMjhjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzRXYKK19fWk43V2ViQ29yZTI4Y29u
dGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rc0V2CitfX1pON1dlYkNvcmUyOGNvbnRleHRNZW51SXRl
bVRhZ1NwZWVjaE1lbnVFdgorX19aTjdXZWJDb3JlMjljb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9S
aWdodEV2CitfX1pON1dlYkNvcmUyOWNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0RXYKK19f
Wk43V2ViQ29yZTI5Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNFdgorX19aTjdXZWJDb3Jl
Mjljb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rlc0V2CiBfX1pON1dlYkNvcmUyOWlzQ2hhcmFj
dGVyU21hcnRSZXBsYWNlRXhlbXB0RWliCiBfX1pON1dlYkNvcmUyOXNldFVzZXNUZXN0TW9kZUZv
Y3VzUmluZ0NvbG9yRWIKK19fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdN
ZW51RXYKK19fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKIF9f
Wk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pO
N1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKIF9fWk43
V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2CitfX1pON1dlYkNvcmUz
MWNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdFdgorX19aTjdXZWJDb3JlMzFjb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyRXYKK19fWk43V2ViQ29yZTMxY29udGV4dE1lbnVJdGVt
VGFnTWFrZUxvd2VyQ2FzZUV2CitfX1pON1dlYkNvcmUzMWNvbnRleHRNZW51SXRlbVRhZ01ha2VV
cHBlckNhc2VFdgorX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5n
RXYKK19fWk43V2ViQ29yZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnRFdgorX19a
TjdXZWJDb3JlMzJjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2CiBfX1pON1dlYkNv
cmUzMnBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyRVBLTlNfNVJhbmdlRVJqYgorX19a
TjdXZWJDb3JlMzNjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnRFdgogX19aTjdXZWJD
b3JlMzNzZXREZWZhdWx0VGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjNUaHJlYWRWaW9sYXRp
b25CZWhhdmlvckVOU18yMFRocmVhZFZpb2xhdGlvblJvdW5kRQorX19aTjdXZWJDb3JlMzRjb250
ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uRXYKK19fWk43V2ViQ29yZTM1Y29udGV4dE1l
bnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWxFYgorX19aTjdXZWJDb3JlMzVjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9uc0ViCitfX1pON1dlYkNvcmUzNWNvbnRleHRNZW51SXRlbVRh
Z1N1YnN0aXR1dGlvbnNNZW51RXYKIF9fWk43V2ViQ29yZTM2SW5pdGlhbGl6ZUxvZ2dpbmdDaGFu
bmVsc0lmTmVjZXNzYXJ5RXYKK19fWk43V2ViQ29yZTM3Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudUV2CitfX1pON1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdE
aXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTNtYWNFUktOU18xMENyZWRlbnRpYWxFCiBfX1pO
N1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUUKK19fWk43V2ViQ29y
ZTQyY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nRXYKK19fWk43V2Vi
Q29yZTQyY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nRXYKK19fWk43
V2ViQ29yZTQ2Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseUV2
CiBfX1pON1dlYkNvcmU0Rm9udDExc2V0Q29kZVBhdGhFTlMwXzhDb2RlUGF0aEUKIF9fWk43V2Vi
Q29yZTRGb250MThzaG91bGRVc2VTbW9vdGhpbmdFdgogX19aTjdXZWJDb3JlNEZvbnQyMXNldFNo
b3VsZFVzZVNtb290aGluZ0ViCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNjM3NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAKIAkJ
OTM0RjcxNDIwRDVBNkY0NDAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTQxMEQ1QTZGNDQwMDAxOEQ2
OSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTM0RjcxNDQwRDVBNkY1MzAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRGNzE0MzBENUE2RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzRGRTlF
NTBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZp
bGVDaG9vc2VyLmNwcCAqLzsgfTsKLQkJOTM1MjA3QkUwOUJENDEwQTAwRjIwMzhEIC8qIExvY2Fs
aXplZFN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNTIwN0JEMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi87IH07
CisJCTkzNTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5QkQ0MTBB
MDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTIwN0MwMDlCRDQxMjEwMEYyMDM4RCAvKiBMb2Nh
bGl6ZWRTdHJpbmdzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM1MjA3QkYwOUJENDEyMDAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3NNYWMu
bW0gKi87IH07CiAJCTkzNTIwODQ1MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTIwODQ0MDlCRDQz
QjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLzsgfTsKIAkJOTM1MjA4NzcwOUJENDUzNDAwRjIw
MzhEIC8qIENvb2tpZUphci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNTIwODc2MDlCRDQ1MzQwMEYyMDM4RCAvKiBDb29raWVKYXIubW0gKi87IH07
CkBAIC00NTAxLDYgKzQ1MDEsNyBAQAogCQlCQzVBODY4NTBDMzM2NzYwMDBFRUE2NDkgLyogRE9N
U2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzVBODY4MjBDMzM2NzYwMDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmggKi87IH07CiAJCUJD
NUE4NkI1MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVBODZCMzBDMzM2N0U4MDBFRUE2
NDkgLyogSlNET01TZWxlY3Rpb24uY3BwICovOyB9OwogCQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2
NDkgLyogSlNET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNUE4NkI0MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5o
ICovOyB9OworCQlCQzVDRkNBOTExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRl
Z3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNUNG
Q0E4MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNUVCNURCMEU4MUI3RUEw
MEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM1RUI1REEwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM1RUI1
REQwRTgxQjhERDAwQjI1OTY1IC8qIE91dGxpbmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RUI1REMwRTgxQjhERDAwQjI1OTY1IC8qIE91
dGxpbmVWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDNUVCNURGMEU4MUI5QUIwMEIyNTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RUI1REUw
RTgxQjlBQjAwQjI1OTY1IC8qIENvbGxhcHNlZEJvcmRlclZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMTIxLDYgKzEwMTIyLDcgQEAK
IAkJQkM1QTg2ODMwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTVNlbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNUE4NkIzMEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TZWxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyog
SlNET01TZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
U2VsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUNGQ0E4MTFGNzkz
MzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25TdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2NhbGl6YXRpb25TdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzVFQjVEQTBFODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQm9yZGVyVmFsdWUuaDsgcGF0aCA9IHN0eWxl
L0JvcmRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUVCNURDMEU4
MUI4REQwMEIyNTk2NSAvKiBPdXRsaW5lVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gT3V0bGluZVZhbHVlLmg7IHBhdGggPSBzdHlsZS9PdXRsaW5lVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RUI1REUwRTgxQjlBQjAwQjI1OTY1IC8qIENv
bGxhcHNlZEJvcmRlclZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENv
bGxhcHNlZEJvcmRlclZhbHVlLmg7IHBhdGggPSBzdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyMTgsNiArMTYyMjAsNyBAQAogCQkJ
CUE3QUQyRjg1MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgKi8sCiAJCQkJQTdBRDJG
ODYwRUM4OUQwNzAwOEFCMDAyIC8qIExpbmtIYXNoLmggKi8sCiAJCQkJOTM1MjA3QkQwOUJENDEw
QTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLywKKwkJCQlCQzVDRkNBODExRjc5MzMy
MDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCAqLywKIAkJCQlBODIzOURGRTA5QjND
RjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQTgyMzlERkYwOUIzQ0Y4QTAwQjYw
NjQxIC8qIExvZ2dpbmcuaCAqLywKIAkJCQlCQzc3MkM0QzBDNEVCMzA0MDA4MzI4NUYgLyogTUlN
RVR5cGVSZWdpc3RyeS5jcHAgKi8sCkBAIC0xOTgzMiw2ICsxOTgzNSw3IEBACiAJCQkJOTdERDRE
ODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
MTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OEM2RUE2MUExMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDNUNGQ0E5MTFGNzkzMzIwMDk5RUQwOSAvKiBMb2NhbGl6YXRpb25T
dHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVW
aWV3RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZpZXdG
YWN0b3J5LmgJKHJldmlzaW9uIDYzNzYxKQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlVmll
d0ZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDUsIDIwMDkgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCw4MyArMjgsOCBAQAogCiBAcHJvdG9jb2wgV2ViQ29yZVZpZXdGYWN0b3J5CiAKLS0g
KE5TU3RyaW5nICopaW5wdXRFbGVtZW50QWx0VGV4dDsKLS0gKE5TU3RyaW5nICopcmVzZXRCdXR0
b25EZWZhdWx0TGFiZWw7Ci0tIChOU1N0cmluZyAqKXNlYXJjaGFibGVJbmRleEludHJvZHVjdGlv
bjsKLS0gKE5TU3RyaW5nICopc3VibWl0QnV0dG9uRGVmYXVsdExhYmVsOwotLSAoTlNTdHJpbmcg
KilmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsOwotLSAoTlNTdHJpbmcgKilmaWxlQnV0dG9uTm9G
aWxlU2VsZWN0ZWRMYWJlbDsKLS0gKE5TU3RyaW5nICopY29weUltYWdlVW5rbm93bkZpbGVMYWJl
bDsKLQotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotLy8gQ29udGV4dCBtZW51IGl0ZW0gdGl0
bGVzCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c7
Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazsKLS0g
KE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZDsKLS0gKE5T
U3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c7Ci0tIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s7Ci0tIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOwotLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdzsKLS0gKE5TU3RyaW5nICop
Y29udGV4dE1lbnVJdGVtVGFnQ29weTsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFn
R29CYWNrOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQ7Ci0tIChO
U1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1N0b3A7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRN
ZW51SXRlbVRhZ1JlbG9hZDsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ3V0Owot
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdQYXN0ZTsKLS0gKE5TU3RyaW5nICopY29u
dGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQ7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51
SXRlbVRhZ0lnbm9yZVNwZWxsaW5nOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdM
ZWFyblNwZWxsaW5nOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNw
b3RsaWdodDsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViOwotLSAo
TlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk7Ci0tIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOwotLSAoTlNTdHJpbmcgKiljb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnU7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVs
bGluZ1BhbmVsOihib29sKXNob3c7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0No
ZWNrU3BlbGxpbmc7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxp
bmdXaGlsZVR5cGluZzsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFt
bWFyV2l0aFNwZWxsaW5nOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dTsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOwotLSAoTlNTdHJp
bmcgKiljb250ZXh0TWVudUl0ZW1UYWdCb2xkOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0
ZW1UYWdJdGFsaWM7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZTsK
LS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZTsKLS0gKE5TU3RyaW5nICop
Y29udGV4dE1lbnVJdGVtVGFnU3R5bGVzOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51
OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nOwotLSAoTlNT
dHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmc7Ci0tIChOU1N0cmluZyAqKWNv
bnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51OwotLSAoTlNTdHJpbmcgKiljb250
ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudTsKLS0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbjsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVt
VGFnTGVmdFRvUmlnaHQ7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9M
ZWZ0OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRv
bWF0aWNhbGx5OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25z
TWVudTsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6
KGJvb2wpc2hvdzsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFz
dGU7Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOwotLSAoTlNT
dHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczsKLS0gKE5TU3RyaW5nICopY29u
dGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rczsKLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVt
VGFnVGV4dFJlcGxhY2VtZW50OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2Zvcm1hdGlvbnNNZW51OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBw
ZXJDYXNlOwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOwot
LSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOwotLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOihOU1N0cmluZyAqKXJlcGxhY2VkU3RyaW5n
OwotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKLSNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLQotLSAoTlNTdHJpbmcgKilzZWFyY2hNZW51Tm9S
ZWNlbnRTZWFyY2hlc1RleHQ7Ci0tIChOU1N0cmluZyAqKXNlYXJjaE1lbnVSZWNlbnRTZWFyY2hl
c1RleHQ7Ci0tIChOU1N0cmluZyAqKXNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dDsK
LQogLSAoTlNTdHJpbmcgKilkZWZhdWx0TGFuZ3VhZ2VDb2RlOwogCi0tIChOU1N0cmluZyAqKWlt
YWdlVGl0bGVGb3JGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSB3aWR0aDooaW50KXdpZHRo
IGhlaWdodDooaW50KWhlaWdodDsKLQogLSAoQk9PTClvYmplY3RJc1RleHRNYXJrZXI6KGlkKW9i
amVjdDsKIC0gKEJPT0wpb2JqZWN0SXNUZXh0TWFya2VyUmFuZ2U6KGlkKW9iamVjdDsKIApAQCAt
MTIxLDQ1ICs0Niw2IEBACiAtIChBWFVJRWxlbWVudFJlZilBWFVJRWxlbWVudEZvckVsZW1lbnQ6
KGlkKWVsZW1lbnQ7CiAtICh2b2lkKXVucmVnaXN0ZXJVbmlxdWVJZEZvclVJRWxlbWVudDooaWQp
ZWxlbWVudDsKIAotLSAoTlNTdHJpbmcgKilBWFdlYkFyZWFUZXh0OwotLSAoTlNTdHJpbmcgKilB
WExpbmtUZXh0OwotLSAoTlNTdHJpbmcgKilBWExpc3RNYXJrZXJUZXh0OwotLSAoTlNTdHJpbmcg
KilBWEltYWdlTWFwVGV4dDsKLS0gKE5TU3RyaW5nICopQVhIZWFkaW5nVGV4dDsKLS0gKE5TU3Ry
aW5nICopQVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0OwotLSAoTlNTdHJpbmcgKilBWERlZmluaXRp
b25MaXN0RGVmaW5pdGlvblRleHQ7Ci0tIChOU1N0cmluZyAqKUFYQVJJQUNvbnRlbnRHcm91cFRl
eHQ6KE5TU3RyaW5nICopYXJpYVR5cGU7Ci0KLS0gKE5TU3RyaW5nICopQVhCdXR0b25BY3Rpb25W
ZXJiOwotLSAoTlNTdHJpbmcgKilBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYjsKLS0gKE5TU3RyaW5n
ICopQVhUZXh0RmllbGRBY3Rpb25WZXJiOwotLSAoTlNTdHJpbmcgKilBWENoZWNrZWRDaGVja0Jv
eEFjdGlvblZlcmI7Ci0tIChOU1N0cmluZyAqKUFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
OwotLSAoTlNTdHJpbmcgKilBWExpbmtBY3Rpb25WZXJiOwotLSAoTlNTdHJpbmcgKilBWE1lbnVM
aXN0UG9wdXBBY3Rpb25WZXJiOwotLSAoTlNTdHJpbmcgKilBWE1lbnVMaXN0QWN0aW9uVmVyYjsK
LQotLSAoTlNTdHJpbmcgKiltaXNzaW5nUGx1Z2luVGV4dDsKLS0gKE5TU3RyaW5nICopY3Jhc2hl
ZFBsdWdpblRleHQ7Ci0KLS0gKE5TU3RyaW5nICopbXVsdGlwbGVGaWxlVXBsb2FkVGV4dEZvck51
bWJlck9mRmlsZXM6KHVuc2lnbmVkKW51bWJlck9mRmlsZXM7Ci0vLyBGVFAgRGlyZWN0b3J5IFJl
bGF0ZWQKLS0gKE5TU3RyaW5nICopdW5rbm93bkZpbGVTaXplVGV4dDsKLQotLSAoTlNTdHJpbmcg
KiltZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0OwotLSAoTlNTdHJpbmcgKiltZWRpYUVsZW1l
bnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0OwotLSAoTlNTdHJpbmcqKWxvY2FsaXplZE1lZGlhQ29u
dHJvbEVsZW1lbnRTdHJpbmc6KE5TU3RyaW5nKiluYW1lOwotLSAoTlNTdHJpbmcqKWxvY2FsaXpl
ZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dDooTlNTdHJpbmcqKW5hbWU7Ci0tIChOU1N0cmlu
ZyopbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb246KGZsb2F0KXRpbWU7Ci0KLS0gKE5TU3Ry
aW5nICopdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0OwotLSAoTlNTdHJpbmcgKil2
YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQ7Ci0tIChOU1N0cmluZyAqKXZhbGlkYXRp
b25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dDsKLS0gKE5TU3RyaW5nICopdmFsaWRhdGlvbk1l
c3NhZ2VUb29Mb25nVGV4dDsKLS0gKE5TU3RyaW5nICopdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVu
ZGVyZmxvd1RleHQ7Ci0tIChOU1N0cmluZyAqKXZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxv
d1RleHQ7Ci0tIChOU1N0cmluZyAqKXZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dDsK
LQogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkNvcmVWaWV3RmFjdG9yeSA6IE5TT2JqZWN0CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXphdGlvblN0cmF0ZWd5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYWxpemF0aW9uU3RyYXRlZ3lf
aAorI2RlZmluZSBMb2NhbGl6YXRpb25TdHJhdGVneV9oCisKKyNpZiBVU0UoUExBVEZPUk1fU1RS
QVRFR0lFUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHJpbmc7CitjbGFzcyBJ
bnRTaXplOworCitjbGFzcyBMb2NhbGl6YXRpb25TdHJhdGVneSB7CitwdWJsaWM6ICAgIAorICAg
IHZpcnR1YWwgU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHN1
Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlQnV0
dG9uQ2hvb3NlRmlsZUxhYmVsKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVCdXR0b25O
b0ZpbGVTZWxlY3RlZExhYmVsKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvcHlJbWFnZVVu
a25vd25GaWxlTGFiZWwoKSA9IDA7CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlz
aygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1Rv
Q2xpcGJvYXJkKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09w
ZW5JbWFnZUluTmV3V2luZG93KCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKSA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKSA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0N1dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQ
YXN0ZSgpID0gMDsKKyNpZiBQTEFURk9STShHVEspCisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnRGVsZXRlKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdJbnB1dE1ldGhvZHMoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZSgpID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSgpID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGls
ZVR5cGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a0dyYW1tYXJXaXRoU3BlbGxpbmcoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnRm9udE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQm9sZCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJ
dGFsaWMoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJs
aW5lKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUo
KSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVj
dGlvbk1lbnUoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnRGVmYXVsdERpcmVjdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdMZWZ0VG9SaWdodCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdSaWdodFRvTGVmdCgpID0gMDsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKSA9IDA7CisgICAg
dmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCkgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKSA9IDA7CisgICAgdmlydHVh
bCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgp
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25z
TWVudSgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vi
c3RpdHV0aW9ucyhib29sIHNob3cpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTbWFydERhc2hlcygpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTbWFydExpbmtzKCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpID0gMDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2soY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZykgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSW5zcGVjdEVsZW1lbnQoKSA9IDA7CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMp
CisKKyAgICB2aXJ0dWFsIFN0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKSA9
IDA7CisgICAgdmlydHVhbCBTdHJpbmcgc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQo
KSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBBWFdlYkFyZWFUZXh0KCkgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIEFYTGlua1RleHQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgQVhMaXN0
TWFya2VyVGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWEltYWdlTWFwVGV4dCgpID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWEhlYWRpbmdUZXh0KCkgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKSA9IDA7Cisg
ICAgCisgICAgdmlydHVhbCBTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkgPSAwOworICAgIHZpcnR1YWwg
U3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBB
WENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgQVhV
bmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgQVhN
ZW51TGlzdEFjdGlvblZlcmIoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgQVhNZW51TGlzdFBv
cHVwQWN0aW9uVmVyYigpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBBWExpbmtBY3Rpb25WZXJi
KCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKSA9IDA7Cisg
ICAgdmlydHVhbCBTdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKSA9IDA7CisgICAgdmlydHVhbCBT
dHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKSA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpID0gMDsKKworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2aXJ0dWFsIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBhbGxGaWxlc1RleHQoKSA9IDA7CisjZW5kaWYKKworICAgIHZpcnR1
YWwgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0
YXRlVGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJvYWRj
YXN0U3RhdGVUZXh0KCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29u
dHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5n
IGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQp
ID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5n
VGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNt
YXRjaFRleHQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VQYXR0
ZXJuTWlzbWF0Y2hUZXh0KCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVG9vTG9uZ1RleHQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZVVuZGVyZmxvd1RleHQoKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIH5Mb2NhbGl6YXRpb25TdHJhdGVneSgpCisgICAgeworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQor
CisjZW5kaWYgLy8gTG9jYWxpemF0aW9uU3RyYXRlZ3lfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiA2Mzc2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGx1Z2luU3RyYXRlZ3k7CitjbGFzcyBMb2NhbGl6
YXRpb25TdHJhdGVneTsKIAogY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzIHsKIHB1YmxpYzoKQEAg
LTM4LDIxICszOSwzMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIW1fcGx1Z2luU3Ry
YXRlZ3kpCiAgICAgICAgICAgICBtX3BsdWdpblN0cmF0ZWd5ID0gY3JlYXRlUGx1Z2luU3RyYXRl
Z3koKTsKLQogICAgICAgICByZXR1cm4gbV9wbHVnaW5TdHJhdGVneTsKICAgICB9CiAKKyAgICBM
b2NhbGl6YXRpb25TdHJhdGVneSogbG9jYWxpemF0aW9uU3RyYXRlZ3koKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2xvY2FsaXphdGlvblN0cmF0ZWd5KQorICAgICAgICAgICAgbV9sb2NhbGl6YXRp
b25TdHJhdGVneSA9IGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7CisgICAgICAgIHJldHVy
biBtX2xvY2FsaXphdGlvblN0cmF0ZWd5OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFBsYXRm
b3JtU3RyYXRlZ2llcygpCiAgICAgICAgIDogbV9wbHVnaW5TdHJhdGVneSgwKQogICAgIHsKICAg
ICB9Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1TdHJhdGVnaWVzKCkgeyB9CiAKLXByaXZhdGU6ICAg
IAorICAgIHZpcnR1YWwgflBsYXRmb3JtU3RyYXRlZ2llcygpCisgICAgeworICAgIH0KKworcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgp
ID0gMDsKKyAgICB2aXJ0dWFsIExvY2FsaXphdGlvblN0cmF0ZWd5KiBjcmVhdGVMb2NhbGl6YXRp
b25TdHJhdGVneSgpID0gMDsKIAogICAgIFBsdWdpblN0cmF0ZWd5KiBtX3BsdWdpblN0cmF0ZWd5
OworICAgIExvY2FsaXphdGlvblN0cmF0ZWd5KiBtX2xvY2FsaXphdGlvblN0cmF0ZWd5OwogfTsK
IAogUGxhdGZvcm1TdHJhdGVnaWVzKiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKTsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5tbQkocmV2aXNpb24gNjM3NjEp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwg
MjAwOSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDgxMyArMjYsNTE0
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKIAot
I2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJJbnRTaXplLmgiCisjaW1wb3J0
ICJMb2NhbGl6YXRpb25TdHJhdGVneS5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgotI2ltcG9ydCAiV2ViQ29yZVZpZXdGYWN0b3J5
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQo
KQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJD
b3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gaW5wdXRFbGVtZW50QWx0VGV4dF07Ci0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5pbnB1dEVs
ZW1lbnRBbHRUZXh0KCk7CiB9CiAKIFN0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCiB7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbF07Ci0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5yZXNldEJ1
dHRvbkRlZmF1bHRMYWJlbCgpOwogfQogCiBTdHJpbmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0
aW9uKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtb
V2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHNlYXJjaGFibGVJbmRleEludHJvZHVj
dGlvbl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5zZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKIH0KIAogU3RyaW5nIHN1Ym1pdEJ1
dHRvbkRlZmF1bHRMYWJlbCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBzdWJtaXRCdXR0
b25EZWZhdWx0TGFiZWxdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0
dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CiB9CiAKIFN0cmluZyBm
aWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGZp
bGVCdXR0b25DaG9vc2VGaWxlTGFiZWxdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpOwogfQog
CiBTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKQogewotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWxdOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+ZmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWwoKTsKIH0KIAogU3RyaW5nIGNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwo
KQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJD
b3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29weUltYWdlVW5rbm93bkZpbGVMYWJlbF07
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5j
b3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKIHsKLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5k
b3ddOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygp
OworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpOwogfQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKIHsKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlza107Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29u
dGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZF07Ci0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5
TGlua1RvQ2xpcGJvYXJkKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1h
Z2VJbk5ld1dpbmRvdygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0
ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvd107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5l
d1dpbmRvdygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRv
RGlzaygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBb
W1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdEb3du
bG9hZEltYWdlVG9EaXNrXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKTsK
IH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKIHsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZp
ZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xp
cGJvYXJkXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpCiB7Ci0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9y
eSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvd107
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5j
b250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpOwogfQogCiBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0
TWVudUl0ZW1UYWdDb3B5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250
ZXh0TWVudUl0ZW1UYWdHb0JhY2tdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQogewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0dvRm9y
d2FyZCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcCgpCiB7Ci0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9y
eSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTdG9wXTsKLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z1N0b3AoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCiB7Ci0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFj
dG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWRdOwotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJ
dGVtVGFnUmVsb2FkKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQogewot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ3V0XTsKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ0N1dCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKQogewot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnUGFzdGVdOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnUGFzdGUoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nl
c0ZvdW5kKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZ107Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVTcGVsbGluZygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVh
cm5TcGVsbGluZygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1U
YWdMZWFyblNwZWxsaW5nXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkKIHsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5
IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRl
eHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoV2ViXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpOwogfQogCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KCkKIHsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5
IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeV07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
cmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250
ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ09wZW5MaW5rKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRN
ZW51SXRlbVRhZ09wZW5MaW5rXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKIHsKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXJdOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVt
VGFnSWdub3JlR3JhbW1hcigpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxp
bmdNZW51KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWxsaW5nTWVudV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykKIHsKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOnNo
b3ddOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygp
OworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoc2hvdyk7CiB9CiAKIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkKIHsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZh
Y3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmddOwotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51
SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmcoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
R3JhbW1hcldpdGhTcGVsbGluZygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0
TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmddOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdG
b250TWVudSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdG
b250TWVudV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dGb250c107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKTsKIH0K
IAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKQogewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQm9sZF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7CiB9
CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQogewotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnSXRhbGljXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0l0YWxp
YygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKIHsKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVu
dUl0ZW1UYWdVbmRlcmxpbmUoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxp
bmUoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tX
ZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnT3V0bGlu
ZV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTdHlsZXMoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBy
ZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVt
VGFnU3R5bGVzXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250
ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsK
IH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKQogewotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkg
c2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudV07Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0
ZW1UYWdTcGVlY2hNZW51KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNw
ZWFraW5nKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N0
YXJ0U3BlYWtpbmddOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOwogfQogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCkKIHsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZh
Y3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ107Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdT
dG9wU3BlYWtpbmcoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJl
Y3Rpb25NZW51KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0
dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRh
Z1dyaXRpbmdEaXJlY3Rpb25NZW51XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25N
ZW51KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgp
CiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNv
cmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0
aW9uTWVudV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOwogfQogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCiB7Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uXTsKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAg
cmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRl
bVRhZ0xlZnRUb1JpZ2h0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdF07Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdS
aWdodFRvTGVmdCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxs
aW5nQXV0b21hdGljYWxseSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5XTsKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0Nv
cnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRl
eHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1
dGlvbnNNZW51KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0
aW9ucyhib29sIHNob3cpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9uczpzaG93XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0
dXRpb25zKHNob3cpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFz
dGUoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tX
ZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnRD
b3B5UGFzdGVdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rv
cnldIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
UXVvdGVzKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpCiB7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlc107
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5j
b250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU21hcnRMaW5rcygpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydExpbmtzXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpCiB7Ci0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBz
aGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnRdOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnVdOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVy
Q2FzZSgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBb
W1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdNYWtl
VXBwZXJDYXNlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKQogewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZV07Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdN
YWtlTG93ZXJDYXNlKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXpl
KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2Vi
Q29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxp
emVdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygp
OworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOwogfQogCiBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ2hhbmdlQmFjayhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogewotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0Zh
Y3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjazpyZXBsYWNl
ZFN0cmluZ107Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gcmVw
bGFjZWRTdHJpbmc7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5n
KTsKIH0KICAgICAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCiB7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVu
dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpOwogfQorCiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAKIFN0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1Rl
eHQoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tX
ZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gc2VhcmNoTWVudU5vUmVjZW50U2VhcmNo
ZXNUZXh0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpOwogfQogCiBTdHJpbmcgc2Vh
cmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCAoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0g
c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5zZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0
ICgpOwogfQogCiBTdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKIHsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZp
ZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4
dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5zZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsKIH0KIAogU3RyaW5nIEFYV2Vi
QXJlYVRleHQoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1
cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gQVhXZWJBcmVhVGV4dF07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
cmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWFdl
YkFyZWFUZXh0KCk7CiB9CiAKIFN0cmluZyBBWExpbmtUZXh0KCkKIHsKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIEFYTGlua1RleHRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0g
ICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+QVhMaW5rVGV4dCgpOwogfQogCiBTdHJpbmcgQVhMaXN0TWFy
a2VyVGV4dCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBBWExpc3RNYXJrZXJUZXh0XTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFY
TGlzdE1hcmtlclRleHQoKTsKIH0KIAogU3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCkKIHsKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIEFYSW1hZ2VNYXBUZXh0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYSW1hZ2VNYXBUZXh0KCk7CiB9CiAK
IFN0cmluZyBBWEhlYWRpbmdUZXh0KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIEFYSGVh
ZGluZ1RleHRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+QVhIZWFkaW5nVGV4dCgpOwogfQogCiBTdHJpbmcgQVhEZWZpbml0aW9uTGlzdFRl
cm1UZXh0KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIEFYRGVmaW5pdGlvbkxpc3RUZXJt
VGV4dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5BWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKIH0KLSAgICAKKwogU3RyaW5nIEFYRGVm
aW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBB
WERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25U
ZXh0KCk7CiB9Ci0gICAgCisKIFN0cmluZyBBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0
cmluZyYgYXJpYVR5cGUpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBBWEFSSUFDb250ZW50
R3JvdXBUZXh0OmFyaWFUeXBlXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IHJldHVybiBTdHJpbmcoKTsgICAgICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhBUklBQ29udGVudEdyb3VwVGV4dChhcmlhVHlw
ZSk7CiB9CiAgICAgCiBTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkKIHsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIEFYQnV0dG9uQWN0aW9uVmVyYl07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWEJ1dHRvbkFjdGlvblZlcmIoKTsKIH0K
IAogU3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkKIHsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZh
Y3RvcnldIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7
CiB9CiAKIFN0cmluZyBBWFRleHRGaWVsZEFjdGlvblZlcmIoKQogewotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gQVhUZXh0RmllbGRBY3Rpb25WZXJiXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYVGV4dEZpZWxkQWN0aW9uVmVyYigpOwog
fQogCiBTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKIHsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYl07Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWENoZWNrZWRDaGVja0Jv
eEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2Vi
Q29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25W
ZXJiXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPkFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CiB9CiAKIFN0cmluZyBBWExpbmtB
Y3Rpb25WZXJiKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0
dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIEFYTGlua0FjdGlvblZlcmJd
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOwor
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
QVhMaW5rQWN0aW9uVmVyYigpOwogfQogCiBTdHJpbmcgQVhNZW51TGlzdFBvcHVwQWN0aW9uVmVy
YigpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dl
YkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJi
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYTWVudUxpc3RBY3Rp
b25WZXJiKCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJu
IFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIEFYTWVudUxpc3RBY3Rpb25WZXJi
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PkFYTWVudUxpc3RBY3Rpb25WZXJiKCk7CiB9CiAKIFN0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgp
CiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNv
cmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBtaXNzaW5nUGx1Z2luVGV4dF07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5taXNzaW5nUGx1
Z2luVGV4dCgpOwogfQogCiBTdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKQogewotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkg
c2hhcmVkRmFjdG9yeV0gY3Jhc2hlZFBsdWdpblRleHRdOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y3Jhc2hlZFBsdWdpblRleHQoKTsKIH0K
IAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcykK
IHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29y
ZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIG11bHRpcGxlRmlsZVVwbG9hZFRleHRGb3JOdW1i
ZXJPZkZpbGVzOm51bWJlck9mRmlsZXNdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bXVsdGlwbGVGaWxlVXBsb2FkVGV4dChudW1iZXJPZkZp
bGVzKTsKIH0KIAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQogewotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gdW5rbm93bkZpbGVTaXplVGV4dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT51bmtub3duRmlsZVNpemVUZXh0KCk7CiB9
CiAKIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBpbWFnZVRpdGxlRm9yRmlsZW5h
bWU6ZmlsZW5hbWUgd2lkdGg6c2l6ZS53aWR0aCgpIGhlaWdodDpzaXplLmhlaWdodCgpXTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmltYWdl
VGl0bGUoZmlsZW5hbWUsIHNpemUpOwogfQogCiBTdHJpbmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0
YXRlVGV4dCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBtZWRpYUVsZW1lbnRMb2FkaW5n
U3RhdGVUZXh0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPm1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKTsKIH0KIAogU3RyaW5nIG1l
ZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQogewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dF07Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5tZWRpYUVsZW1lbnRMaXZl
QnJvYWRjYXN0U3RhdGVUZXh0KCk7CiB9CiAKIFN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xF
bGVtZW50U3RyaW5nKGNvbnN0IFN0cmluZyYgY29udHJvbE5hbWUpCiB7Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nOmNvbnRyb2xOYW1l
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29udHJvbE5hbWUpOwogfQogCiBT
dHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYg
Y29udHJvbE5hbWUpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJl
dHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBsb2NhbGl6ZWRNZWRpYUNv
bnRyb2xFbGVtZW50SGVscFRleHQ6Y29udHJvbE5hbWVdOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bG9jYWxpemVkTWVkaWFDb250cm9sRWxl
bWVudEhlbHBUZXh0KGNvbnRyb2xOYW1lKTsKIH0KIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhVGlt
ZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBsb2Nh
bGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbjp0aW1lXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0
aW9uKHRpbWUpOwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0
KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2Vi
Q29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNz
aW5nVGV4dF07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0KIAogU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpCiB7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHRdOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlvbk1lc3Nh
Z2VUeXBlTWlzbWF0Y2hUZXh0KCk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRl
cm5NaXNtYXRjaFRleHQoKQogewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAg
ICByZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gdmFsaWRhdGlvbk1l
c3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNo
VGV4dCgpOwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpCiB7Ci0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBbW1dlYkNvcmVWaWV3
RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0XTsKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlk
YXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
UmFuZ2VVbmRlcmZsb3dUZXh0KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHZhbGlkYXRp
b25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZs
b3dUZXh0KCk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0
KCkKIHsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2Vi
Q29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVy
Zmxvd1RleHRdOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCgpOwogfQogCiBTdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCkKIHsKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dF07Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVz
c2FnZVN0ZXBNaXNtYXRjaFRleHQoKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYzOTAxKQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxMC0wNy0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzYKKyAgICAgICAg
QWRkIGxvY2FsaXplZCBzdHJpbmdzIHN0dWJzIGZvciBXZWJLaXQyLgorCisgICAgICAgIEdldHMg
dXMgYmVsb3cgMjAwIHRlc3RzIGZhaWxpbmcgaW4gV2ViS2l0VGVzdFJ1bm5lci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorCiAyMDEwLTA3LTIyICBCYWxhenMgS2VsZW1lbiAgPGtiQGluZi51LXN6ZWdlZC5odT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbGl6YXRpb25TdHJhdGVneS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbGl6YXRpb25TdHJhdGVn
eS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkxvY2FsaXphdGlvblN0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkxvY2FsaXphdGlvblN0cmF0ZWd5X2gKKyNkZWZpbmUgV2Vi
TG9jYWxpemF0aW9uU3RyYXRlZ3lfaAorCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXphdGlvblN0cmF0ZWdpZXMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVz
LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7CisgICAgCitwcml2YXRlOgorICAgIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcygpOworICAgIAorICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcworICAgIHZp
cnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7CisK
KyAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQorICAgIHZpcnR1YWwgdm9pZCByZWZyZXNo
UGx1Z2lucygpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYpOworICAgIAorICAgIHZvaWQgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOwor
CisgICAgYm9vbCBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQ7CisgICAgYm9vbCBtX3Nob3VsZFJl
ZnJlc2hQbHVnaW5zOworICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBtX2NhY2hlZFBs
dWdpbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQTEFU
Rk9STV9TVFJBVEVHSUVTKQorCisjZW5kaWYgLy8gV2ViTG9jYWxpemF0aW9uU3RyYXRlZ3lfaApJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDYzODQ5KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDEwICsyNywxNyBAQAogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9T
dG9yZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIKKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworLy8gRklYTUU6IEltcGxlbWVudCBsb2NhbGl6YXRpb24uCisjZGVmaW5lIFVJX1NUUklORyhz
dHJpbmcsIGRlc2NyaXB0aW9uKSBzdHJpbmcKKyNkZWZpbmUgVUlfU1RSSU5HX0tFWShzdHJpbmcs
IGtleSwgZGVzY3JpcHRpb24pIHN0cmluZwogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtNTUsNiArNjIsMTMgQEAgUGx1Z2luU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YwogICAgIHJldHVybiB0aGlzOwogfQogCitMb2NhbGl6YXRpb25TdHJhdGVneSogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CisKKy8vIFBsdWdpblN0cmF0ZWd5CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKCkKIHsKICAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9w
dWxhdGVkKQpAQCAtODcsNiArMTAxLDcwNSBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGx1Z2luSW5mCiAgICAgcGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2luczsKIH0KIAorLy8gTG9j
YWxpemF0aW9uU3RyYXRlZ3kgICAgCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omlu
cHV0RWxlbWVudEFsdFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkdfS0VZKCJTdWJtaXQi
LCAiU3VibWl0IChpbnB1dCBlbGVtZW50KSIsICJhbHQgdGV4dCBmb3IgPGlucHV0PiBlbGVtZW50
cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9yIHZhbHVlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJSZXNldCIsICJkZWZhdWx0IGxhYmVsIGZvciBSZXNldCBidXR0b25zIGluIGZvcm1z
IG9uIHdlYiBwYWdlcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFy
Y2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlRoaXMg
aXMgYSBzZWFyY2hhYmxlIGluZGV4LiBFbnRlciBzZWFyY2gga2V5d29yZHM6ICIsCisgICAgICAg
ICJ0ZXh0IHRoYXQgYXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgbmVhcmx5LW9ic29sZXRlIHdlYiBw
YWdlcyBpbiB0aGUgZm9ybSBvZiBhICdzZWFyY2hhYmxlIGluZGV4JyIpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVsIGZvciBTdWJtaXQgYnV0
dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiQ2hvb3NlIEZpbGUiLCAidGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBm
b3JtcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpmaWxlQnV0dG9uTm9G
aWxlU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygibm8gZmlsZSBzZWxl
Y3RlZCIsICJ0ZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1z
IHdoZW4gbm8gZmlsZSBpcyBzZWxlY3RlZCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsKK30KKworI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVu
IExpbmsgaW4gTmV3IFdpbmRvdyIsICJPcGVuIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJEb3dubG9h
ZCBMaW5rZWQgRmlsZSIsICJEb3dubG9hZCBMaW5rZWQgRmlsZSBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdD
b3B5TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IExpbmsi
LCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBJ
bWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2so
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkRvd25sb2FkIEltYWdlIiwgIkRvd25sb2FkIElt
YWdlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
T3BlbkZyYW1lSW5OZXdXaW5kb3coKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIk9wZW4gRnJh
bWUgaW4gTmV3IFdpbmRvdyIsICJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQ29weSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ29weSIsICJDb3B5IGNvbnRl
eHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0dvQmFjaygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQmFjayIsICJC
YWNrIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiRm9yd2FyZCIsICJGb3J3YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKQor
eworICAgIHJldHVybiBVSV9TVFJJTkcoIlJlbG9hZCIsICJSZWxvYWQgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ3V0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDdXQiLCAiQ3V0IGNvbnRleHQgbWVu
dSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ1Bhc3RlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQYXN0ZSIsICJQYXN0ZSBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWxldGUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJEZWxldGUiOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJTZWxlY3QgQWxsIjsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiSW5wdXQgTWV0aG9kcyI7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICJVbmljb2RlIjsKK30KKwor
I2VuZGlmCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z05vR3Vlc3Nlc0ZvdW5kKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJObyBHdWVzc2VzIEZv
dW5kIiwgIk5vIEd1ZXNzZXMgRm91bmQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmco
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIklnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3Bl
bGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiTGVhcm4gU3BlbGxpbmciLCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoV2ViKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTZWFyY2ggaW4gR29vZ2xl
IiwgIlNlYXJjaCBpbiBHb29nbGUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9v
ayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0lnbm9yZUdyYW1tYXIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIklnbm9yZSBHcmFtbWFy
IiwgIklnbm9yZSBHcmFtbWFyIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAiU3BlbGxpbmcgYW5k
IEdyYW1tYXIgY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hv
dykKK3sKKyAgICBpZiAoc2hvdykKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBTcGVs
bGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJIaWRlIFNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDaGVjayBEb2N1bWVudCBOb3ciLCAi
Q2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5n
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmci
LCAiQ2hlY2sgc3BlbGxpbmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3Jh
bW1hcldpdGhTcGVsbGluZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgR3JhbW1h
ciBXaXRoIFNwZWxsaW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdGb250TWVudSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiRm9udCIsICJGb250
IGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJC
b2xkIiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiVW5kZXJsaW5lIiwgIlVuZGVybGluZSBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdPdXRsaW5lKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPdXRsaW5lIiwgIk91
dGxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRpcmVjdGlv
biBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIlNlbGVjdGlvbiBEaXJlY3Rpb24iLCAiU2VsZWN0aW9uIGRpcmVjdGlvbiBj
b250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiRGVmYXVsdCIsICJEZWZhdWx0IHdyaXRpbmcgZGlyZWN0aW9uIGNvbnRleHQgbWVu
dSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0xlZnRUb1JpZ2h0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJMZWZ0IHRvIFJp
Z2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2ggaW4g
U3BvdGxpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiU2hvdyBGb250cyIsICJTaG93IGZvbnRzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0eWxl
cygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU3R5bGVzLi4uIiwgIlN0eWxlcyBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdTaG93Q29sb3JzKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IENv
bG9ycyIsICJTaG93IGNvbG9ycyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJTcGVlY2giLCAiU3BlZWNoIGNvbnRleHQgc3ViLW1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdTdGFydFNwZWFraW5nKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdGFydCBTcGVha2lu
ZyIsICJTdGFydCBzcGVha2luZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlN0b3AgU3BlYWtpbmciLCAiU3RvcCBzcGVha2luZyBjb250
ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiLCAiQ29ycmVjdCBT
cGVsbGluZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlv
bnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykKK3sK
KyAgICBpZiAoc2hvdykgCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3Vic3RpdHV0
aW9ucyIsICJtZW51IGl0ZW0gdGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIaWRlIFN1
YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRpdGxlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBDb3B5L1Bhc3RlIiwgIlNtYXJ0IENvcHkvUGFzdGUgY29u
dGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNt
YXJ0IFF1b3RlcyIsICJTbWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMo
KQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
U21hcnQgTGlua3MiLCAiU21hcnQgTGlua3MgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2Vt
ZW50KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50IiwgIlRleHQg
UmVwbGFjZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiVHJhbnNmb3JtYXRpb25zIiwgIlRyYW5zZm9ybWF0aW9ucyBj
b250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiTWFrZSBVcHBlciBDYXNlIiwgIk1ha2UgVXBwZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdNYWtlTG93ZXJDYXNlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtlIExvd2VyIENh
c2UiLCAiTWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcmVwbGFjZWRTdHJpbmc7Cit9CisKKyNlbmRp
ZgorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiSW5zcGVjdCBFbGVtZW50Iiwg
Ikluc3BlY3QgRWxlbWVudCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCisjZW5kaWYgLy8gRU5B
QkxFKENPTlRFWFRfTUVOVVMpCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJj
aE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiTm8g
cmVjZW50IHNlYXJjaGVzIiwgIkxhYmVsIGZvciBvbmx5IGl0ZW0gaW4gbWVudSB0aGF0IGFwcGVh
cnMgd2hlbiBjbGlja2luZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB3aGVuIG5vIHNlYXJj
aGVzIGhhdmUgYmVlbiBwZXJmb3JtZWQiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiUmVjZW50IFNlYXJjaGVzIiwgImxhYmVsIGZvciBmaXJzdCBpdGVtIGluIHRoZSBtZW51
IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHVz
ZWQgYXMgZW1iZWRkZWQgbWVudSB0aXRsZSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50
IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyIpOworfQorCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFdlYkFyZWFUZXh0KCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJIVE1MIGNvbnRlbnQiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9u
IGZvciB3ZWIgYXJlYSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExp
bmtUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJsaW5rIiwgImFjY2Vzc2liaWxpdHkg
cm9sZSBkZXNjcmlwdGlvbiBmb3IgbGluayIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpBWExpc3RNYXJrZXJUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJsaXN0
IG1hcmtlciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpc3QgbWFya2Vy
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KCkK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJpbWFnZSBtYXAiLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciBpbWFnZSBtYXAiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6QVhIZWFkaW5nVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiaGVhZGlu
ZyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGhlYWRpbmdzIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygidGVybSIsICJ0ZXJtIHdvcmQgb2YgYSBkZWZpbml0
aW9uIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVmaW5pdGlvbkxp
c3REZWZpbml0aW9uVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiZGVmaW5pdGlvbiIs
ICJkZWZpbml0aW9uIHBocmFzZSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmluZyYgYXJpYVR5cGUpCit7CisgICAg
aWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25BbGVydCIpCisgICAgICAgIHJldHVybiBV
SV9TVFJJTkcoImFsZXJ0IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMg
YXMgYW4gYWxlcnQuIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25BbGVy
dERpYWxvZyIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFsZXJ0IGRpYWxvZyIsICJBbiBB
UklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFsZXJ0IGRpYWxvZy4iKTsK
KyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkRpYWxvZyIpCisgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoImRpYWxvZyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhh
dCBhY3RzIGFzIGFuIGRpYWxvZy4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNh
dGlvbkxvZyIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImxvZyIsICJBbiBBUklBIGFjY2Vz
c2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgY29uc29sZSBsb2cuIik7CisgICAgaWYgKGFy
aWFUeXBlID09ICJBUklBQXBwbGljYXRpb25NYXJxdWVlIikKKyAgICAgICAgcmV0dXJuIFVJX1NU
UklORygibWFycXVlZSIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFz
IGEgbWFycXVlZS4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25T
dGF0dXMiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcHBsaWNhdGlvbiBzdGF0dXMiLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHN0YXR1cyB1cGRhdGUu
Iik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uVGltZXIiKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0aW1lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3Jv
dXAgdGhhdCBhY3RzIGFzIGFuIHVwZGF0aW5nIHRpbWVyLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5
cGUgPT0gIkFSSUFEb2N1bWVudCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImRvY3VtZW50
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBkb2N1bWVudC4i
KTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnRBcnRpY2xlIikKKyAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygiYXJ0aWNsZSIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3Jv
dXAgdGhhdCBhY3RzIGFzIGFuIGFydGljbGUuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAi
QVJJQURvY3VtZW50Tm90ZSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm5vdGUiLCAiQW4g
QVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIG5vdGUgaW4gYSBkb2N1bWVu
dC4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnRSZWdpb24iKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJyZWdpb24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdy
b3VwIHRoYXQgYWN0cyBhcyBhIGRpc3RpbmN0IHJlZ2lvbiBpbiBhIGRvY3VtZW50LiIpOyAgICAK
KyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0FwcGxpY2F0aW9uIikKKyAgICAgICAg
cmV0dXJuIFVJX1NUUklORygiYXBwbGljYXRpb24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdy
b3VwIHRoYXQgYWN0cyBhcyBhbiBhcHBsaWNhdGlvbi4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBl
ID09ICJBUklBTGFuZG1hcmtCYW5uZXIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYW5u
ZXIiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGJhbm5lci4i
KTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtDb21wbGVtZW50YXJ5IikK
KyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiY29tcGxlbWVudGFyeSIsICJBbiBBUklBIGFjY2Vz
c2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgcmVnaW9uIG9mIGNvbXBsZW1lbnRhcnkgaW5m
b3JtYXRpb24uIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQ29udGVu
dEluZm8iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJjb250ZW50IiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIGNvbnRlbnQuIik7ICAgIAorICAgIGlmIChh
cmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrTWFpbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
Im1haW4iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgaXMgdGhlIG1haW4gcG9y
dGlvbiBvZiB0aGUgd2Vic2l0ZS4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFu
ZG1hcmtOYXZpZ2F0aW9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibmF2aWdhdGlvbiIs
ICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyB0aGUgbWFpbiBuYXZp
Z2F0aW9uIGVsZW1lbnRzIG9mIGEgd2Vic2l0ZS4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09
ICJBUklBTGFuZG1hcmtTZWFyY2giKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWFyY2gi
LCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgYSBzZWFyY2ggZmVh
dHVyZSBvZiBhIHdlYnNpdGUuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQVVzZXJJ
bnRlcmZhY2VUb29sdGlwIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidG9vbHRpcCIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgdG9vbHRpcC4iKTsgICAg
CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBVGFiUGFuZWwiKQorICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJ0YWIgcGFuZWwiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29u
dGFpbnMgdGhlIGNvbnRlbnQgb2YgYSB0YWIuIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklB
RG9jdW1lbnRNYXRoIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibWF0aCIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBtYXRoZW1hdGljYWwgc3ltYm9scy4i
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygicHJlc3Mi
LCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBidXR0b24g
aXMgcHJlc3NlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkgCit7CisgICAgcmV0
dXJuIFVJX1NUUklORygic2VsZWN0IiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2ls
bCBvY2N1ciB3aGVuIGEgcmFkaW8gYnV0dG9uIGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNz
aWJpbGl0eSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWFRleHRGaWVs
ZEFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoImFjdGl2YXRlIiwgIlZlcmIg
c3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgdGV4dCBmaWVsZCBpcyBz
ZWxlY3RlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OkFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCit7CisgICAgcmV0
dXJuIFVJX1NUUklORygidW5jaGVjayIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdp
bGwgb2NjdXIgd2hlbiBhIGNoZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBh
Y2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYVW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJjaGVj
ayIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhbiB1bmNo
ZWNrZWQgY2hlY2tib3ggaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RBY3Rpb25WZXJiKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAic2VsZWN0IjsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gInNlbGVjdCI7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlua0FjdGlvblZlcmIoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoImp1bXAiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9j
Y3VyIHdoZW4gYSBsaW5rIGlzIGNsaWNrZWQsIGFzIHVzZWQgYnkgYWNjZXNzaWJpbGl0eSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjptaXNzaW5nUGx1Z2luVGV4dCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiTWlzc2luZyBQbHVnLWluIiwgIkxhYmVsIHRleHQgdG8g
YmUgdXNlZCB3aGVuIGEgcGx1Z2luIGlzIG1pc3NpbmciKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3Jhc2hlZFBsdWdpblRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJ
TkcoIlBsdWctaW4gRmFpbHVyZSIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgaWYgcGx1Z2luIGhv
c3QgcHJvY2VzcyBoYXMgY3Jhc2hlZCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjptdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCit7Cisg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KFVJX1NUUklORygiJWQgZmlsZXMiLCAiTGFiZWwgdG8g
ZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZpbGUgdXBsb2FkIGNv
bnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZGaWxlcyk7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVua25vd25GaWxlU2l6ZVRleHQoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlVua25vd24iLCAiVW5rbm93biBmaWxlc2l6ZSBGVFAgZGly
ZWN0b3J5IGxpc3RpbmcgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oV0lOKQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGxvYWRGaWxlVGV4dCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gInVwbG9hZCI7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmFsbEZpbGVzVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gImFsbCBmaWxlcyI7Cit9CisKKyNlbmRpZgorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjppbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUm
IHNpemUpCit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KFVJX1NUUklORygiJXMgJWTDlyVk
IHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0
aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjptZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB0
aGUgbWVkaWEgaXMgbG9hZGluZyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJMaXZlIEJyb2FkY2FzdCIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBtZXNzYWdl
IHdoZW4gd2F0Y2hpbmcgYSBsaXZlIGJyb2FkY2FzdCIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAg
cmV0dXJuIFVJX1NUUklORygiYXVkaW8gZWxlbWVudCBjb250cm9sbGVyIiwgImFjY2Vzc2liaWxp
dHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgYXVkaW8gZWxlbWVudCBjb250cm9sbGVyIik7CisgICAg
aWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInZp
ZGVvIGVsZW1lbnQgY29udHJvbGxlciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24g
Zm9yIHZpZGVvIGVsZW1lbnQgY29udHJvbGxlciIpOworICAgIGlmIChuYW1lID09ICJNdXRlQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibXV0ZSIsICJhY2Nlc3NpYmlsaXR5IHJv
bGUgZGVzY3JpcHRpb24gZm9yIG11dGUgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIlVuTXV0
ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInVubXV0ZSIsICJhY2Nlc3NpYmls
aXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHR1cm4gbXV0ZSBvZmYgYnV0dG9uIik7CisgICAgaWYg
KG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJwbGF5Iiwg
ImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcGxheSBidXR0b24iKTsKKyAgICBp
ZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJwYXVz
ZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHBhdXNlIGJ1dHRvbiIpOwor
ICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3Zp
ZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdGltZWxpbmUgc2xp
ZGVyIik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlclRodW1iIikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygidGltZWxpbmUgc2xpZGVyIHRodW1iIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNj
cmlwdGlvbiBmb3IgdGltZWxpbmUgdGh1bWIiKTsKKyAgICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYmFjayAzMCBzZWNvbmRzIiwgImFjY2Vz
c2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igc2VlayBiYWNrIDMwIHNlY29uZHMgYnV0dG9u
Iik7CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJyZXR1cm4gdG8gcmVhbHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciByZXR1cm4gdG8gcmVhbCB0aW1lIGJ1dHRvbiIpOworICAgIGlmIChu
YW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJl
bGFwc2VkIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBlbGFwc2Vk
IHRpbWUgZGlzcGxheSIpOworICAgIGlmIChuYW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIp
CisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJlbWFpbmluZyB0aW1lIiwgImFjY2Vzc2liaWxp
dHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdGltZSByZW1haW5pbmcgZGlzcGxheSIpOworICAgIGlm
IChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic3Rh
dHVzIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbW92aWUgc3RhdHVzIik7
CisgICAgaWYgKG5hbWUgPT0gIkZ1bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJmdWxsc2NyZWVuIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
ZW50ZXIgZnVsbHNjcmVlbiBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRC
dXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJmYXN0IGZvcndhcmQiLCAiYWNjZXNz
aWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBmYXN0IGZvcndhcmQgYnV0dG9uIik7CisgICAg
aWYgKG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygi
ZmFzdCByZXZlcnNlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgZmFzdCBy
ZXZlcnNlIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0
b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzaG93IGNsb3NlZCBjYXB0aW9ucyIsICJh
Y2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHNob3cgY2xvc2VkIGNhcHRpb25zIGJ1
dHRvbiIpOworICAgIGlmIChuYW1lID09ICJIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24iKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJoaWRlIGNsb3NlZCBjYXB0aW9ucyIsICJhY2Nlc3NpYmls
aXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGhpZGUgY2xvc2VkIGNhcHRpb25zIGJ1dHRvbiIpOwor
CisgICAgLy8gRklYTUU6IHRoZSBDb250cm9sc1BhbmVsIGNvbnRhaW5lciBzaG91bGQgbmV2ZXIg
YmUgdmlzaWJsZSBpbiB0aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkuCisgICAgaWYgKG5hbWUg
PT0gIkNvbnRyb2xzUGFuZWwiKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoImF1ZGlvIGVsZW1lbnQgcGxheWJhY2sgY29udHJvbHMg
YW5kIHN0YXR1cyBkaXNwbGF5IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
YXVkaW8gZWxlbWVudCBjb250cm9sbGVyIik7CisgICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVu
dCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29u
dHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlv
biBmb3IgdmlkZW8gZWxlbWVudCBjb250cm9sbGVyIik7CisgICAgaWYgKG5hbWUgPT0gIk11dGVC
dXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtdXRlIGF1ZGlvIHRyYWNrcyIsICJh
Y2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbXV0ZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9
PSAiVW5NdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidW5tdXRlIGF1ZGlv
IHRyYWNrcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgdW4gbXV0ZSBidXR0b24iKTsK
KyAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
ImJlZ2luIHBsYXliYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBwbGF5IGJ1dHRv
biIpOworICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoInBhdXNlIHBsYXliYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBwYXVz
ZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygibW92aWUgdGltZSBzY3J1YmJlciIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBm
b3IgdGltZWxpbmUgc2xpZGVyIik7CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlclRodW1iIikKKyAg
ICAgICAgcmV0dXJuIFVJX1NUUklORygibW92aWUgdGltZSBzY3J1YmJlciB0aHVtYiIsICJhY2Nl
c3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgdGltZWxpbmUgc2xpZGVyIHRodW1iIik7CisgICAgaWYg
KG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsg
bW92aWUgYmFjayAzMCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBqdW1w
IGJhY2sgMzAgc2Vjb25kcyBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJldHVybiBzdHJlYW1pbmcg
bW92aWUgdG8gcmVhbCB0aW1lIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciByZXR1cm4g
c3RyZWFtaW5nIG1vdmllIHRvIHJlYWwgdGltZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAi
Q3VycmVudFRpbWVEaXNwbGF5IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiY3VycmVudCBt
b3ZpZSB0aW1lIGluIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGVsYXBz
ZWQgdGltZSBkaXNwbGF5Iik7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5
IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygibnVtYmVyIG9mIHNlY29uZHMgb2YgbW92aWUg
cmVtYWluaW5nIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciByZW1haW5pbmcgdGltZSBk
aXNwbGF5Iik7CisgICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJjdXJyZW50IG1vdmllIHN0YXR1cyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbW92aWUgc3RhdHVzIGRpc3BsYXkiKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0Jh
Y2tCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWVrIHF1aWNrbHkgYmFjayIs
ICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZmFzdCByZXdpbmQgYnV0dG9uIik7CisgICAg
aWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklO
Rygic2VlayBxdWlja2x5IGZvcndhcmQiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGZh
c3QgZm9yd2FyZCBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1dHRvbiIp
CisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlBsYXkgbW92aWUgaW4gZnVsbHNjcmVlbiBtb2Rl
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBlbnRlciBmdWxsc2NyZWVuIGJ1dHRvbiIp
OworICAgIGlmIChuYW1lID09ICJTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJzdGFydCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyIsICJhY2Nl
c3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Igc2hvdyBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7Cisg
ICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVy
biBVSV9TVFJJTkcoInN0b3AgZGlzcGxheWluZyBjbG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJp
bGl0eSBoZWxwIHRleHQgZm9yIGhpZGUgY2xvc2VkIGNhcHRpb25zIGJ1dHRvbiIpOworCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9h
dCB0aW1lKQoreworICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImluZGVmaW5pdGUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgYW4g
aW5kZWZpbml0ZSBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUiKTsKKworICAgIGludCBzZWNv
bmRzID0gc3RhdGljX2Nhc3Q8aW50PihmYWJzZih0aW1lKSk7IAorICAgIGludCBkYXlzID0gc2Vj
b25kcyAvICg2MCAqIDYwICogMjQpOworICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2
MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOworICAgIHNlY29uZHMg
JT0gNjA7CisKKyAgICBpZiAoZGF5cykKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KFVJ
X1NUUklORygiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vjb25kcyIs
ICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVl
ID49IDEgZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICBpZiAoaG91
cnMpCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdChVSV9TVFJJTkcoIiUxJGQgaG91cnMg
JTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Ig
bWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMpOworICAgIGlmIChtaW51dGVzKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoVUlfU1RSSU5HKCIlMSRkIG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25k
cyIpLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoVUlfU1RS
SU5HKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNv
bnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kcyk7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4
dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygidmFsdWUgbWlzc2luZyIsICJWYWxpZGF0aW9u
IG1lc3NhZ2UgZm9yIHJlcXVpcmVkIGZvcm0gY29udHJvbCBlbGVtZW50cyB0aGF0IGhhdmUgbm8g
dmFsdWUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1l
c3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJ0eXBlIG1p
c21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRo
IGEgdmFsdWUgbm90IG1hdGNoaW5nIHR5cGUiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJwYXR0ZXJuIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBm
b3IgaW5wdXQgZm9ybSBjb250cm9scyByZXF1aXJpbmcgYSBjb25zdHJhaW5lZCB2YWx1ZSBhY2Nv
cmRpbmcgdG8gcGF0dGVybiIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2
YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJ0
b28gbG9uZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3
aXRoIGEgdmFsdWUgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJm
bG93VGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygicmFuZ2UgdW5kZXJmbG93IiwgIlZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2Vy
IHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKQoreworICAgIHJldHVybiBV
SV9TVFJJTkcoInJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQg
Zm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVN0ZXBN
aXNtYXRjaFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAi
VmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90
IHJlc3BlY3RpbmcgdGhlIHN0ZXAgYXR0cmlidXRlIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCShyZXZpc2lvbiA2Mzg0OSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAg
KzMwLDExIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyYXRlZ2llcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGx1Z2luU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xvY2Fs
aXphdGlvblN0cmF0ZWd5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2
YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6
UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kgewog
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICAKQEAgLTQyLDExICs0
MywxMjggQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdp
ZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJh
dGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0
ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRQbHVnaW5JbmZvKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwotICAgIAorCisgICAg
Ly8gV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kgICAgCisgICAgdmlydHVhbCBXZWJDb3Jl
OjpTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3Ry
aW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJp
bmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpT
dHJpbmcgc3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpT
dHJpbmcgZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
U3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgY29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpOworI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rSW5OZXdXaW5kb3coKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5k
b3coKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3du
bG9hZEltYWdlVG9EaXNrKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCk7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKTsKKyNpZiBQTEFURk9STShH
VEspCisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0
QWxsKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5w
dXRNZXRob2RzKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnVW5pY29kZSgpOworI2VuZGlmCisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnko
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlu
aygpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZUdyYW1tYXIoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBp
bmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a0dyYW1tYXJXaXRoU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rp
b24oKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1JpZ2h0VG9MZWZ0KCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFr
aW5nKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Rv
cFNwZWFraW5nKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoYm9v
bCBzaG93KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
bWFydENvcHlQYXN0ZSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0UXVvdGVzKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2Uo
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93
ZXJDYXNlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q2FwaXRhbGl6ZSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NoYW5nZUJhY2soY29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZXBsYWNlZFN0cmluZyk7Cisj
ZW5kaWYKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudCgpOworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hl
c1RleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWFdlYkFyZWFUZXh0KCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgQVhMaW5rVGV4dCgpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0
cmluZyBBWEltYWdlTWFwVGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIEFYSGVh
ZGluZ1RleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWERlZmluaXRpb25MaXN0
VGVybVRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWERlZmluaXRpb25MaXN0
RGVmaW5pdGlvblRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgYXJpYVR5cGUpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OlN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpT
dHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBj
cmFzaGVkUGx1Z2luVGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIG11bHRpcGxl
RmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcyk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpOworI2lmIFBMQVRGT1JNKFdJTikKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyB1cGxvYWRGaWxlVGV4dCgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6U3RyaW5nIGFsbEZpbGVzVGV4dCgpOworI2VuZGlmCisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmlu
ZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpT
dHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6U3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgbG9jYWxpemVk
TWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZs
b2F0KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVl
TWlzc2luZ1RleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlz
bWF0Y2hUZXh0KCk7CisKICAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsKIAogICAgIGJv
b2wgbV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkOwpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzOTAxKQorKysg
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
MC0wNy0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MzYKKyAgICAgICAgQWRkIGxvY2FsaXplZCBzdHJp
bmdzIHN0dWJzIGZvciBXZWJLaXQyLgorCisgICAgICAgIC0gQ29udmVydCBXZWJLaXQgKG1hYykg
dG8gdXNlIGEgTG9jYWxpemF0aW9uU3RyYXRlZ3kgcmF0aGVyIHRoYW4gdGhlIFdlYkNvcmVWaWV3
RmFjdG9yeQorICAgICAgICAgIGZvciBsb2NhbGl6ZWQgc3RyaW5ncy4KKworICAgICAgICBHZXRz
IHVzIGJlbG93IDIwMCB0ZXN0cyBmYWlsaW5nIGluIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKGZp
eE1lbnVzUmVjZWl2ZWRGcm9tT2xkQ2xpZW50cyk6IFVzZSBMb2NhbGl6ZWRTdHJpbmdzIHJhdGhl
ciB0aGFuIHRoZSBmYWN0b3J5LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbToKKwog
MjAxMC0wNy0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJldmlzaW9uIDYzNzYxKQorKysg
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYktpdC9ET01Qcml2YXRlLmg+
CiAKQEAgLTE2OCw3NyArMTY5LDc3IEBAIHN0YXRpYyB2b2lkIGZpeE1lbnVzUmVjZWl2ZWRGcm9t
T2xkQ2xpZW4KICAgICAgICAgaWYgKHRhZyA9PSBXZWJNZW51SXRlbVRhZ090aGVyKSB7CiAgICAg
ICAgICAgICAvLyBSZXN0b3JlIHRoZSBzcGVjaWZpYyB0YWcgZm9yIGl0ZW1zIG9uIHdoaWNoIHdl
IHRlbXBvcmFyaWx5IHNldCBXZWJNZW51SXRlbVRhZ090aGVyIHRvIG1hdGNoIG9sZCBiZWhhdmlv
ci4KICAgICAgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IFtpdGVtIHRpdGxlXTsKLSAgICAgICAg
ICAgIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtdXSkKKyAgICAgICAgICAgIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCldKQogICAgICAg
ICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnT3Blbkxpbms7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVk
RmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcl1dKQorICAgICAgICAgICAg
ZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVH
cmFtbWFyKCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnSWdu
b3JlR3JhbW1hcjsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6
W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnVdXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29u
dGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRh
ZyA9IFdlYk1lbnVJdGVtVGFnU3BlbGxpbmdNZW51OwotICAgICAgICAgICAgZWxzZSBpZiAoW3Rp
dGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOnRydWVdXQotICAgICAgICAgICAgICAgICAg
ICAgfHwgW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3Rv
cnldIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOmZhbHNlXV0pCisgICAgICAg
ICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1No
b3dTcGVsbGluZ1BhbmVsKHRydWUpXQorICAgICAgICAgICAgICAgICAgICAgfHwgW3RpdGxlIGlz
RXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChmYWxzZSld
KQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU2hvd1NwZWxsaW5n
UGFuZWw7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2Vi
Vmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
Z11dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9
IFdlYk1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRs
ZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmddXSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
Z1doaWxlVHlwaW5nKCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxl
IGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ11dKQorICAgICAgICAgICAgZWxzZSBp
ZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmcoKV0pCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1U
YWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUg
aXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1l
bnVJdGVtVGFnRm9udE1lbnVdXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFs
VG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKV0pCiAgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdGb250TWVudTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBj
b250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHNdXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRs
ZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKCldKQogICAgICAg
ICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU2hvd0ZvbnRzOwotICAgICAgICAg
ICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJl
ZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ0JvbGRdXSkKKyAgICAgICAgICAgIGVsc2UgaWYg
KFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnQm9sZCgpXSkKICAgICAg
ICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0JvbGQ7Ci0gICAgICAgICAgICBl
bHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFj
dG9yeV0gY29udGV4dE1lbnVJdGVtVGFnSXRhbGljXV0pCisgICAgICAgICAgICBlbHNlIGlmIChb
dGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpXSkKICAgICAg
ICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0l0YWxpYzsKLSAgICAgICAgICAg
IGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmVdXSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCld
KQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnVW5kZXJsaW5lOwot
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmVdXSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnT3V0
bGluZSgpXSkKICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ091dGxp
bmU7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzXV0pCisgICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRh
Z1N0eWxlcygpXSkKICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ1N0
eWxlczsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzXV0p
CisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51
SXRlbVRhZ1Nob3dDb2xvcnMoKV0pCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVu
dUl0ZW1UYWdTaG93Q29sb3JzOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxU
b1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRh
Z1NwZWVjaE1lbnVdXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJp
bmc6Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpXSkKICAgICAgICAgICAgICAgICBtb2Rl
cm5UYWcgPSBXZWJNZW51SXRlbVRhZ1NwZWVjaE1lbnU7Ci0gICAgICAgICAgICBlbHNlIGlmIChb
dGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29u
dGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZ11dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3Rp
dGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCldKQog
ICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzsK
LSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFj
dG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmddXSkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVt
VGFnU3RvcFNwZWFraW5nKCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJ
dGVtVGFnU3RvcFNwZWFraW5nOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxU
b1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRh
Z1dyaXRpbmdEaXJlY3Rpb25NZW51XV0pCisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCldKQog
ICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlv
bk1lbnU7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2Vi
Vmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVj
dGlvbl1dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250
ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCldKQogICAgICAgICAgICAgICAgIG1vZGVy
blRhZyA9IFdlYk1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbjsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5
XSBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodF1dKQorICAgICAgICAgICAgZWxzZSBpZiAo
W3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpXSkK
ICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0Owot
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0
b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0XV0pCisgICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRh
Z1JpZ2h0VG9MZWZ0KCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVt
VGFnUmlnaHRUb0xlZnQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3Ry
aW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnSW5z
cGVjdEVsZW1lbnRdXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJp
bmc6Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKV0pCiAgICAgICAgICAgICAgICAg
bW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKLSAgICAgICAgICAgIGVs
c2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0
b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5XV0pCisg
ICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRl
bVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKV0pCiAgICAgICAgICAgICAgICAgbW9k
ZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OwotICAg
ICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5
IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51XV0pCisg
ICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRl
bVRhZ1N1YnN0aXR1dGlvbnNNZW51KCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9IFdl
Yk1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0
bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4
dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6dHJ1ZV1dCi0gICAgICAgICAgICAgICAgICAg
ICB8fCBbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9y
eV0gY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6ZmFsc2VdXSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU2hv
d1N1YnN0aXR1dGlvbnModHJ1ZSldCisgICAgICAgICAgICAgICAgICAgICB8fCBbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGZhbHNlKV0p
CiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0
aW9uczsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJW
aWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZV1dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0
TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpXSkKICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcg
PSBXZWJNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOwotICAgICAgICAgICAgZWxzZSBpZiAoW3Rp
dGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzXV0pCisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUg
aXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCldKQogICAgICAg
ICAgICAgICAgIG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnU21hcnRRdW90ZXM7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hh
cmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXNdXSkKKyAgICAgICAgICAg
IGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJdGVtVGFnU21hcnRE
YXNoZXMoKV0pCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdTbWFy
dERhc2hlczsKLSAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tX
ZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtz
XV0pCisgICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0TGlua3MoKV0pCiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2Vi
TWVudUl0ZW1UYWdTbWFydExpbmtzOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1
YWxUb1N0cmluZzpbW1dlYlZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRl
bVRhZ1RleHRSZXBsYWNlbWVudF1dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1
YWxUb1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQoKV0pCiAgICAgICAg
ICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQ7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNFcXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkg
c2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudV1dKQor
ICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpjb250ZXh0TWVudUl0
ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCldKQogICAgICAgICAgICAgICAgIG1vZGVyblRhZyA9
IFdlYk1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6W1tXZWJWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBj
b250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlXV0pCisgICAgICAgICAgICBlbHNlIGlmIChb
dGl0bGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2UoKV0p
CiAgICAgICAgICAgICAgICAgbW9kZXJuVGFnID0gV2ViTWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNl
OwotICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxUb1N0cmluZzpbW1dlYlZpZXdG
YWN0b3J5IHNoYXJlZEZhY3RvcnldIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2VdXSkK
KyAgICAgICAgICAgIGVsc2UgaWYgKFt0aXRsZSBpc0VxdWFsVG9TdHJpbmc6Y29udGV4dE1lbnVJ
dGVtVGFnTWFrZUxvd2VyQ2FzZSgpXSkKICAgICAgICAgICAgICAgICBtb2Rlcm5UYWcgPSBXZWJN
ZW51SXRlbVRhZ01ha2VMb3dlckNhc2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChbdGl0bGUgaXNF
cXVhbFRvU3RyaW5nOltbV2ViVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gY29udGV4dE1lbnVJ
dGVtVGFnQ2FwaXRhbGl6ZV1dKQorICAgICAgICAgICAgZWxzZSBpZiAoW3RpdGxlIGlzRXF1YWxU
b1N0cmluZzpjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCldKQogICAgICAgICAgICAgICAg
IG1vZGVyblRhZyA9IFdlYk1lbnVJdGVtVGFnQ2FwaXRhbGl6ZTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IFdlYk1lbnVJdGVtVGFnT3RoZXIgZm9y
IGFueSBpdGVtcyBvdGhlciB0aGFuIHRoZSBvbmVzIHdlIGV4cGxpY2l0bHkgaGFuZGxlLgpJbmRl
eDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCShyZXZpc2lvbiA2Mzc2MSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDkgQEAKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bHVnaW5TdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemF0aW9uU3RyYXRlZ3ku
aD4KIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSB7CitjbGFzcyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVz
LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvY2Fs
aXphdGlvblN0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7
CiAgICAgCkBAIC0zOCwxMCArMzksMTE1IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29y
ZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSogY3JlYXRlUGx1Z2luU3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXph
dGlvblN0cmF0ZWd5KiBjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpOwogCiAgICAgLy8gV2Vi
Q29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4mKTsKKworICAgIC8vIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5ICAgIAorICAgIHZp
cnR1YWwgV2ViQ29yZTo6U3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6U3RyaW5nIHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlN0cmluZyBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKTsKKyNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5J
bWFnZUluTmV3V2luZG93KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3co
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCk7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJk
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcCgp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91
bmQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25v
cmVTcGVsbGluZygpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0xlYXJuU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bChib29sIHNob3cpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrU3BlbGxpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUo
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5l
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGlu
Z0RpcmVjdGlvbk1lbnUoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQo
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9u
dHMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdHls
ZXMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93
Q29sb3JzKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
U3BlZWNoTWVudSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1N0YXJ0U3BlYWtpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCk7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUo
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vi
c3RpdHV0aW9ucyhib29sIHNob3cpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQoKTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlv
bnNNZW51KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
TWFrZVVwcGVyQ2FzZSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01ha2VMb3dlckNhc2UoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdJbnNwZWN0RWxlbWVudCgpOworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1Rl
eHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRT
ZWFyY2hlc1RleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWFdlYkFyZWFUZXh0
KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgQVhMaW5rVGV4dCgpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlN0cmluZyBBWEltYWdlTWFwVGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5n
IEFYSGVhZGluZ1RleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWERlZmluaXRp
b25MaXN0VGVybVRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWERlZmluaXRp
b25MaXN0RGVmaW5pdGlvblRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWEFS
SUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgYXJpYVR5cGUpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0
cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIG11
bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcyk7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJp
bmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
U3RyaW5nIG1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGxvY2FsaXpl
ZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihm
bG9hdCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1
ZU1pc3NpbmdUZXh0KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCk7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4
dCgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1p
c21hdGNoVGV4dCgpOwogfTsKIAogI2VuZGlmIC8vIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQkocmV2aXNpb24gNjM3NjEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTEgQEAK
IAogI2ltcG9ydCAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAKKyNpbXBvcnQgIldlYkxvY2Fs
aXphYmxlU3RyaW5ncy5oIgogI2ltcG9ydCAiV2ViUGx1Z2luRGF0YWJhc2UuaCIKICNpbXBvcnQg
IldlYlBsdWdpblBhY2thZ2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0ludFNpemUuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCkBAIC01Myw2ICs1NSwxMSBAQCBQbHVnaW5T
dHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAK
K0xvY2FsaXphdGlvblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvY2Fs
aXphdGlvblN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKIHsKICAgICBbW1dlYlBsdWdpbkRhdGFi
YXNlIHNoYXJlZERhdGFiYXNlXSByZWZyZXNoXTsKQEAgLTcyLDQgKzc5LDY4NiBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIH0KIAorLy8gTG9jYWxpemF0aW9uU3RyYXRlZ3kgICAgCisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmlucHV0RWxlbWVudEFsdFRleHQoKQoreworICAgIHJldHVybiBV
SV9TVFJJTkdfS0VZKCJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBlbGVtZW50KSIsICJhbHQgdGV4
dCBmb3IgPGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9yIHZhbHVlIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVs
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJSZXNldCIsICJkZWZhdWx0IGxhYmVsIGZvciBS
ZXNldCBidXR0b25zIGluIGZvcm1zIG9uIHdlYiBwYWdlcyIpOworfQorCitTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlRoaXMgaXMgYSBzZWFyY2hhYmxlIGluZGV4LiBFbnRlciBzZWFyY2gg
a2V5d29yZHM6ICIsCisgICAgICAgICJ0ZXh0IHRoYXQgYXBwZWFycyBhdCB0aGUgc3RhcnQgb2Yg
bmVhcmx5LW9ic29sZXRlIHdlYiBwYWdlcyBpbiB0aGUgZm9ybSBvZiBhICdzZWFyY2hhYmxlIGlu
ZGV4JyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdWJtaXRCdXR0b25E
ZWZhdWx0TGFiZWwoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN1Ym1pdCIsICJkZWZhdWx0
IGxhYmVsIGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgp
Cit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hvb3NlIEZpbGUiLCAidGl0bGUgZm9yIGZpbGUg
YnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygibm8gZmlsZSBzZWxlY3RlZCIsICJ0ZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0
b24gdXNlZCBpbiBIVE1MIGZvcm1zIHdoZW4gbm8gZmlsZSBpcyBzZWxlY3RlZCIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsK
K30KKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJPcGVuIExpbmsgaW4gTmV3IFdpbmRvdyIsICJPcGVuIGluIE5ldyBX
aW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJEb3dubG9hZCBMaW5rZWQgRmlsZSIsICJEb3dubG9hZCBMaW5rZWQgRmls
ZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJDb3B5IExpbmsiLCAiQ29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9
CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5J
bWFnZUluTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEltYWdlIGlu
IE5ldyBXaW5kb3ciLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkRvd25sb2Fk
IEltYWdlIiwgIkRvd25sb2FkIEltYWdlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xp
cGJvYXJkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3B5IEltYWdlIiwgIkNvcHkgSW1h
Z2UgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoIk9wZW4gRnJhbWUgaW4gTmV3IFdpbmRvdyIsICJPcGVuIEZyYW1lIGluIE5l
dyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCit7CisgICAgcmV0dXJu
IFVJX1NUUklORygiQmFjayIsICJCYWNrIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiRm9yd2FyZCIsICJGb3J3YXJkIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ1N0b3AoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlN0b3AiLCAiU3RvcCBjb250ZXh0
IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0
TWVudUl0ZW1UYWdSZWxvYWQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlJlbG9hZCIsICJS
ZWxvYWQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJD
dXQiLCAiQ3V0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJQYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiTm8gR3Vlc3NlcyBGb3VuZCIsICJObyBHdWVzc2VzIEZv
dW5kIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJJZ25vcmUgU3BlbGxpbmciLCAiSWdub3JlIFNwZWxsaW5nIGNvbnRleHQgbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0xlYXJuU3BlbGxpbmcoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkxlYXJuIFNwZWxs
aW5nIiwgIkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiU2VhcmNoIGluIEdvb2dsZSIsICJTZWFyY2ggaW4gR29vZ2xl
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSgpCit7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiT3Bl
biBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJJZ25vcmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1hciBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQoreworI2lmbmRlZiBCVUlMRElOR19PTl9U
SUdFUgorICAgIHJldHVybiBVSV9TVFJJTkcoIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxs
aW5nIGFuZCBHcmFtbWFyIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworI2Vsc2UKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJTcGVsbGluZyIsICJTcGVsbGluZyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0i
KTsKKyNlbmRpZgorfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCit7CisjaWZuZGVmIEJVSUxESU5H
X09OX1RJR0VSCisgICAgaWYgKHNob3cpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cg
U3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJuIFVJ
X1NUUklORygiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsK
KyNlbHNlCisgICAgcmV0dXJuIFVJX1NUUklORygiU3BlbGxpbmcuLi4iLCAibWVudSBpdGVtIHRp
dGxlIik7CisjZW5kaWYKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCit7CisjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VS
CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgRG9jdW1lbnQgTm93IiwgIkNoZWNrIHNwZWxs
aW5nIGNvbnRleHQgbWVudSBpdGVtIik7CisjZWxzZQorICAgIHJldHVybiBVSV9TVFJJTkcoIkNo
ZWNrIFNwZWxsaW5nIiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CisjZW5k
aWYKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKK3sKKyNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciLCAiQ2hl
Y2sgc3BlbGxpbmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CisjZWxzZQorICAg
IHJldHVybiBVSV9TVFJJTkcoIkNoZWNrIFNwZWxsaW5nIGFzIFlvdSBUeXBlIiwgIkNoZWNrIHNw
ZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworI2VuZGlmCit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1h
cldpdGhTcGVsbGluZygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgR3JhbW1hciBX
aXRoIFNwZWxsaW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdGb250TWVudSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiRm9udCIsICJGb250IGNv
bnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJCb2xk
IiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCit7Cisg
ICAgcmV0dXJuIFVJX1NUUklORygiVW5kZXJsaW5lIiwgIlVuZGVybGluZSBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdPdXRsaW5lKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJPdXRsaW5lIiwgIk91dGxp
bmUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRp
cmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKKyNlbHNlCisgICAgcmV0dXJuIFVJX1NU
UklORygiV3JpdGluZyBEaXJlY3Rpb24iLCAiV3JpdGluZyBkaXJlY3Rpb24gY29udGV4dCBzdWIt
bWVudSBpdGVtIik7CisjZW5kaWYKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVybiBVSV9T
VFJJTkcoIlNlbGVjdGlvbiBEaXJlY3Rpb24iLCAiU2VsZWN0aW9uIGRpcmVjdGlvbiBjb250ZXh0
IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiRGVmYXVsdCIsICJEZWZhdWx0IHdyaXRpbmcgZGlyZWN0aW9uIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJMZWZ0IHRvIFJpZ2h0Iiwg
IkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorCitTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCit7CisgICAg
cmV0dXJuIFVJX1NUUklORygiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2ggaW4gU3BvdGxp
Z2h0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCit7CisgICAgcmV0dXJuIFVJX1NUUklO
RygiU2hvdyBGb250cyIsICJTaG93IGZvbnRzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpCit7
CisgICAgcmV0dXJuIFVJX1NUUklORygiU3R5bGVzLi4uIiwgIlN0eWxlcyBjb250ZXh0IG1lbnUg
aXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTaG93Q29sb3JzKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTaG93IENvbG9ycyIs
ICJTaG93IGNvbG9ycyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKK3sKKyAgICByZXR1
cm4gVUlfU1RSSU5HKCJTcGVlY2giLCAiU3BlZWNoIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdGFy
dFNwZWFraW5nKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdGFydCBTcGVha2luZyIsICJT
dGFydCBzcGVha2luZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIlN0b3AgU3BlYWtpbmciLCAiU3RvcCBzcGVha2luZyBjb250ZXh0IG1l
bnUgaXRlbSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKK3sKKyAgICByZXR1cm4gVUlf
U1RSSU5HKCJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiLCAiQ29ycmVjdCBTcGVsbGlu
ZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlvbnMgY29u
dGV4dCBzdWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdykKK3sKKyAgICBp
ZiAoc2hvdykgCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIlNob3cgU3Vic3RpdHV0aW9ucyIs
ICJtZW51IGl0ZW0gdGl0bGUiKTsKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJIaWRlIFN1YnN0aXR1
dGlvbnMiLCAibWVudSBpdGVtIHRpdGxlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJTbWFydCBDb3B5L1Bhc3RlIiwgIlNtYXJ0IENvcHkvUGFzdGUgY29udGV4dCBt
ZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1l
bnVJdGVtVGFnU21hcnRRdW90ZXMoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IFF1
b3RlcyIsICJTbWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQorewor
ICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4
dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiU21hcnQg
TGlua3MiLCAiU21hcnQgTGlua3MgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCkK
K3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50IiwgIlRleHQgUmVwbGFj
ZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpCit7CisgICAgcmV0
dXJuIFVJX1NUUklORygiVHJhbnNmb3JtYXRpb25zIiwgIlRyYW5zZm9ybWF0aW9ucyBjb250ZXh0
IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
TWFrZSBVcHBlciBDYXNlIiwgIk1ha2UgVXBwZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtl
TG93ZXJDYXNlKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtlIExvd2VyIENhc2UiLCAi
TWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKQoreworICAgIHJl
dHVybiBVSV9TVFJJTkcoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1lbnUgaXRl
bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCit7CisgICAgc3RhdGlj
IE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPSBuaWw7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgc3RhdGljIGJvb2wg
bG9va2VkVXBTdHJpbmcgPSBmYWxzZTsKKyAgICBpZiAoIWxvb2tlZFVwU3RyaW5nKSB7CisgICAg
ICAgIGZvcm1hdFN0cmluZyA9IFtbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltOU1NwZWxsQ2hl
Y2tlciBjbGFzc11dIGxvY2FsaXplZFN0cmluZ0ZvcktleTpAIkNoYW5nZSBCYWNrIHRvIFxcVTIw
MUMlQFxcVTIwMUQiIHZhbHVlOm5pbCB0YWJsZTpAIk1lbnVDb21tYW5kcyJdIHJldGFpbl07Cisg
ICAgICAgIGxvb2tlZFVwU3RyaW5nID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoIWZv
cm1hdFN0cmluZykKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkU3RyaW5nOworICAgIHJldHVybiBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXRTdHJpbmcsIChOU1N0cmluZyAqKXJlcGxh
Y2VkU3RyaW5nXTsKK30KKworI2VuZGlmCisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKK3sKKyAgICByZXR1cm4gVUlfU1RS
SU5HKCJJbnNwZWN0IEVsZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJObyByZWNlbnQgc2VhcmNoZXMiLCAiTGFiZWwgZm9yIG9ubHkg
aXRlbSBpbiBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2ggZmll
bGQgaW1hZ2UsIHdoZW4gbm8gc2VhcmNoZXMgaGF2ZSBiZWVuIHBlcmZvcm1lZCIpOworfQorCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0
KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJSZWNlbnQgU2VhcmNoZXMiLCAibGFiZWwgZm9y
IGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhl
IHNlYXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJlZGRlZCBtZW51IHRpdGxlIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJj
aGVzVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygiQ2xlYXIgUmVjZW50IFNlYXJjaGVz
IiwgIm1lbnUgaXRlbSBpbiBSZWNlbnQgU2VhcmNoZXMgbWVudSB0aGF0IGVtcHRpZXMgbWVudSdz
IGNvbnRlbnRzIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJl
YVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkhUTUwgY29udGVudCIsICJhY2Nlc3Np
YmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHdlYiBhcmVhIik7Cit9CisKK1N0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlua1RleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkco
ImxpbmsiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBsaW5rIik7Cit9CisK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlzdE1hcmtlclRleHQoKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoImxpc3QgbWFya2VyIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNj
cmlwdGlvbiBmb3IgbGlzdCBtYXJrZXIiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6QVhJbWFnZU1hcFRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoImltYWdlIG1h
cCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGltYWdlIG1hcCIpOworfQor
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEhlYWRpbmdUZXh0KCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJoZWFkaW5nIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlv
biBmb3IgaGVhZGluZ3MiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhE
ZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJ0ZXJtIiwg
InRlcm0gd29yZCBvZiBhIGRlZmluaXRpb24iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJkZWZpbml0aW9uIiwgImRlZmluaXRpb24gcGhyYXNlIik7Cit9CisKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3Ry
aW5nJiBhcmlhVHlwZSkKK3sKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFs
ZXJ0IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYWxlcnQiLCAiQW4gQVJJQSBhY2Nlc3Np
YmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhbGVydC4iKTsKKyAgICBpZiAoYXJpYVR5cGUg
PT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklO
RygiYWxlcnQgZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMg
YXMgYW4gYWxlcnQgZGlhbG9nLiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0
aW9uRGlhbG9nIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZGlhbG9nIiwgIkFuIEFSSUEg
YWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gZGlhbG9nLiIpOworICAgIGlmIChh
cmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uTG9nIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklO
RygibG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBjb25z
b2xlIGxvZy4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUi
KQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtYXJxdWVlIiwgIkFuIEFSSUEgYWNjZXNzaWJp
bGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBtYXJxdWVlLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5
cGUgPT0gIkFSSUFBcHBsaWNhdGlvblN0YXR1cyIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
ImFwcGxpY2F0aW9uIHN0YXR1cyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBh
Y3RzIGFzIGEgc3RhdHVzIHVwZGF0ZS4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklB
QXBwbGljYXRpb25UaW1lciIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRpbWVyIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gdXBkYXRpbmcgdGltZXIu
Iik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50IikKKyAgICAgICAgcmV0
dXJuIFVJX1NUUklORygiZG9jdW1lbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRo
YXQgYWN0cyBhcyBhIGRvY3VtZW50LiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFE
b2N1bWVudEFydGljbGUiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcnRpY2xlIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYXJ0aWNsZS4iKTsgICAg
CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnROb3RlIikKKyAgICAgICAgcmV0dXJu
IFVJX1NUUklORygibm90ZSIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3Rz
IGFzIGEgbm90ZSBpbiBhIGRvY3VtZW50LiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFS
SUFEb2N1bWVudFJlZ2lvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInJlZ2lvbiIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgZGlzdGluY3QgcmVnaW9u
IGluIGEgZG9jdW1lbnQuIik7ICAgIAorICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJr
QXBwbGljYXRpb24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhcHBsaWNhdGlvbiIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFwcGxpY2F0aW9uLiIp
OyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0Jhbm5lciIpCisgICAgICAg
IHJldHVybiBVSV9TVFJJTkcoImJhbm5lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAg
dGhhdCBhY3RzIGFzIGEgYmFubmVyLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFM
YW5kbWFya0NvbXBsZW1lbnRhcnkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJjb21wbGVt
ZW50YXJ5IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSByZWdp
b24gb2YgY29tcGxlbWVudGFyeSBpbmZvcm1hdGlvbi4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBl
ID09ICJBUklBTGFuZG1hcmtDb250ZW50SW5mbyIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
ImNvbnRlbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgY29u
dGVudC4iKTsgICAgCisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtNYWluIikKKyAg
ICAgICAgcmV0dXJuIFVJX1NUUklORygibWFpbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3Jv
dXAgdGhhdCBpcyB0aGUgbWFpbiBwb3J0aW9uIG9mIHRoZSB3ZWJzaXRlLiIpOyAgICAKKyAgICBp
ZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya05hdmlnYXRpb24iKQorICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJuYXZpZ2F0aW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGNvbnRhaW5zIHRoZSBtYWluIG5hdmlnYXRpb24gZWxlbWVudHMgb2YgYSB3ZWJzaXRlLiIpOyAg
ICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya1NlYXJjaCIpCisgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoInNlYXJjaCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhh
dCBjb250YWlucyBhIHNlYXJjaCBmZWF0dXJlIG9mIGEgd2Vic2l0ZS4iKTsgICAgCisgICAgaWYg
KGFyaWFUeXBlID09ICJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiKQorICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJ0b29sdGlwIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFj
dHMgYXMgYSB0b29sdGlwLiIpOyAgICAKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFUYWJQYW5l
bCIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInRhYiBwYW5lbCIsICJBbiBBUklBIGFjY2Vz
c2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyB0aGUgY29udGVudCBvZiBhIHRhYi4iKTsKKyAg
ICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudE1hdGgiKQorICAgICAgICByZXR1cm4gVUlf
U1RSSU5HKCJtYXRoIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5z
IG1hdGhlbWF0aWNhbCBzeW1ib2xzLiIpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhCdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJwcmVzcyIsICJWZXJiIHN0YXRpbmcgdGhlIGFjdGlvbiB0aGF0IHdp
bGwgb2NjdXIgd2hlbiBhIGJ1dHRvbiBpcyBwcmVzc2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxp
dHkiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhSYWRpb0J1dHRvbkFj
dGlvblZlcmIoKSAKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWxlY3QiLCAiVmVyYiBzdGF0
aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSByYWRpbyBidXR0b24gaXMgY2xp
Y2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCit7CisgICAgcmV0dXJuIFVJX1NU
UklORygiYWN0aXZhdGUiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3Vy
IHdoZW4gYSB0ZXh0IGZpZWxkIGlzIHNlbGVjdGVkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHki
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhDaGVja2VkQ2hlY2tCb3hB
Y3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bmNoZWNrIiwgIlZlcmIgc3Rh
dGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgY2hlY2tlZCBjaGVja2JveCBp
cyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoImNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQg
d2lsbCBvY2N1ciB3aGVuIGFuIHVuY2hlY2tlZCBjaGVja2JveCBpcyBjbGlja2VkLCBhcyB1c2Vk
IGJ5IGFjY2Vzc2liaWxpdHkiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhNZW51TGlzdEFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCit7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpBWExpbmtBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJqdW1wIiwgIlZl
cmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgbGluayBpcyBjbGlj
a2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkco
Ik1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hlbiBhIHBsdWdpbiBp
cyBtaXNzaW5nIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyYXNoZWRQ
bHVnaW5UZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJQbHVnLWluIEZhaWx1cmUiLCAi
TGFiZWwgdGV4dCB0byBiZSB1c2VkIGlmIHBsdWdpbiBob3N0IHByb2Nlc3MgaGFzIGNyYXNoZWQi
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bXVsdGlwbGVGaWxlVXBsb2Fk
VGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpVSV9TVFJJTkcoIiVkIGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRo
ZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQg
YWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51bWJlck9mRmlsZXNdOworfQorCitTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp1bmtub3duRmlsZVNpemVUZXh0KCkKK3sKKyAgICByZXR1cm4g
VUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25vd24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0
aW5nIGl0ZW0iKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRs
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkcoIiVAICVkw5clZCBwaXhl
bHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGlj
YXRpb24gc3ltYm9sLCBub3QgeCkiKSwgKE5TU3RyaW5nICopZmlsZW5hbWUsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKV07Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1l
ZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkcoIkxv
YWRpbmcuLi4iLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHRoZSBtZWRp
YSBpcyBsb2FkaW5nIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1lZGlh
RWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQoreworICAgIHJldHVybiBVSV9TVFJJTkco
IkxpdmUgQnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hlbiB3
YXRjaGluZyBhIGxpdmUgYnJvYWRjYXN0Iik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4g
VUlfU1RSSU5HKCJhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAobmFt
ZSA9PSAiVmlkZW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidmlkZW8gZWxl
bWVudCBjb250cm9sbGVyIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igdmlk
ZW8gZWxlbWVudCBjb250cm9sbGVyIik7CisgICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQor
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtdXRlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNj
cmlwdGlvbiBmb3IgbXV0ZSBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9u
IikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygidW5tdXRlIiwgImFjY2Vzc2liaWxpdHkgcm9s
ZSBkZXNjcmlwdGlvbiBmb3IgdHVybiBtdXRlIG9mZiBidXR0b24iKTsKKyAgICBpZiAobmFtZSA9
PSAiUGxheUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInBsYXkiLCAiYWNjZXNz
aWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBwbGF5IGJ1dHRvbiIpOworICAgIGlmIChuYW1l
ID09ICJQYXVzZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInBhdXNlIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcGF1c2UgYnV0dG9uIik7CisgICAgaWYg
KG5hbWUgPT0gIlNsaWRlciIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1vdmllIHRpbWUi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lbGluZSBzbGlkZXIiKTsK
KyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJ0aW1lbGluZSBzbGlkZXIgdGh1bWIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9u
IGZvciB0aW1lbGluZSB0aHVtYiIpOworICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQor
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYWNrIDMwIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0
eSByb2xlIGRlc2NyaXB0aW9uIGZvciBzZWVrIGJhY2sgMzAgc2Vjb25kcyBidXR0b24iKTsKKyAg
ICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBV
SV9TVFJJTkcoInJldHVybiB0byByZWFsdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIHJldHVybiB0byByZWFsIHRpbWUgYnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0g
IkN1cnJlbnRUaW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImVsYXBzZWQg
dGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGVsYXBzZWQgdGltZSBk
aXNwbGF5Iik7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKKyAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygicmVtYWluaW5nIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciB0aW1lIHJlbWFpbmluZyBkaXNwbGF5Iik7CisgICAgaWYgKG5hbWUg
PT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzdGF0dXMiLCAi
YWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBtb3ZpZSBzdGF0dXMiKTsKKyAgICBp
ZiAobmFtZSA9PSAiRnVsbHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkco
ImZ1bGxzY3JlZW4iLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBlbnRlciBm
dWxsc2NyZWVuIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIp
CisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoImZhc3QgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5
IHJvbGUgZGVzY3JpcHRpb24gZm9yIGZhc3QgZm9yd2FyZCBidXR0b24iKTsKKyAgICBpZiAobmFt
ZSA9PSAiU2Vla0JhY2tCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJmYXN0IHJl
dmVyc2UiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBmYXN0IHJldmVyc2Ug
YnV0dG9uIik7CisgICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisg
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNob3cgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2li
aWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Igc2hvdyBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7
CisgICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoImhpZGUgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgcm9s
ZSBkZXNjcmlwdGlvbiBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7CisKKyAgICAv
LyBGSVhNRTogdGhlIENvbnRyb2xzUGFuZWwgY29udGFpbmVyIHNob3VsZCBuZXZlciBiZSB2aXNp
YmxlIGluIHRoZSBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4KKyAgICBpZiAobmFtZSA9PSAiQ29u
dHJvbHNQYW5lbCIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAg
cmV0dXJuIFVJX1NUUklORygiYXVkaW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3Rh
dHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhdWRpbyBl
bGVtZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKKyAg
ICAgICAgcmV0dXJuIFVJX1NUUklORygidmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBh
bmQgc3RhdHVzIGRpc3BsYXkiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB2
aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIp
CisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm11dGUgYXVkaW8gdHJhY2tzIiwgImFjY2Vzc2li
aWxpdHkgaGVscCB0ZXh0IGZvciBtdXRlIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJVbk11
dGVCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ1bm11dGUgYXVkaW8gdHJhY2tz
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB1biBtdXRlIGJ1dHRvbiIpOworICAgIGlm
IChuYW1lID09ICJQbGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYmVnaW4g
cGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBsYXkgYnV0dG9uIik7Cisg
ICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygi
cGF1c2UgcGxheWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBhdXNlIGJ1dHRv
biIpOworICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJtb3ZpZSB0aW1lIHNjcnViYmVyIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciB0aW1l
bGluZSBzbGlkZXIiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIHRodW1iIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciB0aW1lbGluZSBzbGlkZXIgdGh1bWIiKTsKKyAgICBpZiAobmFtZSA9
PSAiUmV3aW5kQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2VlayBtb3ZpZSBi
YWNrIDMwIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGp1bXAgYmFjayAz
MCBzZWNvbmRzIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmV0dXJuIHN0cmVhbWluZyBtb3ZpZSB0
byByZWFsIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJldHVybiBzdHJlYW1p
bmcgbW92aWUgdG8gcmVhbCB0aW1lIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJDdXJyZW50
VGltZURpc3BsYXkiKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJjdXJyZW50IG1vdmllIHRp
bWUgaW4gc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZWxhcHNlZCB0aW1l
IGRpc3BsYXkiKTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiKQorICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJudW1iZXIgb2Ygc2Vjb25kcyBvZiBtb3ZpZSByZW1haW5p
bmciLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHJlbWFpbmluZyB0aW1lIGRpc3BsYXki
KTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImN1cnJlbnQgbW92aWUgc3RhdHVzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZv
ciBtb3ZpZSBzdGF0dXMgZGlzcGxheSIpOworICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRv
biIpCisgICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsgcXVpY2tseSBiYWNrIiwgImFjY2Vz
c2liaWxpdHkgaGVscCB0ZXh0IGZvciBmYXN0IHJld2luZCBidXR0b24iKTsKKyAgICBpZiAobmFt
ZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWVr
IHF1aWNrbHkgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZmFzdCBmb3J3
YXJkIGJ1dHRvbiIpOworICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIFVJX1NUUklORygiUGxheSBtb3ZpZSBpbiBmdWxsc2NyZWVuIG1vZGUiLCAiYWNj
ZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGVudGVyIGZ1bGxzY3JlZW4gYnV0dG9uIik7CisgICAg
aWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVybiBV
SV9TVFJJTkcoInN0YXJ0IGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxp
dHkgaGVscCB0ZXh0IGZvciBzaG93IGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKKyAgICBpZiAo
bmFtZSA9PSAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFVJX1NU
UklORygic3RvcCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUp
Cit7CisgICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAgICAgICAgcmV0dXJuIFVJX1NUUklORygi
aW5kZWZpbml0ZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBhbiBpbmRlZmlu
aXRlIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSIpOworCisgICAgaW50IHNlY29uZHMgPSAo
aW50KWZhYnNmKHRpbWUpOyAKKyAgICBpbnQgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2MCAqIDI0
KTsKKyAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVz
ID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGRh
eXMpCisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkco
IiUxJGQgZGF5cyAlMiRkIGhvdXJzICUzJGQgbWludXRlcyAlNCRkIHNlY29uZHMiLCAiYWNjZXNz
aWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSAxIGRh
eSIpLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kc107CisgICAgZWxzZSBpZiAoaG91cnMp
CisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkcoIiUx
JGQgaG91cnMgJTIkZCBtaW51dGVzICUzJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIG1pbnV0ZXMiKSwgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHNdOworICAgIGVsc2UgaWYgKG1pbnV0ZXMpCisgICAgICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkcoIiUxJGQgbWludXRlcyAl
MiRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xs
ZXIgdGltZSB2YWx1ZSA+PSA2MCBzZWNvbmRzIiksIG1pbnV0ZXMsIHNlY29uZHNdOworCisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklORygiJTEkZCBzZWNvbmRz
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFs
dWUgPCA2MCBzZWNvbmRzIiksIHNlY29uZHNdOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQoreworICAgIHJldHVy
biBVSV9TVFJJTkcoInZhbHVlIG1pc3NpbmciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciByZXF1
aXJlZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgdGhhdCBoYXZlIG5vIHZhbHVlIik7Cit9CisKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNo
VGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygidHlwZSBtaXNtYXRjaCIsICJWYWxpZGF0
aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCBhIHZhbHVlIG5vdCBtYXRj
aGluZyB0eXBlIik7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRp
b25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygi
cGF0dGVybiBtaXNtYXRjaCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29u
dHJvbHMgcmVxdWlyaW5nIGEgY29uc3RyYWluZWQgdmFsdWUgYWNjb3JkaW5nIHRvIHBhdHRlcm4i
KTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VU
b29Mb25nVGV4dCgpCit7CisgICAgcmV0dXJuIFVJX1NUUklORygidG9vIGxvbmciLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIGxvbmdl
ciB0aGFuIG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKTsKK30KKworU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKQoreworICAg
IHJldHVybiBVSV9TVFJJTkcoInJhbmdlIHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWlu
aW11bSIpOworfQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVz
c2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCkKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5HKCJyYW5nZSBv
dmVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KCkKK3sK
KyAgICByZXR1cm4gVUlfU1RSSU5HKCJzdGVwIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIG5vdCByZXNwZWN0aW5nIHRoZSBz
dGVwIGF0dHJpYnV0ZSIpOworfQogCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9uIDYzNzYxKQorKysgV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBA
QAogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lSW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3SW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlld0ludGVybmFsLmg+
Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTG9jYWxpemFibGVTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViTlNVc2VyRGVmYXVsdHNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU09iamVj
dEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5TVmlld0V4dHJhcy5oPgpAQCAtNjQsMzc5
ICs2MywxMSBAQCArICh2b2lkKWNyZWF0ZVNoYXJlZEZhY3RvcnkKICAgICBBU1NFUlQoW1tzZWxm
IHNoYXJlZEZhY3RvcnldIGlzS2luZE9mQ2xhc3M6c2VsZl0pOwogfQogCi0tIChOU1N0cmluZyAq
KWlucHV0RWxlbWVudEFsdFRleHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0tFWSgiU3VibWl0
IiwgIlN1Ym1pdCAoaW5wdXQgZWxlbWVudCkiLCAiYWx0IHRleHQgZm9yIDxpbnB1dD4gZWxlbWVu
dHMgd2l0aCBubyBhbHQsIHRpdGxlLCBvciB2YWx1ZSIpOwotfQotCi0tIChOU1N0cmluZyAqKXJl
c2V0QnV0dG9uRGVmYXVsdExhYmVsCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUmVzZXQiLCAi
ZGVmYXVsdCBsYWJlbCBmb3IgUmVzZXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsK
LX0KLQotLSAoTlNTdHJpbmcgKilzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24KLXsKLSAgICBy
ZXR1cm4gVUlfU1RSSU5HKCJUaGlzIGlzIGEgc2VhcmNoYWJsZSBpbmRleC4gRW50ZXIgc2VhcmNo
IGtleXdvcmRzOiAiLAotICAgICAgICAidGV4dCB0aGF0IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9m
IG5lYXJseS1vYnNvbGV0ZSB3ZWIgcGFnZXMgaW4gdGhlIGZvcm0gb2YgYSAnc2VhcmNoYWJsZSBp
bmRleCciKTsKLX0KLQotLSAoTlNTdHJpbmcgKilzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwKLXsK
LSAgICByZXR1cm4gVUlfU1RSSU5HKCJTdWJtaXQiLCAiZGVmYXVsdCBsYWJlbCBmb3IgU3VibWl0
IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBhZ2VzIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopZmls
ZUJ1dHRvbkNob29zZUZpbGVMYWJlbAotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNob29zZSBG
aWxlIiwgInRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMiKTsKLX0KLQot
LSAoTlNTdHJpbmcgKilmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbAotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIm5vIGZpbGUgc2VsZWN0ZWQiLCAidGV4dCB0byBkaXNwbGF5IGluIGZpbGUg
YnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyB3aGVuIG5vIGZpbGUgaXMgc2VsZWN0ZWQiKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7Ci19Ci0KLS0gKE5TU3Ry
aW5nICopc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0Ci17Ci0gICAgcmV0dXJuIFVJX1NU
UklORygiTm8gcmVjZW50IHNlYXJjaGVzIiwgIkxhYmVsIGZvciBvbmx5IGl0ZW0gaW4gbWVudSB0
aGF0IGFwcGVhcnMgd2hlbiBjbGlja2luZyBvbiB0aGUgc2VhcmNoIGZpZWxkIGltYWdlLCB3aGVu
IG5vIHNlYXJjaGVzIGhhdmUgYmVlbiBwZXJmb3JtZWQiKTsKLX0KLQotLSAoTlNTdHJpbmcgKilz
ZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiUmVj
ZW50IFNlYXJjaGVzIiwgImxhYmVsIGZvciBmaXJzdCBpdGVtIGluIHRoZSBtZW51IHRoYXQgYXBw
ZWFycyB3aGVuIGNsaWNraW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHVzZWQgYXMgZW1i
ZWRkZWQgbWVudSB0aXRsZSIpOwotfQotCi0tIChOU1N0cmluZyAqKXNlYXJjaE1lbnVDbGVhclJl
Y2VudFNlYXJjaGVzVGV4dAotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkNsZWFyIFJlY2VudCBT
ZWFyY2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVz
IG1lbnUncyBjb250ZW50cyIpOwotfQotCiAtIChOU1N0cmluZyAqKWRlZmF1bHRMYW5ndWFnZUNv
ZGUKIHsKICAgICByZXR1cm4gW05TVXNlckRlZmF1bHRzIF93ZWJraXRfcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlXTsKIH0KIAotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0lu
TmV3V2luZG93Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBMaW5rIGluIE5ldyBXaW5k
b3ciLCAiT3BlbiBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5T
U3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiRG93bmxvYWQgTGlua2VkIEZpbGUiLCAiRG93bmxvYWQgTGlua2VkIEZp
bGUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0
ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBM
aW5rIiwgIkNvcHkgTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAq
KWNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93Ci17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IiwgIk9wZW4gSW1hZ2UgaW4gTmV3IFdp
bmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2sKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJEb3du
bG9hZCBJbWFnZSIsICJEb3dubG9hZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0t
IChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkCi17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygiQ29weSBJbWFnZSIsICJDb3B5IEltYWdlIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3cKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGluIE5ldyBX
aW5kb3ciLCAiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ29weQotewotICAgIHJldHVybiBV
SV9TVFJJTkcoIkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0
cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0dvQmFjawotewotICAgIHJldHVybiBVSV9TVFJJTkco
IkJhY2siLCAiQmFjayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNv
bnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZAotewotICAgIHJldHVybiBVSV9TVFJJTkcoIkZvcndh
cmQiLCAiRm9yd2FyZCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNv
bnRleHRNZW51SXRlbVRhZ1N0b3AKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTdG9wIiwgIlN0
b3AgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0
ZW1UYWdSZWxvYWQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJSZWxvYWQiLCAiUmVsb2FkIGNv
bnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFn
Q3V0Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiQ3V0IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlCi17Ci0gICAg
cmV0dXJuIFVJX1NUUklORygiUGFzdGUiLCAiUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZAotewotICAg
IHJldHVybiBVSV9TVFJJTkcoIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3NlcyBGb3VuZCBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRh
Z0lnbm9yZVNwZWxsaW5nCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiSWdub3JlIFNwZWxsaW5n
IiwgIklnbm9yZSBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJMZWFybiBTcGVsbGluZyIsICJMZWFybiBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2gg
aW4gU3BvdGxpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29u
dGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU2VhcmNo
IGluIEdvb2dsZSIsICJTZWFyY2ggaW4gR29vZ2xlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5Ci17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4g
RGljdGlvbmFyeSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiT3BlbiBMaW5r
IiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNv
bnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJJ
Z25vcmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudQotewotI2lmbmRl
ZiBCVUlMRElOR19PTl9USUdFUgotICAgIHJldHVybiBVSV9TVFJJTkcoIlNwZWxsaW5nIGFuZCBH
cmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwot
I2Vsc2UKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTcGVsbGluZyIsICJTcGVsbGluZyBjb250ZXh0
IHN1Yi1tZW51IGl0ZW0iKTsKLSNlbmRpZgotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51
SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOihib29sKXNob3cKLXsKLSNpZm5kZWYgQlVJTERJTkdf
T05fVElHRVIKLSAgICBpZiAoc2hvdykKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBT
cGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKLSAgICByZXR1cm4gVUlf
U1RSSU5HKCJIaWRlIFNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRlbSB0aXRsZSIpOwot
I2Vsc2UKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTcGVsbGluZy4uLiIsICJtZW51IGl0ZW0gdGl0
bGUiKTsKLSNlbmRpZgotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmcKLXsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJDaGVjayBEb2N1bWVudCBOb3ciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0
ZW0iKTsKLSNlbHNlCi0gICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgU3BlbGxpbmciLCAiQ2hl
Y2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLSNlbmRpZgotfQotCi0tIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZwotewotI2lmbmRl
ZiBCVUlMRElOR19PTl9USUdFUgotICAgIHJldHVybiBVSV9TVFJJTkcoIkNoZWNrIFNwZWxsaW5n
IFdoaWxlIFR5cGluZyIsICJDaGVjayBzcGVsbGluZyB3aGlsZSB0eXBpbmcgY29udGV4dCBtZW51
IGl0ZW0iKTsKLSNlbHNlCi0gICAgcmV0dXJuIFVJX1NUUklORygiQ2hlY2sgU3BlbGxpbmcgYXMg
WW91IFR5cGUiLCAiQ2hlY2sgc3BlbGxpbmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci0jZW5kaWYKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdDaGVja0dy
YW1tYXJXaXRoU3BlbGxpbmcKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDaGVjayBHcmFtbWFy
IFdpdGggU3BlbGxpbmciLCAiQ2hlY2sgZ3JhbW1hciB3aXRoIHNwZWxsaW5nIGNvbnRleHQgbWVu
dSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUK
LXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJGb250IiwgIkZvbnQgY29udGV4dCBzdWItbWVudSBp
dGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzCi17
Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBGb250cyIsICJTaG93IGZvbnRzIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQm9sZAot
ewotICAgIHJldHVybiBVSV9TVFJJTkcoIkJvbGQiLCAiQm9sZCBjb250ZXh0IG1lbnUgaXRlbSIp
OwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYwotewotICAgIHJl
dHVybiBVSV9TVFJJTkcoIkl0YWxpYyIsICJJdGFsaWMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HKCJVbmRlcmxpbmUiLCAiVW5kZXJsaW5lIGNvbnRleHQgbWVudSBpdGVtIik7
Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZQotewotICAgIHJl
dHVybiBVSV9TVFJJTkcoIk91dGxpbmUiLCAiT3V0bGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcwotewotICAgIHJldHVy
biBVSV9TVFJJTkcoIlN0eWxlcy4uLiIsICJTdHlsZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiU2hvdyBDb2xvcnMiLCAiU2hvdyBjb2xvcnMgY29udGV4dCBtZW51IGl0
ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51Ci17
Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU3BlZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFr
aW5nCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiU3RhcnQgU3BlYWtpbmciLCAiU3RhcnQgc3Bl
YWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVu
dUl0ZW1UYWdTdG9wU3BlYWtpbmcKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTdG9wIFNwZWFr
aW5nIiwgIlN0b3Agc3BlYWtpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJp
bmcgKiljb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudQotewotI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQot
ICAgIHJldHVybiBVSV9TVFJJTkcoIlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRp
cmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLSNlbHNlCi0gICAgcmV0dXJuIFVJX1NU
UklORygiV3JpdGluZyBEaXJlY3Rpb24iLCAiV3JpdGluZyBkaXJlY3Rpb24gY29udGV4dCBzdWIt
bWVudSBpdGVtIik7Ci0jZW5kaWYKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNlbGVjdGlvbiBE
aXJlY3Rpb24iLCAiU2VsZWN0aW9uIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsK
LX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uCi17
Ci0gICAgcmV0dXJuIFVJX1NUUklORygiRGVmYXVsdCIsICJEZWZhdWx0IHdyaXRpbmcgZGlyZWN0
aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJMZWZ0IHRvIFJpZ2h0
IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotLSAoTlNTdHJpbmcg
Kiljb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdAotewotICAgIHJldHVybiBVSV9TVFJJTkco
IlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRp
Y2FsbHkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRp
Y2FsbHkiLCAiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01l
bnUKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlv
bnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1l
bnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6KGJvb2wpc2hvdwotewotICAgIGlmIChzaG93KSAK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiU2hvdyBTdWJzdGl0dXRpb25zIiwgIm1lbnUgaXRl
bSB0aXRsZSIpOwotICAgIHJldHVybiBVSV9TVFJJTkcoIkhpZGUgU3Vic3RpdHV0aW9ucyIsICJt
ZW51IGl0ZW0gdGl0bGUiKTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdT
bWFydENvcHlQYXN0ZQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlNtYXJ0IENvcHkvUGFzdGUi
LCAiU21hcnQgQ29weS9QYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzCi17Ci0gICAgcmV0dXJuIFVJX1NUUklO
RygiU21hcnQgUXVvdGVzIiwgIlNtYXJ0IFF1b3RlcyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiU21hcnQgRGFzaGVzIiwgIlNtYXJ0IERhc2hlcyBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MK
LXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJTbWFydCBMaW5rcyIsICJTbWFydCBMaW5rcyBjb250
ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ1Rl
eHRSZXBsYWNlbWVudAotewotICAgIHJldHVybiBVSV9TVFJJTkcoIlRleHQgUmVwbGFjZW1lbnQi
LCAiVGV4dCBSZXBsYWNlbWVudCBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKWNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUKLXsKLSAgICByZXR1cm4g
VUlfU1RSSU5HKCJUcmFuc2Zvcm1hdGlvbnMiLCAiVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3Vi
LW1lbnUgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyAqKWNvbnRleHRNZW51SXRlbVRhZ01ha2VV
cHBlckNhc2UKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJNYWtlIFVwcGVyIENhc2UiLCAiTWFr
ZSBVcHBlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29u
dGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZQotewotICAgIHJldHVybiBVSV9TVFJJTkcoIk1h
a2UgTG93ZXIgQ2FzZSIsICJNYWtlIExvd2VyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplCi17Ci0gICAgcmV0
dXJuIFVJX1NUUklORygiQ2FwaXRhbGl6ZSIsICJDYXBpdGFsaXplIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjazooTlNT
dHJpbmcgKilyZXBsYWNlZFN0cmluZwotewotICAgIHN0YXRpYyBOU1N0cmluZyAqZm9ybWF0U3Ry
aW5nID0gbmlsOwotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQotICAgIHN0YXRpYyBib29sIGxvb2tlZFVwU3RyaW5nID0gZmFs
c2U7Ci0gICAgaWYgKCFsb29rZWRVcFN0cmluZykgewotICAgICAgICBmb3JtYXRTdHJpbmcgPSBb
W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbTlNTcGVsbENoZWNrZXIgY2xhc3NdXSBsb2NhbGl6
ZWRTdHJpbmdGb3JLZXk6QCJDaGFuZ2UgQmFjayB0byBcXFUyMDFDJUBcXFUyMDFEIiB2YWx1ZTpu
aWwgdGFibGU6QCJNZW51Q29tbWFuZHMiXSByZXRhaW5dOwotICAgICAgICBsb29rZWRVcFN0cmlu
ZyA9IHRydWU7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIGZvcm1hdFN0cmluZyA/IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdFN0cmluZywgcmVwbGFjZWRTdHJpbmddIDogcmVw
bGFjZWRTdHJpbmc7Ci19Ci0KLS0gKE5TU3RyaW5nICopY29udGV4dE1lbnVJdGVtVGFnSW5zcGVj
dEVsZW1lbnQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJJbnNwZWN0IEVsZW1lbnQiLCAiSW5z
cGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KIC0gKEJPT0wpb2JqZWN0SXNU
ZXh0TWFya2VyOihpZClvYmplY3QKIHsKICAgICByZXR1cm4gb2JqZWN0ICE9IG5pbCAmJiBDRkdl
dFR5cGVJRChvYmplY3QpID09IFdLR2V0QVhUZXh0TWFya2VyVHlwZUlEKCk7CkBAIC01MDcsMzA4
ICsxMzgsNCBAQCAtICh2b2lkKXVucmVnaXN0ZXJVbmlxdWVJZEZvclVJRWxlbWVudDooCiAgICAg
V0tVbnJlZ2lzdGVyVW5pcXVlSWRGb3JFbGVtZW50KGVsZW1lbnQpOwogfQogCi0tIChOU1N0cmlu
ZyAqKUFYV2ViQXJlYVRleHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJIVE1MIGNvbnRlbnQi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB3ZWIgYXJlYSIpOwotfQotCi0t
IChOU1N0cmluZyAqKUFYTGlua1RleHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJsaW5rIiwg
ImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbGluayIpOwotfQotCi0tIChOU1N0
cmluZyAqKUFYTGlzdE1hcmtlclRleHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJsaXN0IG1h
cmtlciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpc3QgbWFya2VyIik7
Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhJbWFnZU1hcFRleHQKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJpbWFnZSBtYXAiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBpbWFn
ZSBtYXAiKTsKLX0KLQotLSAoTlNTdHJpbmcgKilBWEhlYWRpbmdUZXh0Ci17Ci0gICAgcmV0dXJu
IFVJX1NUUklORygiaGVhZGluZyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IGhlYWRpbmdzIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygidGVybSIsICJ0ZXJtIHdvcmQgb2YgYSBkZWZpbml0
aW9uIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiZGVmaW5pdGlvbiIsICJkZWZpbml0aW9uIHBocmFz
ZSIpOwotfQotCi0tIChOU1N0cmluZyAqKUFYQVJJQUNvbnRlbnRHcm91cFRleHQ6KE5TU3RyaW5n
ICopYXJpYVR5cGUKLXsKLSAgICBpZiAoW2FyaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpAIkFSSUFB
cHBsaWNhdGlvbkFsZXJ0Il0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFsZXJ0IiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYWxlcnQuIik7Ci0gICAg
aWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBQXBwbGljYXRpb25BbGVydERpYWxv
ZyJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJhbGVydCBkaWFsb2ciLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhbGVydCBkaWFsb2cuIik7Ci0gICAg
aWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBQXBwbGljYXRpb25EaWFsb2ciXSkK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0
eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gZGlhbG9nLiIpOwotICAgIGlmIChbYXJpYVR5cGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVJJQUFwcGxpY2F0aW9uTG9nIl0pCi0gICAgICAgIHJldHVybiBVSV9T
VFJJTkcoImxvZyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEg
Y29uc29sZSBsb2cuIik7Ci0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklB
QXBwbGljYXRpb25NYXJxdWVlIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1hcnF1ZWUi
LCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIG1hcnF1ZWUuIik7
ICAgIAotICAgIGlmIChbYXJpYVR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQVJJQUFwcGxpY2F0aW9u
U3RhdHVzIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImFwcGxpY2F0aW9uIHN0YXR1cyIs
ICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgc3RhdHVzIHVwZGF0
ZS4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBQXBwbGlj
YXRpb25UaW1lciJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0aW1lciIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGFuIHVwZGF0aW5nIHRpbWVyLiIpOyAg
ICAKLSAgICBpZiAoW2FyaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpAIkFSSUFEb2N1bWVudCJdKQot
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJkb2N1bWVudCIsICJBbiBBUklBIGFjY2Vzc2liaWxp
dHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgZG9jdW1lbnQuIik7ICAgIAotICAgIGlmIChbYXJpYVR5
cGUgaXNFcXVhbFRvU3RyaW5nOkAiQVJJQURvY3VtZW50QXJ0aWNsZSJdKQotICAgICAgICByZXR1
cm4gVUlfU1RSSU5HKCJhcnRpY2xlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGFjdHMgYXMgYW4gYXJ0aWNsZS4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCJBUklBRG9jdW1lbnROb3RlIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm5v
dGUiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIG5vdGUgaW4g
YSBkb2N1bWVudC4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJB
UklBRG9jdW1lbnRSZWdpb24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmVnaW9uIiwg
IkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBkaXN0aW5jdCByZWdp
b24gaW4gYSBkb2N1bWVudC4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJBUklBTGFuZG1hcmtBcHBsaWNhdGlvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJhcHBsaWNhdGlvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFz
IGFuIGFwcGxpY2F0aW9uLiIpOyAgICAKLSAgICBpZiAoW2FyaWFUeXBlIGlzRXF1YWxUb1N0cmlu
ZzpAIkFSSUFMYW5kbWFya0Jhbm5lciJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYW5u
ZXIiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGJhbm5lci4i
KTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBTGFuZG1hcmtD
b21wbGVtZW50YXJ5Il0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoImNvbXBsZW1lbnRhcnki
LCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHJlZ2lvbiBvZiBj
b21wbGVtZW50YXJ5IGluZm9ybWF0aW9uLiIpOyAgICAKLSAgICBpZiAoW2FyaWFUeXBlIGlzRXF1
YWxUb1N0cmluZzpAIkFSSUFMYW5kbWFya0NvbnRlbnRJbmZvIl0pCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkcoImNvbnRlbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29u
dGFpbnMgY29udGVudC4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6
QCJBUklBTGFuZG1hcmtNYWluIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1haW4iLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgaXMgdGhlIG1haW4gcG9ydGlvbiBvZiB0
aGUgd2Vic2l0ZS4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJB
UklBTGFuZG1hcmtOYXZpZ2F0aW9uIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm5hdmln
YXRpb24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgdGhlIG1h
aW4gbmF2aWdhdGlvbiBlbGVtZW50cyBvZiBhIHdlYnNpdGUuIik7ICAgIAotICAgIGlmIChbYXJp
YVR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQVJJQUxhbmRtYXJrU2VhcmNoIl0pCi0gICAgICAgIHJl
dHVybiBVSV9TVFJJTkcoInNlYXJjaCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhh
dCBjb250YWlucyBhIHNlYXJjaCBmZWF0dXJlIG9mIGEgd2Vic2l0ZS4iKTsgICAgCi0gICAgaWYg
KFthcmlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiXSkK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklORygidG9vbHRpcCIsICJBbiBBUklBIGFjY2Vzc2liaWxp
dHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgdG9vbHRpcC4iKTsgICAgCi0gICAgaWYgKFthcmlhVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBUklBVGFiUGFuZWwiXSkKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklORygidGFiIHBhbmVsIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRh
aW5zIHRoZSBjb250ZW50IG9mIGEgdGFiLiIpOwotICAgIGlmIChbYXJpYVR5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVJJQURvY3VtZW50TWF0aCJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJt
YXRoIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIG1hdGhlbWF0
aWNhbCBzeW1ib2xzLiIpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhC
dXR0b25BY3Rpb25WZXJiCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygicHJlc3MiLCAiVmVyYiBz
dGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSBidXR0b24gaXMgcHJlc3Nl
ZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhSYWRp
b0J1dHRvbkFjdGlvblZlcmIKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJzZWxlY3QiLCAiVmVy
YiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSByYWRpbyBidXR0b24g
aXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7Ci19Ci0KLS0gKE5TU3RyaW5n
ICopQVhUZXh0RmllbGRBY3Rpb25WZXJiCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiYWN0aXZh
dGUiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSB0ZXh0
IGZpZWxkIGlzIHNlbGVjdGVkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotLSAo
TlNTdHJpbmcgKilBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HKCJ1bmNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1
ciB3aGVuIGEgY2hlY2tlZCBjaGVja2JveCBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2li
aWxpdHkiKTsKLX0KLQotLSAoTlNTdHJpbmcgKilBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVy
YgotewotICAgIHJldHVybiBVSV9TVFJJTkcoImNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0
aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGFuIHVuY2hlY2tlZCBjaGVja2JveCBpcyBjbGlja2Vk
LCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotLSAoTlNTdHJpbmcgKilBWExpbmtB
Y3Rpb25WZXJiCi17Ci0gICAgcmV0dXJuIFVJX1NUUklORygianVtcCIsICJWZXJiIHN0YXRpbmcg
dGhlIGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIGxpbmsgaXMgY2xpY2tlZCwgYXMgdXNl
ZCBieSBhY2Nlc3NpYmlsaXR5Iik7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhNZW51TGlzdFBvcHVw
QWN0aW9uVmVyYgotewotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TU3RyaW5nICopQVhNZW51
TGlzdEFjdGlvblZlcmIKLXsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1N0cmluZyAqKW1p
c3NpbmdQbHVnaW5UZXh0Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklORygiTWlzc2luZyBQbHVnLWlu
IiwgIkxhYmVsIHRleHQgdG8gYmUgdXNlZCB3aGVuIGEgcGx1Z2luIGlzIG1pc3NpbmciKTsKLX0K
LQotLSAoTlNTdHJpbmcgKiljcmFzaGVkUGx1Z2luVGV4dAotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoIlBsdWctaW4gRmFpbHVyZSIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgaWYgcGx1Z2luIGhv
c3QgcHJvY2VzcyBoYXMgY3Jhc2hlZCIpOwotfQotCi0tIChOU1N0cmluZyAqKW11bHRpcGxlRmls
ZVVwbG9hZFRleHRGb3JOdW1iZXJPZkZpbGVzOih1bnNpZ25lZCludW1iZXJPZkZpbGVzCi17Ci0g
ICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklORygiJWQgZmlsZXMi
LCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBpbiBhIGZp
bGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVtYmVyT2ZG
aWxlc107Ci19Ci0KLS0gKE5TU3RyaW5nICopdW5rbm93bkZpbGVTaXplVGV4dAotewotICAgIHJl
dHVybiBVSV9TVFJJTkcoIlVua25vd24iLCAiVW5rbm93biBmaWxlc2l6ZSBGVFAgZGlyZWN0b3J5
IGxpc3RpbmcgaXRlbSIpOwotfQotCi0tIChOU1N0cmluZyopaW1hZ2VUaXRsZUZvckZpbGVuYW1l
OihOU1N0cmluZyopZmlsZW5hbWUgd2lkdGg6KGludCl3aWR0aCBoZWlnaHQ6KGludCloZWlnaHQK
LXsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RSSU5HKCIlQCAl
ZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2Vz
IG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLCB3aWR0aCwgaGVpZ2h0
XTsKLX0KLQotLSAoTlNTdHJpbmcqKW1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HKCJMb2FkaW5nLi4uIiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVz
IG1lc3NhZ2Ugd2hlbiB0aGUgbWVkaWEgaXMgbG9hZGluZyIpOwotfQotCi0tIChOU1N0cmluZyop
bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dAotewotICAgIHJldHVybiBVSV9TVFJJ
TkcoIkxpdmUgQnJvYWRjYXN0IiwgIk1lZGlhIGNvbnRyb2xsZXIgc3RhdHVzIG1lc3NhZ2Ugd2hl
biB3YXRjaGluZyBhIGxpdmUgYnJvYWRjYXN0Iik7Ci19Ci0KLS0gKE5TU3RyaW5nKilsb2NhbGl6
ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nOihOU1N0cmluZyopbmFtZQotewotICAgIGlmIChb
bmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBdWRpb0VsZW1lbnQiXSkKLSAgICAgICAgcmV0dXJuIFVJ
X1NUUklORygiYXVkaW8gZWxlbWVudCBjb250cm9sbGVyIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBk
ZXNjcmlwdGlvbiBmb3IgYXVkaW8gZWxlbWVudCBjb250cm9sbGVyIik7Ci0gICAgaWYgKFtuYW1l
IGlzRXF1YWxUb1N0cmluZzpAIlZpZGVvRWxlbWVudCJdKQotICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJ2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2Ny
aXB0aW9uIGZvciB2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLQotICAgIC8vIEZJWE1FOiB0
aGUgQ29udHJvbHNQYW5lbCBjb250YWluZXIgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgaW4gdGhl
IGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5LgotICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJDb250cm9sc1BhbmVsIl0pCi0gICAgICAgIHJldHVybiBAIiI7Ci0KLSAgICBpZiAoW25hbWUg
aXNFcXVhbFRvU3RyaW5nOkAiTXV0ZUJ1dHRvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
KCJtdXRlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbXV0ZSBidXR0b24i
KTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVW5NdXRlQnV0dG9uIl0pCi0gICAg
ICAgIHJldHVybiBVSV9TVFJJTkcoInVubXV0ZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIHR1cm4gbXV0ZSBvZmYgYnV0dG9uIik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxU
b1N0cmluZzpAIlBsYXlCdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicGxheSIs
ICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHBsYXkgYnV0dG9uIik7Ci0gICAg
aWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlBhdXNlQnV0dG9uIl0pCi0gICAgICAgIHJldHVy
biBVSV9TVFJJTkcoInBhdXNlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
cGF1c2UgYnV0dG9uIik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlNsaWRlciJd
KQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtb3ZpZSB0aW1lIiwgImFjY2Vzc2liaWxpdHkg
cm9sZSBkZXNjcmlwdGlvbiBmb3IgdGltZWxpbmUgc2xpZGVyIik7Ci0gICAgaWYgKFtuYW1lIGlz
RXF1YWxUb1N0cmluZzpAIlNsaWRlclRodW1iIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkco
InRpbWVsaW5lIHNsaWRlciB0aHVtYiIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24g
Zm9yIHRpbWVsaW5lIHRodW1iIik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlJl
d2luZEJ1dHRvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJiYWNrIDMwIHNlY29uZHMi
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBzZWVrIGJhY2sgMzAgc2Vjb25k
cyBidXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJyZXR1cm4gdG8gcmVhbHRp
bWUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciByZXR1cm4gdG8gcmVhbCB0
aW1lIGJ1dHRvbiIpOwotICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXJyZW50VGlt
ZURpc3BsYXkiXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZWxhcHNlZCB0aW1lIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsK
LSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiXSkK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklORygicmVtYWluaW5nIHRpbWUiLCAiYWNjZXNzaWJpbGl0
eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0aW1lIHJlbWFpbmluZyBkaXNwbGF5Iik7Ci0gICAgaWYg
KFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlN0YXR1c0Rpc3BsYXkiXSkKLSAgICAgICAgcmV0dXJu
IFVJX1NUUklORygic3RhdHVzIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
bW92aWUgc3RhdHVzIik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIkZ1bGxzY3Jl
ZW5CdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiZnVsbHNjcmVlbiIsICJhY2Nl
c3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGVudGVyIGZ1bGxzY3JlZW4gYnV0dG9uIik7
Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlNlZWtGb3J3YXJkQnV0dG9uIl0pCi0g
ICAgICAgIHJldHVybiBVSV9TVFJJTkcoImZhc3QgZm9yd2FyZCIsICJhY2Nlc3NpYmlsaXR5IHJv
bGUgZGVzY3JpcHRpb24gZm9yIGZhc3QgZm9yd2FyZCBidXR0b24iKTsKLSAgICBpZiAoW25hbWUg
aXNFcXVhbFRvU3RyaW5nOkAiU2Vla0JhY2tCdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklORygiZmFzdCByZXZlcnNlIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
ZmFzdCByZXZlcnNlIGJ1dHRvbiIpOwotICAgIGlmIChbbmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJT
aG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2hv
dyBjbG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBz
aG93IGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJ
TkcoImhpZGUgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlv
biBmb3IgaGlkZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIik7Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gQCIiOwotfQotCi0tIChOU1N0cmluZyopbG9jYWxpemVkTWVk
aWFDb250cm9sRWxlbWVudEhlbHBUZXh0OihOU1N0cmluZyopbmFtZQotewotICAgIGlmIChbbmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBdWRpb0VsZW1lbnQiXSkKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklORygiYXVkaW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXki
LCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhdWRpbyBlbGVtZW50IGNvbnRy
b2xsZXIiKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVmlkZW9FbGVtZW50Il0p
Ci0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29udHJv
bHMgYW5kIHN0YXR1cyBkaXNwbGF5IiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBm
b3IgdmlkZW8gZWxlbWVudCBjb250cm9sbGVyIik7Ci0KLSAgICBpZiAoW25hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiTXV0ZUJ1dHRvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJtdXRlIGF1
ZGlvIHRyYWNrcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbXV0ZSBidXR0b24iKTsK
LSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVW5NdXRlQnV0dG9uIl0pCi0gICAgICAg
IHJldHVybiBVSV9TVFJJTkcoInVubXV0ZSBhdWRpbyB0cmFja3MiLCAiYWNjZXNzaWJpbGl0eSBo
ZWxwIHRleHQgZm9yIHVuIG11dGUgYnV0dG9uIik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0
cmluZzpAIlBsYXlCdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygiYmVnaW4gcGxh
eWJhY2siLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHBsYXkgYnV0dG9uIik7Ci0gICAg
aWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlBhdXNlQnV0dG9uIl0pCi0gICAgICAgIHJldHVy
biBVSV9TVFJJTkcoInBhdXNlIHBsYXliYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZv
ciBwYXVzZSBidXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiU2xpZGVy
Il0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoIm1vdmllIHRpbWUgc2NydWJiZXIiLCAiYWNj
ZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHRpbWVsaW5lIHNsaWRlciIpOwotICAgIGlmIChbbmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJTbGlkZXJUaHVtYiJdKQotICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJtb3ZpZSB0aW1lIHNjcnViYmVyIHRodW1iIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciB0aW1lbGluZSBzbGlkZXIgdGh1bWIiKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiUmV3aW5kQnV0dG9uIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInNlZWsgbW92
aWUgYmFjayAzMCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBqdW1wIGJh
Y2sgMzAgc2Vjb25kcyBidXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAi
UmV0dXJuVG9SZWFsdGltZUJ1dHRvbiJdKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJyZXR1
cm4gc3RyZWFtaW5nIG1vdmllIHRvIHJlYWwgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IgcmV0dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUgYnV0dG9uIik7Ci0gICAg
aWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIkN1cnJlbnRUaW1lRGlzcGxheSJdKQotICAgICAg
ICByZXR1cm4gVUlfU1RSSU5HKCJjdXJyZW50IG1vdmllIHRpbWUgaW4gc2Vjb25kcyIsICJhY2Nl
c3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsKLSAgICBpZiAo
W25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiXSkKLSAgICAgICAg
cmV0dXJuIFVJX1NUUklORygibnVtYmVyIG9mIHNlY29uZHMgb2YgbW92aWUgcmVtYWluaW5nIiwg
ImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciByZW1haW5pbmcgdGltZSBkaXNwbGF5Iik7Ci0g
ICAgaWYgKFtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIlN0YXR1c0Rpc3BsYXkiXSkKLSAgICAgICAg
cmV0dXJuIFVJX1NUUklORygiY3VycmVudCBtb3ZpZSBzdGF0dXMiLCAiYWNjZXNzaWJpbGl0eSBo
ZWxwIHRleHQgZm9yIG1vdmllIHN0YXR1cyBkaXNwbGF5Iik7Ci0gICAgaWYgKFtuYW1lIGlzRXF1
YWxUb1N0cmluZzpAIlNlZWtCYWNrQnV0dG9uIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkco
InNlZWsgcXVpY2tseSBiYWNrIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBmYXN0IHJl
d2luZCBidXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiU2Vla0Zvcndh
cmRCdXR0b24iXSkKLSAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2VlayBxdWlja2x5IGZvcndh
cmQiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGZhc3QgZm9yd2FyZCBidXR0b24iKTsK
LSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiRnVsbHNjcmVlbkJ1dHRvbiJdKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HKCJQbGF5IG1vdmllIGluIGZ1bGxzY3JlZW4gbW9kZSIsICJh
Y2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZW50ZXIgZnVsbHNjcmVlbiBidXR0b24iKTsKLSAg
ICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uIl0p
Ci0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInN0YXJ0IGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRp
b25zIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBzaG93IGNsb3NlZCBjYXB0aW9ucyBi
dXR0b24iKTsKLSAgICBpZiAoW25hbWUgaXNFcXVhbFRvU3RyaW5nOkAiSGlkZUNsb3NlZENhcHRp
b25zQnV0dG9uIl0pCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkcoInN0b3AgZGlzcGxheWluZyBj
bG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGhpZGUgY2xvc2Vk
IGNhcHRpb25zIGJ1dHRvbiIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBAIiI7Ci19Ci0KLS0gKE5TU3RyaW5nKilsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbjoo
ZmxvYXQpdGltZQotewotICAgIGlmICghaXNmaW5pdGUodGltZSkpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkcoImluZGVmaW5pdGUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3Ig
YW4gaW5kZWZpbml0ZSBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUiKTsKLQotICAgIGludCBz
ZWNvbmRzID0gKGludClmYWJzZih0aW1lKTsgCi0gICAgaW50IGRheXMgPSBzZWNvbmRzIC8gKDYw
ICogNjAgKiAyNCk7Ci0gICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBp
bnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQot
ICAgIGlmIChkYXlzKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
VUlfU1RSSU5HKCIlMSRkIGRheXMgJTIkZCBob3VycyAlMyRkIG1pbnV0ZXMgJTQkZCBzZWNvbmRz
IiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFs
dWUgPj0gMSBkYXkiKSwgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdOwotICAgIGVsc2Ug
aWYgKGhvdXJzKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlf
U1RSSU5HKCIlMSRkIGhvdXJzICUyJGQgbWludXRlcyAlMyRkIHNlY29uZHMiLCAiYWNjZXNzaWJp
bGl0eSBoZWxwIHRleHQgZm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA+PSA2MCBtaW51
dGVzIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzXTsKLSAgICBlbHNlIGlmIChtaW51dGVzKQot
ICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RSSU5HKCIlMSRk
IG1pbnV0ZXMgJTIkZCBzZWNvbmRzIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBtZWRp
YSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgc2Vjb25kcyIpLCBtaW51dGVzLCBzZWNvbmRz
XTsKLQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkcoIiUx
JGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxl
ciB0aW1lIHZhbHVlIDwgNjAgc2Vjb25kcyIpLCBzZWNvbmRzXTsKLX0KLQotLSAoTlNTdHJpbmcg
Kil2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQKLXsKLSAgICByZXR1cm4gVUlfU1RS
SU5HKCJ2YWx1ZSBtaXNzaW5nIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgcmVxdWlyZWQgZm9y
bSBjb250cm9sIGVsZW1lbnRzIHRoYXQgaGF2ZSBubyB2YWx1ZSIpOwotfQotCi0tIChOU1N0cmlu
ZyAqKXZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dAotewotICAgIHJldHVybiBVSV9T
VFJJTkcoInR5cGUgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3Jt
IGNvbnRyb2xzIHdpdGggYSB2YWx1ZSBub3QgbWF0Y2hpbmcgdHlwZSIpOwotfQotCi0tIChOU1N0
cmluZyAqKXZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dAotewotICAgIHJldHVy
biBVSV9TVFJJTkcoInBhdHRlcm4gbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBp
bnB1dCBmb3JtIGNvbnRyb2xzIHJlcXVpcmluZyBhIGNvbnN0cmFpbmVkIHZhbHVlIGFjY29yZGlu
ZyB0byBwYXR0ZXJuIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsaWRhdGlvbk1lc3NhZ2VUb29M
b25nVGV4dAotewotICAgIHJldHVybiBVSV9TVFJJTkcoInRvbyBsb25nIiwgIlZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgZm9ybSBjb250cm9sIGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBsb25nZXIgdGhh
biBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIik7Ci19Ci0KLS0gKE5TU3RyaW5nICopdmFsaWRhdGlv
bk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HKCJyYW5n
ZSB1bmRlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xz
IHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0iKTsKLX0KLQotLSAoTlNTdHJp
bmcgKil2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0Ci17Ci0gICAgcmV0dXJuIFVJ
X1NUUklORygicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBm
b3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIik7Ci19
Ci0KLS0gKE5TU3RyaW5nICopdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0Ci17Ci0g
ICAgcmV0dXJuIFVJX1NUUklORygic3RlcCBtaXNtYXRjaCIsICJWYWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBub3QgcmVzcGVjdGluZyB0aGUgc3Rl
cCBhdHRyaWJ1dGUiKTsKLX0KLQogQGVuZAo=
</data>
<flag name="review"
          id="50490"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>