<?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>58628</bug_id>
          
          <creation_ts>2011-04-14 20:26:24 -0700</creation_ts>
          <short_desc>Make mac WebKit1 use the default localization strategy</short_desc>
          <delta_ts>2011-04-15 09:57:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386325</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-14 20:26:24 -0700</bug_when>
    <thetext>Make mac WebKit1 use the default localization strategy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386326</commentid>
    <comment_count>1</comment_count>
      <attachid>89725</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-14 20:29:26 -0700</bug_when>
    <thetext>Created attachment 89725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386474</commentid>
    <comment_count>2</comment_count>
      <attachid>89725</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-15 01:21:31 -0700</bug_when>
    <thetext>Comment on attachment 89725
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=89725&amp;action=review

r=me but see the  comments about comments.

&gt; Source/WebCore/English.lproj/Localizable.strings:13
&gt; -/* window title for a standalone image (uses multiplication symbol, not x) */
&gt; +/* window title suffix for a standalone image (uses multiplication symbol, not x) */

It&apos;s not a suffix, it&apos;s a format string, so this comment change is not an improvement IMO.

&gt; Source/WebCore/English.lproj/Localizable.strings:16
&gt; -/* window title for a standalone image (uses multiplication symbol, not x) */
&gt; +/* window title suffix for a standalone image (uses multiplication symbol, not x) */

It&apos;s not a suffix, it&apos;s a format string, so this comment change is not an improvement IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386695</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-15 09:57:47 -0700</bug_when>
    <thetext>Committed r83985: &lt;http://trac.webkit.org/changeset/83985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89725</attachid>
            <date>2011-04-14 20:29:26 -0700</date>
            <delta_ts>2011-04-15 01:21:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58628-20110414202925.patch</filename>
            <type>text/plain</type>
            <size>51330</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzOTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTQgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIG1hYyBXZWJLaXQxIHVzZSB0aGUgZGVmYXVsdCBsb2NhbGl6YXRp
b24gc3RyYXRlZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4NjI4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBF
bmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgIFVwZGF0ZSBieSBydW5u
aW5nIHVwZGF0ZS13ZWJraXQtbG9jYWxpemFibGUtc3RyaW5ncy4KKworICAgICAgICAqIHBsYXRm
b3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OmtleWdlbktleWNoYWluSXRlbU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5OjppbWFnZVRpdGxlKToKKyAgICAgICAgTWF0Y2ggdGhlIFdlYktpdDEg
dmVyc2lvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGJ5IHNwZWNpYWwgY2FzaW5nIENGIHBsYXRmb3Jt
cy4KKwogMjAxMS0wNC0xNCAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xp
c2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDgzOTA5KQorKysg
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCwxMCArMTAsMTAgQEAKIAAvACoAIABhAGMAYwBlAHMAcwBpAGIAaQBsAGkA
dAB5ACAAaABlAGwAcAAgAHQAZQB4AHQAIABmAG8AcgAgAG0AZQBkAGkAYQAgAGMAbwBuAHQAcgBv
AGwAbABlAHIAIAB0AGkAbQBlACAAdgBhAGwAdQBlACAAPAAgADYAMAAgAHMAZQBjAG8AbgBkAHMA
IAAqAC8ACiAAIgAlADEAJABkACAAcwBlAGMAbwBuAGQAcwAiACAAPQAgACIAJQAxACQAZAAgAHMA
ZQBjAG8AbgBkAHMAIgA7AAogAAotAC8AKgAgAHcAaQBuAGQAbwB3ACAAdABpAHQAbABlACAAZgBv
AHIAIABhACAAcwB0AGEAbgBkAGEAbABvAG4AZQAgAGkAbQBhAGcAZQAgACgAdQBzAGUAcwAgAG0A
dQBsAHQAaQBwAGwAaQBjAGEAdABpAG8AbgAgAHMAeQBtAGIAbwBsACwAIABuAG8AdAAgAHgAKQAg
ACoALwAKKwAvACoAIAB3AGkAbgBkAG8AdwAgAHQAaQB0AGwAZQAgAHMAdQBmAGYAaQB4ACAAZgBv
AHIAIABhACAAcwB0AGEAbgBkAGEAbABvAG4AZQAgAGkAbQBhAGcAZQAgACgAdQBzAGUAcwAgAG0A
dQBsAHQAaQBwAGwAaQBjAGEAdABpAG8AbgAgAHMAeQBtAGIAbwBsACwAIABuAG8AdAAgAHgAKQAg
ACoALwAKIAAiACUAQAAgACUAQADXACUAQAAgAHAAaQB4AGUAbABzACIAIAA9ACAAIgAlAEAAIAAl
AEAA1wAlAEAAIABwAGkAeABlAGwAcwAiADsACiAACi0ALwAqACAAdwBpAG4AZABvAHcAIAB0AGkA
dABsAGUAIABmAG8AcgAgAGEAIABzAHQAYQBuAGQAYQBsAG8AbgBlACAAaQBtAGEAZwBlACAAKAB1
AHMAZQBzACAAbQB1AGwAdABpAHAAbABpAGMAYQB0AGkAbwBuACAAcwB5AG0AYgBvAGwALAAgAG4A
bwB0ACAAeAApACAAKgAvAAorAC8AKgAgAHcAaQBuAGQAbwB3ACAAdABpAHQAbABlACAAcwB1AGYA
ZgBpAHgAIABmAG8AcgAgAGEAIABzAHQAYQBuAGQAYQBsAG8AbgBlACAAaQBtAGEAZwBlACAAKAB1
AHMAZQBzACAAbQB1AGwAdABpAHAAbABpAGMAYQB0AGkAbwBuACAAcwB5AG0AYgBvAGwALAAgAG4A
bwB0ACAAeAApACAAKgAvAAogACIAJQBAACAAJQBkANcAJQBkACAAcABpAHgAZQBsAHMAIgAgAD0A
IAAiACUAQAAgACUAZADXACUAZAAgAHAAaQB4AGUAbABzACIAOwAKIAAKIAAvACoAIAB2AGkAcwBp
AGIAbABlACAAbgBhAG0AZQAgAG8AZgAgAHQAaABlACAAcABsAHUAZwAtAGkAbgAgAGgAbwBzAHQA
IABwAHIAbwBjAGUAcwBzAC4AIABUAGgAZQAgAGYAaQByAHMAdAAgAGEAcgBnAHUAbQBlAG4AdAAg
AGkAcwAgAHQAaABlACAAcABsAHUAZwAtAGkAbgAgAG4AYQBtAGUAIABhAG4AZAAgAHQAaABlACAA
cwBlAGMAbwBuAGQAIABhAHIAZwB1AG0AZQBuAHQAIABpAHMAIAB0AGgAZQAgAGEAcABwAGwAaQBj
AGEAdABpAG8AbgAgAG4AYQBtAGUALgAgACoALwAKQEAgLTY0LDE1ICs2NCw5IEBACiAALwAqACAA
QwBoAGUAYwBrACAAZwByAGEAbQBtAGEAcgAgAHcAaQB0AGgAIABzAHAAZQBsAGwAaQBuAGcAIABj
AG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBDAGgAZQBjAGsAIABH
AHIAYQBtAG0AYQByACAAVwBpAHQAaAAgAFMAcABlAGwAbABpAG4AZwAiACAAPQAgACIAQwBoAGUA
YwBrACAARwByAGEAbQBtAGEAcgAgAFcAaQB0AGgAIABTAHAAZQBsAGwAaQBuAGcAIgA7AAogAAot
AC8AKgAgAEMAaABlAGMAawAgAHMAcABlAGwAbABpAG4AZwAgAGMAbwBuAHQAZQB4AHQAIABtAGUA
bgB1ACAAaQB0AGUAbQAgACoALwAKLQAiAEMAaABlAGMAawAgAFMAcABlAGwAbABpAG4AZwAiACAA
PQAgACIAQwBoAGUAYwBrACAAUwBwAGUAbABsAGkAbgBnACIAOwAKLQAKIAAvACoAIABDAGgAZQBj
AGsAIABzAHAAZQBsAGwAaQBuAGcAIAB3AGgAaQBsAGUAIAB0AHkAcABpAG4AZwAgAGMAbwBuAHQA
ZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAEMAaABlAGMAawAgAFMAcABlAGwA
bABpAG4AZwAgAFcAaABpAGwAZQAgAFQAeQBwAGkAbgBnACIAIAA9ACAAIgBDAGgAZQBjAGsAIABT
AHAAZQBsAGwAaQBuAGcAIABXAGgAaQBsAGUAIABUAHkAcABpAG4AZwAiADsACiAACi0ALwAqACAA
QwBoAGUAYwBrACAAcwBwAGUAbABsAGkAbgBnACAAdwBoAGkAbABlACAAdAB5AHAAaQBuAGcAIABj
AG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACi0AIgBDAGgAZQBjAGsAIABT
AHAAZQBsAGwAaQBuAGcAIABhAHMAIABZAG8AdQAgAFQAeQBwAGUAIgAgAD0AIAAiAEMAaABlAGMA
awAgAFMAcABlAGwAbABpAG4AZwAgAGEAcwAgAFkAbwB1ACAAVAB5AHAAZQAiADsACi0ACiAALwAq
ACAAdABpAHQAbABlACAAZgBvAHIAIABmAGkAbABlACAAYgB1AHQAdABvAG4AIAB1AHMAZQBkACAA
aQBuACAASABUAE0ATAAgAGYAbwByAG0AcwAgACoALwAKIAAiAEMAaABvAG8AcwBlACAARgBpAGwA
ZQAiACAAPQAgACIAQwBoAG8AbwBzAGUAIABGAGkAbABlACIAOwAKIAAKQEAgLTE4NCw5ICsxNzgs
NiBAQAogAC8AKgAgAE4AYQBtAGUAIABvAGYAIABrAGUAeQBjAGgAYQBpAG4AIABrAGUAeQAgAGcA
ZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAdABoAGUAIABLAEUAWQBHAEUATgAgAHQAYQBnACAAKgAv
AAogACIASwBlAHkAIABmAHIAbwBtACAAJQBAACIAIAA9ACAAIgBLAGUAeQAgAGYAcgBvAG0AIAAl
AEAAIgA7AAogAAotAC8AKgAgAE4AYQBtAGUAIABvAGYAIABrAGUAeQBjAGgAYQBpAG4AIABrAGUA
eQAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAdABoAGUAIABLAEUAWQBHAEUATgAgAHQAYQBn
ACAAKgAvAAotACIASwBlAHkAIABmAHIAbwBtACAAPABoAG8AcwB0AG4AYQBtAGUAPgAiACAAPQAg
ACIASwBlAHkAIABmAHIAbwBtACAAPABoAG8AcwB0AG4AYQBtAGUAPgAiADsACi0ACiAALwAqACAA
TABlAGEAcgBuACAAUwBwAGUAbABsAGkAbgBnACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABp
AHQAZQBtACAAKgAvAAogACIATABlAGEAcgBuACAAUwBwAGUAbABsAGkAbgBnACIAIAA9ACAAIgBM
AGUAYQByAG4AIABTAHAAZQBsAGwAaQBuAGcAIgA7AAogAApAQCAtMzY3LDE1ICszNTgsOSBAQAog
AC8AKgAgAFMAcABlAGUAYwBoACAAYwBvAG4AdABlAHgAdAAgAHMAdQBiAC0AbQBlAG4AdQAgAGkA
dABlAG0AIAAqAC8ACiAAIgBTAHAAZQBlAGMAaAAiACAAPQAgACIAUwBwAGUAZQBjAGgAIgA7AAog
AAotAC8AKgAgAFMAcABlAGwAbABpAG4AZwAgAGMAbwBuAHQAZQB4AHQAIABzAHUAYgAtAG0AZQBu
AHUAIABpAHQAZQBtACAAKgAvAAotACIAUwBwAGUAbABsAGkAbgBnACIAIAA9ACAAIgBTAHAAZQBs
AGwAaQBuAGcAIgA7AAotAAogAC8AKgAgAFMAcABlAGwAbABpAG4AZwAgAGEAbgBkACAARwByAGEA
bQBtAGEAcgAgAGMAbwBuAHQAZQB4AHQAIABzAHUAYgAtAG0AZQBuAHUAIABpAHQAZQBtACAAKgAv
AAogACIAUwBwAGUAbABsAGkAbgBnACAAYQBuAGQAIABHAHIAYQBtAG0AYQByACIAIAA9ACAAIgBT
AHAAZQBsAGwAaQBuAGcAIABhAG4AZAAgAEcAcgBhAG0AbQBhAHIAIgA7AAogAAotAC8AKgAgAG0A
ZQBuAHUAIABpAHQAZQBtACAAdABpAHQAbABlACAAKgAvAAotACIAUwBwAGUAbABsAGkAbgBnAC4A
LgAuACIAIAA9ACAAIgBTAHAAZQBsAGwAaQBuAGcALgAuAC4AIgA7AAotAAogAC8AKgAgAHQAaQB0
AGwAZQAgAGYAbwByACAAUwB0AGEAcgB0ACAARABlAGIAdQBnAGcAaQBuAGcAIABKAGEAdgBhAFMA
YwByAGkAcAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBTAHQAYQByAHQAIABEAGUA
YgB1AGcAZwBpAG4AZwAgAEoAYQB2AGEAUwBjAHIAaQBwAHQAIgAgAD0AIAAiAFMAdABhAHIAdAAg
AEQAZQBiAHUAZwBnAGkAbgBnACAASgBhAHYAYQBTAGMAcgBpAHAAdAAiADsACiAACkBAIC00OTMs
OSArNDc4LDYgQEAKIAAvACoAIABXAGUAYgAgAEkAbgBzAHAAZQBjAHQAbwByACAAdwBpAG4AZABv
AHcAIAB0AGkAdABsAGUAIAAqAC8ACiAAIgBXAGUAYgAgAEkAbgBzAHAAZQBjAHQAbwByACAgFAAg
ACUAQAAiACAAPQAgACIAVwBlAGIAIABJAG4AcwBwAGUAYwB0AG8AcgAgIBQAIAAlAEAAIgA7AAog
AAotAC8AKgAgAFcAcgBpAHQAaQBuAGcAIABkAGkAcgBlAGMAdABpAG8AbgAgAGMAbwBuAHQAZQB4
AHQAIABzAHUAYgAtAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAotACIAVwByAGkAdABpAG4AZwAg
AEQAaQByAGUAYwB0AGkAbwBuACIAIAA9ACAAIgBXAHIAaQB0AGkAbgBnACAARABpAHIAZQBjAHQA
aQBvAG4AIgA7AAotAAogAC8AKgAgAG0AZQBzAHMAYQBnAGUAIABpAG4AIABhAHUAdABoAGUAbgB0
AGkAYwBhAHQAaQBvAG4AIABwAGEAbgBlAGwAIAAqAC8ACiAAIgBZAG8AdQByACAAbABvAGcAaQBu
ACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuACAAdwBpAGwAbAAgAGIAZQAgAHMAZQBuAHQAIABzAGUA
YwB1AHIAZQBsAHkALgAiACAAPQAgACIAWQBvAHUAcgAgAGwAbwBnAGkAbgAgAGkAbgBmAG8AcgBt
AGEAdABpAG8AbgAgAHcAaQBsAGwAIABiAGUAIABzAGUAbgB0ACAAcwBlAGMAdQByAGUAbAB5AC4A
IgA7AAogAApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiA4MzkwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMiw4ICszMDIsMTMgQEAgU3RyaW5nIERlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneTo6Y29udAogICAgIFVOVVNFRF9QQVJBTShzZWxlY3RlZFN0cmluZyk7CiAgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rp
b25hcnkgY29udGV4dCBtZW51IGl0ZW0iKTsKICNlbHNlCisjaWYgVVNFKENGKQorICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCBzZWxlY3RlZFN0cmlu
Zy5jcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRl
bSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CisjZWxzZQog
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxv
b2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNl
bGVjdGlvbj4iLCBzZWxlY3RlZFN0cmluZyk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygp
CkBAIC03MDMsMTUgKzcwOCwzNiBAQCBTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
OjprZXlnCiAKIFN0cmluZyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OmtleWdlbktleWNo
YWluSXRlbU5hbWUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJLZXkgZnJvbSA8aG9zdG5hbWU+IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRl
ZCBieSB0aGUgS0VZR0VOIHRhZyIpLnJlcGxhY2UoIjxob3N0bmFtZT4iLCBob3N0KTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBob3N0LmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBL
RVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQoKSk7CiB9CiAKICNlbmRpZgogCiBTdHJpbmcg
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjppbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGZvcm1hdCB0aGUgbnVtYmVycyBjb3JyZWN0bHkuIEluIE1hYyBXZWJLaXQsIHdlIHVzZWQgK1tO
U051bWJlckZvcm1hdHRlciBsb2NhbGl6ZWRTdHJpbmdGcm9tTnVtYmVyOm51bWJlclN0eWxlOl0u
CisjaWYgVVNFKENGKQorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0
Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyRm9ybWF0
dGVyUmVmPiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9j
YWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUpKTsKKworICAgIGludCB3
aWR0aEludCA9IHNpemUud2lkdGgoKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHdpZHRo
KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZ3aWR0aEludCkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gd2lkdGhTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1i
ZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgd2lk
dGguZ2V0KCkpKTsKKworICAgIGludCBoZWlnaHRJbnQgPSBzaXplLmhlaWdodCgpOworICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gaGVpZ2h0KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtD
Rk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGhlaWdodFN0cmluZyhBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhO
dW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKKworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgc3VmZml4IGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGlj
YXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQoKSwgd2lkdGhTdHJp
bmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisjZWxzZQorICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVA
ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIHN1ZmZpeCBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJp
bmcuZ2V0KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisjZW5kaWYKKyNlbHNlCiAg
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8ZmlsZW5hbWU+
ICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIHN1ZmZpeCBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsKKyNlbmRpZgog
fQogCiBTdHJpbmcgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjptZWRpYUVsZW1lbnRMb2Fk
aW5nU3RhdGVUZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzOTM2KQorKysg
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDQtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIG1hYyBXZWJLaXQxIHVz
ZSB0aGUgZGVmYXVsdCBsb2NhbGl6YXRpb24gc3RyYXRlZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjI4CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIFJlbW92ZSB0aGUgbG9jYWxpemF0aW9u
IHN0cmF0ZWd5IGNvZGUuIFRoZSBlcXVpdmFsZW50IGlzIG5vdworICAgICAgICBpbiBXZWJDb3Jl
L3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAuCisKIDIwMTEtMDQtMTQg
IFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiA4MzkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llc1N0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9Mb2NhbGl6YXRpb25TdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaXRlZExpbmtT
dHJhdGVneS5oPgogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwg
cHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6
YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2Ns
YXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewog
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICAKQEAgLTQyLDcgKzQx
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3RyYXRl
Z3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5KiBjcmVhdGVM
b2NhbGl6YXRpb25TdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtT
dHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5CkBAIC01MiwxMjUgKzUwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhj
b25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKLSAg
ICAvLyBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSAgICAKLSAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJl
c2V0QnV0dG9uRGVmYXVsdExhYmVsKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hh
YmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHN1Ym1pdEJ1
dHRvbkRlZmF1bHRMYWJlbCgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZmlsZUJ1dHRvbkNo
b29zZUZpbGVMYWJlbCgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWwoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvcHlJbWFnZVVua25v
d25GaWxlTGFiZWwoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGRlZmF1bHREZXRhaWxzU3Vt
bWFyeVRleHQoKTsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKTsKLSAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpOwot
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBi
b2FyZCgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Blbklt
YWdlSW5OZXdXaW5kb3coKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpOwotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpOwotICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ3V0KCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdQYXN0ZSgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Tm9HdWVzc2VzRm91bmQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZVNwZWxsaW5nKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdMZWFyblNwZWxsaW5nKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBXVEY6OlN0cmluZyYgc2VsZWN0ZWRT
dHJpbmcpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Blbkxp
bmsoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdy
YW1tYXIoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxs
aW5nTWVudSgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hv
d1NwZWxsaW5nUGFuZWwoYm9vbCBzaG93KTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpOwotICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7
Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOwot
ICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpOwotICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7Ci0gICAgdmlydHVh
bCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKLSAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKTsKLSAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCk7Ci0gICAg
dmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgp
OwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVj
dGlvbigpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRv
UmlnaHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0
VG9MZWZ0KCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hJblNwb3RsaWdodCgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU2hvd0ZvbnRzKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTdHlsZXMoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1No
b3dDb2xvcnMoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWVjaE1lbnUoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0
YXJ0U3BlYWtpbmcoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1N0b3BTcGVha2luZygpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKTsKLSAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJvb2wgc2hvdyk7
Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZSgpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90
ZXMoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFz
aGVzKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydExp
bmtzKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVw
bGFjZW1lbnQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Ry
YW5zZm9ybWF0aW9uc01lbnUoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01ha2VVcHBlckNhc2UoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NoYW5nZUJhY2soY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
KTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVt
ZW50KCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlk
ZW9Jbk5ld1dpbmRvdygpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpOwotICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCk7Ci0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRy
b2xzKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVN
ZWRpYUxvb3AoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Vu
dGVyVmlkZW9GdWxsc2NyZWVuKCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdNZWRpYVBsYXkoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01lZGlhUGF1c2UoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ01lZGlhTXV0ZSgpOwotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KCk7Ci0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCk7Ci0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQo
KTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYV2ViQXJlYVRleHQoKTsKLSAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIEFYTGlua1RleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYTGlz
dE1hcmtlclRleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCk7
Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBBWEhlYWRpbmdUZXh0KCk7Ci0gICAgdmlydHVhbCBX
VEY6OlN0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIEFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpOwotICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBXVEY6OlN0cmluZyYgYXJpYVR5
cGUpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCk7Ci0gICAg
dmlydHVhbCBXVEY6OlN0cmluZyBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpOwotICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7Ci0gICAgdmlydHVhbCBXVEY6
OlN0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7Ci0gICAgdmlydHVhbCBXVEY6
OlN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgQVhM
aW5rQWN0aW9uVmVyYigpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbWlzc2luZ1BsdWdpblRl
eHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCk7Ci0gICAg
dmlydHVhbCBXVEY6OlN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJl
ck9mRmlsZXMpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgp
OwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcga2V5Z2VuTWVudUl0ZW01MTIoKTsKLSAgICB2aXJ0
dWFsIFdURjo6U3RyaW5nIGtleWdlbk1lbnVJdGVtMTAyNCgpOwotICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBrZXln
ZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBob3N0KTsKLSAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1lZGlh
RWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG1lZGlh
RWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxw
VGV4dChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbG9jYWxp
emVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQpOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Ci0gICAgdmlydHVhbCBXVEY6OlN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwotICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpOwotICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKTsK
LSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1Rl
eHQoKTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21h
dGNoVGV4dCgpOwotCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQogICAgIHZp
cnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFz
aCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpMaW5rSGFzaCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiA4MzkwOSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsMTQgKzI1LDExIEBACiAKICNpbXBvcnQgIldlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogCi0jaW1wb3J0ICJXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViUGx1Z2luRGF0YWJhc2UuaCIKICNpbXBvcnQgIldlYlBsdWdp
blBhY2thZ2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0ludFNpemUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYWdlR3JvdXAuaD4KLSNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU2LDExICs1Myw2IEBAIFBsdWdpblN0cmF0ZWd5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmMKICAgICByZXR1cm4gdGhpczsKIH0KIAotTG9jYWxp
emF0aW9uU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9jYWxpemF0aW9u
U3RyYXRlZ3koKQotewotICAgIHJldHVybiB0aGlzOwotfQotCiBWaXNpdGVkTGlua1N0cmF0ZWd5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogewog
ICAgIHJldHVybiB0aGlzOwpAQCAtODksNzc1ICs4MSw2IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQbHVnaW5JbmYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQog
Ci0vLyBMb2NhbGl6YXRpb25TdHJhdGVneSAgICAKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6aW5wdXRFbGVtZW50QWx0VGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19LRVlf
SU5URVJOQUwoIlN1Ym1pdCIsICJTdWJtaXQgKGlucHV0IGVsZW1lbnQpIiwgImFsdCB0ZXh0IGZv
ciA8aW5wdXQ+IGVsZW1lbnRzIHdpdGggbm8gYWx0LCB0aXRsZSwgb3IgdmFsdWUiKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQot
ewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlJlc2V0IiwgImRlZmF1bHQgbGFiZWwg
Zm9yIFJlc2V0IGJ1dHRvbnMgaW4gZm9ybXMgb24gd2ViIHBhZ2VzIik7Ci19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCi17Ci0g
ICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiVGhpcyBpcyBhIHNlYXJjaGFibGUgaW5kZXgu
IEVudGVyIHNlYXJjaCBrZXl3b3JkczogIiwKLSAgICAgICAgInRleHQgdGhhdCBhcHBlYXJzIGF0
IHRoZSBzdGFydCBvZiBuZWFybHktb2Jzb2xldGUgd2ViIHBhZ2VzIGluIHRoZSBmb3JtIG9mIGEg
J3NlYXJjaGFibGUgaW5kZXgnIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRF
Uk5BTCgiU3VibWl0IiwgImRlZmF1bHQgbGFiZWwgZm9yIFN1Ym1pdCBidXR0b25zIGluIGZvcm1z
IG9uIHdlYiBwYWdlcyIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZh
dWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFM
KCJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4gaXQgaGFz
IG5vIDxzdW1tYXJ5PiBjaGlsZCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lO
VEVSTkFMKCJDaG9vc2UgRmlsZSIsICJ0aXRsZSBmb3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1M
IGZvcm1zIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25O
b0ZpbGVTZWxlY3RlZExhYmVsKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJu
byBmaWxlIHNlbGVjdGVkIiwgInRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGlu
IEhUTUwgZm9ybXMgd2hlbiBubyBmaWxlIGlzIHNlbGVjdGVkIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKQotewotICAgIHJl
dHVybiBVSV9TVFJJTkdfSU5URVJOQUwoInVua25vd24iLCAiVW5rbm93biBmaWxlbmFtZSIpOwot
fQotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKQotewotICAgIHJl
dHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIk9wZW4gTGluayBpbiBOZXcgV2luZG93IiwgIk9wZW4g
aW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkRvd25sb2FkIExpbmtlZCBGaWxlIiwgIkRv
d25sb2FkIExpbmtlZCBGaWxlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQo
KQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkNvcHkgTGluayIsICJDb3B5IExp
bmsgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQotewotICAgIHJldHVy
biBVSV9TVFJJTkdfSU5URVJOQUwoIk9wZW4gSW1hZ2UgaW4gTmV3IFdpbmRvdyIsICJPcGVuIElt
YWdlIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiRG93bmxvYWQgSW1hZ2UiLCAiRG93
bmxvYWQgSW1hZ2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkNvcHkgSW1hZ2UiLCAiQ29weSBJbWFnZSBj
b250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklOR19JTlRFUk5BTCgiT3BlbiBWaWRlbyBpbiBOZXcgV2luZG93IiwgIk9wZW4gVmlkZW8g
aW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuQXVkaW9Jbk5ld1dpbmRvdygpCi17
Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiT3BlbiBBdWRpbyBpbiBOZXcgV2luZG93
IiwgIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9M
aW5rVG9DbGlwYm9hcmQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkNvcHkg
VmlkZW8gQWRkcmVzcyIsICJDb3B5IFZpZGVvIEFkZHJlc3MgTG9jYXRpb24gY29udGV4dCBtZW51
IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5H
X0lOVEVSTkFMKCJDb3B5IEF1ZGlvIEFkZHJlc3MiLCAiQ29weSBBdWRpbyBBZGRyZXNzIExvY2F0
aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkdfSU5URVJOQUwoIkNvbnRyb2xzIiwgIk1lZGlhIENvbnRyb2xzIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRF
Uk5BTCgiTG9vcCIsICJNZWRpYSBMb29wIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxs
c2NyZWVuKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJFbnRlciBGdWxsc2Ny
ZWVuIiwgIlZpZGVvIEVudGVyIEZ1bGxzY3JlZW4gY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJQbGF5IiwgIk1lZGlhIFBsYXkg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgiUGF1c2UiLCAiTWVkaWEgUGF1c2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRl
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJNdXRlIiwgIk1lZGlhIE11dGUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKQotewotICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoIk9wZW4gRnJhbWUgaW4gTmV3IFdpbmRvdyIsICJPcGVuIEZyYW1l
IGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ29weSgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklOR19JTlRFUk5BTCgiQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiQmFjayIsICJCYWNrIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0dvRm9yd2FyZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgi
Rm9yd2FyZCIsICJGb3J3YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQotewotICAgIHJldHVy
biBVSV9TVFJJTkdfSU5URVJOQUwoIlN0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOwot
fQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdSZWxv
YWQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlJlbG9hZCIsICJSZWxvYWQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFM
KCJDdXQiLCAiQ3V0IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HX0lOVEVSTkFMKCJQYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNz
ZXNGb3VuZCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiTm8gR3Vlc3NlcyBG
b3VuZCIsICJObyBHdWVzc2VzIEZvdW5kIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJJZ25vcmUgU3BlbGxpbmciLCAi
SWdub3JlIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkxlYXJuIFNwZWxsaW5nIiwgIkxlYXJuIFNwZWxs
aW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklO
R19JTlRFUk5BTCgiU2VhcmNoIGluIEdvb2dsZSIsICJTZWFyY2ggaW4gR29vZ2xlIGNvbnRleHQg
bWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5n
KQotewotI2lmIGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgcmV0
dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAg
aW4gRGljdGlvbmFyeSBjb250ZXh0IG1lbnUgaXRlbSIpOwotI2Vsc2UKLSAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlfU1RSSU5HX0lOVEVSTkFMKCJMb29rIFVwIOKAnCVA
4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIChO
U1N0cmluZyAqKXNlbGVjdGVkU3RyaW5nXTsKLSNlbmRpZgotfQotCi1TdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklOR19JTlRFUk5BTCgiT3BlbiBMaW5rIiwgIk9wZW4gTGluayBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVHcmFtbWFyKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJJ
Z25vcmUgR3JhbW1hciIsICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGlu
Z01lbnUoKQotewotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIHJldHVybiBVSV9TVFJJ
TkdfSU5URVJOQUwoIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFy
IGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwotI2Vsc2UKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lO
VEVSTkFMKCJTcGVsbGluZyIsICJTcGVsbGluZyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLSNl
bmRpZgotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpCi17Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJ
R0VSCi0gICAgaWYgKHNob3cpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlNo
b3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7Ci0gICAgcmV0dXJu
IFVJX1NUUklOR19JTlRFUk5BTCgiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0
ZW0gdGl0bGUiKTsKLSNlbHNlCi0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiU3BlbGxp
bmcuLi4iLCAibWVudSBpdGVtIHRpdGxlIik7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCi17Ci0jaWZu
ZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiQ2hl
Y2sgRG9jdW1lbnQgTm93IiwgIkNoZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci0j
ZWxzZQotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkNoZWNrIFNwZWxsaW5nIiwgIkNo
ZWNrIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKCkKLXsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICByZXR1cm4gVUlfU1RS
SU5HX0lOVEVSTkFMKCJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciLCAiQ2hlY2sgc3BlbGxp
bmcgd2hpbGUgdHlwaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci0jZWxzZQotICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoIkNoZWNrIFNwZWxsaW5nIGFzIFlvdSBUeXBlIiwgIkNoZWNrIHNw
ZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotI2VuZGlmCi19Ci0KLVN0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1h
cldpdGhTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiQ2hlY2sg
R3JhbW1hciBXaXRoIFNwZWxsaW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250
ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5B
TCgiRm9udCIsICJGb250IGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJCb2xkIiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRh
bGljKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJJdGFsaWMiLCAiSXRhbGlj
IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgiVW5kZXJsaW5lIiwgIlVuZGVybGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5l
KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJPdXRsaW5lIiwgIk91dGxpbmUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQotewotI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlBhcmFncmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdy
YXBoIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLSNlbHNlCi0gICAgcmV0dXJu
IFVJX1NUUklOR19JTlRFUk5BTCgiV3JpdGluZyBEaXJlY3Rpb24iLCAiV3JpdGluZyBkaXJlY3Rp
b24gY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQotewot
ICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlNlbGVjdGlvbiBEaXJlY3Rpb24iLCAiU2Vs
ZWN0aW9uIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiRGVmYXVsdCIsICJEZWZhdWx0IHdy
aXRpbmcgZGlyZWN0aW9uIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCkKLXsKLSAgICBy
ZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRl
bSIpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCi17Ci0gICAgcmV0dXJu
IFVJX1NUUklOR19JTlRFUk5BTCgiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2ggaW4gU3Bv
dGxpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCi17Ci0gICAgcmV0dXJuIFVJX1NU
UklOR19JTlRFUk5BTCgiU2hvdyBGb250cyIsICJTaG93IGZvbnRzIGNvbnRleHQgbWVudSBpdGVt
Iik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z1N0eWxlcygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiU3R5bGVzLi4uIiwg
IlN0eWxlcyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HX0lOVEVSTkFMKCJTaG93IENvbG9ycyIsICJTaG93IGNvbG9ycyBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdTcGVlY2hNZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJTcGVl
Y2giLCAiU3BlZWNoIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJTdGFydCBTcGVha2luZyIsICJTdGFydCBzcGVh
a2luZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQotewotICAgIHJldHVybiBVSV9T
VFJJTkdfSU5URVJOQUwoIlN0b3AgU3BlYWtpbmciLCAiU3RvcCBzcGVha2luZyBjb250ZXh0IG1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HX0lOVEVSTkFMKCJDb3JyZWN0IFNwZWxsaW5nIEF1dG9tYXRpY2FsbHkiLCAiQ29ycmVj
dCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNN
ZW51KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJTdWJzdGl0dXRpb25zIiwg
IlN1YnN0aXR1dGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGJv
b2wgc2hvdykKLXsKLSAgICBpZiAoc2hvdykgCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5U
RVJOQUwoIlNob3cgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0ZW0gdGl0bGUiKTsKLSAgICByZXR1
cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJIaWRlIFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRp
dGxlIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0Q29weVBhc3RlKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJT
bWFydCBDb3B5L1Bhc3RlIiwgIlNtYXJ0IENvcHkvUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21h
cnRRdW90ZXMoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlNtYXJ0IFF1b3Rl
cyIsICJTbWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIlNtYXJ0IERhc2hlcyIsICJTbWFydCBEYXNoZXMg
Y29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgiU21hcnQgTGlua3MiLCAiU21hcnQgTGlua3MgY29udGV4dCBtZW51IGl0ZW0iKTsK
LX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJUZXh0IFJl
cGxhY2VtZW50IiwgIlRleHQgUmVwbGFjZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3Jt
YXRpb25zTWVudSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiVHJhbnNmb3Jt
YXRpb25zIiwgIlRyYW5zZm9ybWF0aW9ucyBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVy
Q2FzZSgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiTWFrZSBVcHBlciBDYXNl
IiwgIk1ha2UgVXBwZXIgQ2FzZSBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkKLXsK
LSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJNYWtlIExvd2VyIENhc2UiLCAiTWFrZSBM
b3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKQotewotICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoIkNhcGl0YWxpemUiLCAiQ2FwaXRhbGl6ZSBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCi17Ci0gICAgc3Rh
dGljIE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPSBuaWw7Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgc3RhdGljIGJv
b2wgbG9va2VkVXBTdHJpbmcgPSBmYWxzZTsKLSAgICBpZiAoIWxvb2tlZFVwU3RyaW5nKSB7Ci0g
ICAgICAgIGZvcm1hdFN0cmluZyA9IFtbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltOU1NwZWxs
Q2hlY2tlciBjbGFzc11dIGxvY2FsaXplZFN0cmluZ0ZvcktleTpAIkNoYW5nZSBCYWNrIHRvIFxc
VTIwMUMlQFxcVTIwMUQiIHZhbHVlOm5pbCB0YWJsZTpAIk1lbnVDb21tYW5kcyJdIHJldGFpbl07
Ci0gICAgICAgIGxvb2tlZFVwU3RyaW5nID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAo
IWZvcm1hdFN0cmluZykKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkU3RyaW5nOwotICAgIHJldHVy
biBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXRTdHJpbmcsIChOU1N0cmluZyAqKXJl
cGxhY2VkU3RyaW5nXTsKLX0KLQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KCkKLXsKLSAgICByZXR1cm4gVUlf
U1RSSU5HX0lOVEVSTkFMKCJJbnNwZWN0IEVsZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNU
ZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJObyByZWNlbnQgc2VhcmNo
ZXMiLCAiTGFiZWwgZm9yIG9ubHkgaXRlbSBpbiBtZW51IHRoYXQgYXBwZWFycyB3aGVuIGNsaWNr
aW5nIG9uIHRoZSBzZWFyY2ggZmllbGQgaW1hZ2UsIHdoZW4gbm8gc2VhcmNoZXMgaGF2ZSBiZWVu
IHBlcmZvcm1lZCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZWFyY2hN
ZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFM
KCJSZWNlbnQgU2VhcmNoZXMiLCAibGFiZWwgZm9yIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhh
dCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBh
cyBlbWJlZGRlZCBtZW51IHRpdGxlIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJ
X1NUUklOR19JTlRFUk5BTCgiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIiwgIm1lbnUgaXRlbSBpbiBS
ZWNlbnQgU2VhcmNoZXMgbWVudSB0aGF0IGVtcHRpZXMgbWVudSdzIGNvbnRlbnRzIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJlYVRleHQoKQotewotICAgIHJl
dHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIkhUTUwgY29udGVudCIsICJhY2Nlc3NpYmlsaXR5IHJv
bGUgZGVzY3JpcHRpb24gZm9yIHdlYiBhcmVhIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OkFYTGlua1RleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwo
ImxpbmsiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBsaW5rIik7Ci19Ci0K
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTGlzdE1hcmtlclRleHQoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoImxpc3QgbWFya2VyIiwgImFjY2Vzc2liaWxpdHkg
cm9sZSBkZXNjcmlwdGlvbiBmb3IgbGlzdCBtYXJrZXIiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6QVhJbWFnZU1hcFRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoImltYWdlIG1hcCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IGltYWdlIG1hcCIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWEhlYWRp
bmdUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJoZWFkaW5nIiwgImFj
Y2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgaGVhZGluZ3MiKTsKLX0KLQotU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKLXsKLSAg
ICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ0ZXJtIiwgInRlcm0gd29yZCBvZiBhIGRlZmlu
aXRpb24iKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhEZWZpbml0aW9u
TGlzdERlZmluaXRpb25UZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJk
ZWZpbml0aW9uIiwgImRlZmluaXRpb24gcGhyYXNlIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlhVHlw
ZSkKLXsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0IikKLSAgICAg
ICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiYWxlcnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmls
aXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBhbGVydC4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0g
IkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgiYWxlcnQgZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGFjdHMgYXMgYW4gYWxlcnQgZGlhbG9nLiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFw
cGxpY2F0aW9uRGlhbG9nIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiZGlh
bG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gZGlhbG9n
LiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uTG9nIikKLSAgICAgICAg
cmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgibG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBn
cm91cCB0aGF0IGFjdHMgYXMgYSBjb25zb2xlIGxvZy4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0g
IkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVS
TkFMKCJtYXJxdWVlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMg
YSBtYXJxdWVlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvblN0
YXR1cyIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoImFwcGxpY2F0aW9uIHN0
YXR1cyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgc3RhdHVz
IHVwZGF0ZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25UaW1l
ciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoInRpbWVyIiwgIkFuIEFSSUEg
YWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gdXBkYXRpbmcgdGltZXIuIik7ICAg
IAotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50IikKLSAgICAgICAgcmV0dXJuIFVJ
X1NUUklOR19JTlRFUk5BTCgiZG9jdW1lbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3Vw
IHRoYXQgYWN0cyBhcyBhIGRvY3VtZW50LiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFS
SUFEb2N1bWVudEFydGljbGUiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJh
cnRpY2xlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYXJ0
aWNsZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnROb3RlIikKLSAg
ICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgibm90ZSIsICJBbiBBUklBIGFjY2Vzc2li
aWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgbm90ZSBpbiBhIGRvY3VtZW50LiIpOyAgICAKLSAg
ICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudFJlZ2lvbiIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoInJlZ2lvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAg
dGhhdCBhY3RzIGFzIGEgZGlzdGluY3QgcmVnaW9uIGluIGEgZG9jdW1lbnQuIik7ICAgIAotICAg
IGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQXBwbGljYXRpb24iKQotICAgICAgICByZXR1
cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJhcHBsaWNhdGlvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxp
dHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFwcGxpY2F0aW9uLiIpOyAgICAKLSAgICBpZiAoYXJp
YVR5cGUgPT0gIkFSSUFMYW5kbWFya0Jhbm5lciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoImJhbm5lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3Rz
IGFzIGEgYmFubmVyLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0Nv
bXBsZW1lbnRhcnkiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJjb21wbGVt
ZW50YXJ5IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSByZWdp
b24gb2YgY29tcGxlbWVudGFyeSBpbmZvcm1hdGlvbi4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBl
ID09ICJBUklBTGFuZG1hcmtDb250ZW50SW5mbyIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoImNvbnRlbnQiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29u
dGFpbnMgY29udGVudC4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtN
YWluIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgibWFpbiIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBpcyB0aGUgbWFpbiBwb3J0aW9uIG9mIHRoZSB3ZWJz
aXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya05hdmlnYXRpb24i
KQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJuYXZpZ2F0aW9uIiwgIkFuIEFS
SUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIHRoZSBtYWluIG5hdmlnYXRpb24g
ZWxlbWVudHMgb2YgYSB3ZWJzaXRlLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFM
YW5kbWFya1NlYXJjaCIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoInNlYXJj
aCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBhIHNlYXJjaCBm
ZWF0dXJlIG9mIGEgd2Vic2l0ZS4iKTsgICAgCi0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBVXNl
ckludGVyZmFjZVRvb2x0aXAiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ0
b29sdGlwIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSB0b29s
dGlwLiIpOyAgICAKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFUYWJQYW5lbCIpCi0gICAgICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoInRhYiBwYW5lbCIsICJBbiBBUklBIGFjY2Vzc2li
aWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyB0aGUgY29udGVudCBvZiBhIHRhYi4iKTsKLSAgICBp
ZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudE1hdGgiKQotICAgICAgICByZXR1cm4gVUlfU1RS
SU5HX0lOVEVSTkFMKCJtYXRoIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNv
bnRhaW5zIG1hdGhlbWF0aWNhbCBzeW1ib2xzLiIpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0K
LQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhCdXR0b25BY3Rpb25WZXJiKCkKLXsK
LSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJwcmVzcyIsICJWZXJiIHN0YXRpbmcgdGhl
IGFjdGlvbiB0aGF0IHdpbGwgb2NjdXIgd2hlbiBhIGJ1dHRvbiBpcyBwcmVzc2VkLCBhcyB1c2Vk
IGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
QVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKSAKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVS
TkFMKCJzZWxlY3QiLCAiVmVyYiBzdGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdo
ZW4gYSByYWRpbyBidXR0b24gaXMgY2xpY2tlZCwgYXMgdXNlZCBieSBhY2Nlc3NpYmlsaXR5Iik7
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYVGV4dEZpZWxkQWN0aW9uVmVy
YigpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiYWN0aXZhdGUiLCAiVmVyYiBz
dGF0aW5nIHRoZSBhY3Rpb24gdGhhdCB3aWxsIG9jY3VyIHdoZW4gYSB0ZXh0IGZpZWxkIGlzIHNl
bGVjdGVkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ1bmNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9u
IHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgY2hlY2tlZCBjaGVja2JveCBpcyBjbGlja2VkLCBhcyB1
c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkdfSU5URVJOQUwoImNoZWNrIiwgIlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBv
Y2N1ciB3aGVuIGFuIHVuY2hlY2tlZCBjaGVja2JveCBpcyBjbGlja2VkLCBhcyB1c2VkIGJ5IGFj
Y2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51
TGlzdEFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpCi17Ci0gICAg
cmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExp
bmtBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJqdW1wIiwg
IlZlcmIgc3RhdGluZyB0aGUgYWN0aW9uIHRoYXQgd2lsbCBvY2N1ciB3aGVuIGEgbGluayBpcyBj
bGlja2VkLCBhcyB1c2VkIGJ5IGFjY2Vzc2liaWxpdHkiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJ
TkdfSU5URVJOQUwoIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0IHRvIGJlIHVzZWQgd2hl
biBhIHBsdWdpbiBpcyBtaXNzaW5nIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNyYXNoZWRQbHVnaW5UZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFM
KCJQbHVnLWluIEZhaWx1cmUiLCAiTGFiZWwgdGV4dCB0byBiZSB1c2VkIGlmIHBsdWdpbiBob3N0
IHByb2Nlc3MgaGFzIGNyYXNoZWQiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQotewotICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpVSV9TVFJJTkdfSU5URVJOQUwoIiVk
IGZpbGVzIiwgIkxhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQg
aW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzIiksIG51
bWJlck9mRmlsZXNdOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmtub3du
RmlsZVNpemVUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJVbmtub3du
IiwgIlVua25vd24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKTsKLX0KLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5Z2VuTWVudUl0ZW01MTIoKQotewotICAg
IHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIjUxMiAoTG93IEdyYWRlKSIsICJNZW51IGl0ZW0g
dGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjprZXlnZW5NZW51SXRlbTEwMjQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoIjEwMjQgKE1lZGl1bSBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlH
RU4gcG9wLXVwIG1lbnUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6a2V5
Z2VuTWVudUl0ZW0yMDQ4KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCIyMDQ4
IChIaWdoIEdyYWRlKSIsICJNZW51IGl0ZW0gdGl0bGUgZm9yIEtFWUdFTiBwb3AtdXAgbWVudSIp
OwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjprZXlnZW5LZXljaGFpbkl0ZW1O
YW1lKGNvbnN0IFdURjo6U3RyaW5nJiBob3N0KQotewotICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpVSV9TVFJJTkdfSU5URVJOQUwoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yg
a2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCAoTlNTdHJpbmcgKilo
b3N0XTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW1hZ2VUaXRsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQotewotI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAg
IE5TU3RyaW5nICp3aWR0aFN0cmluZyA9IFtOU051bWJlckZvcm1hdHRlciBsb2NhbGl6ZWRTdHJp
bmdGcm9tTnVtYmVyOltOU051bWJlciBudW1iZXJXaXRoSW50OnNpemUud2lkdGgoKV0gbnVtYmVy
U3R5bGU6TlNOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGVdOwotICAgIE5TU3RyaW5nICpoZWln
aHRTdHJpbmcgPSBbTlNOdW1iZXJGb3JtYXR0ZXIgbG9jYWxpemVkU3RyaW5nRnJvbU51bWJlcjpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDpzaXplLmhlaWdodCgpXSBudW1iZXJTdHlsZTpOU051bWJl
ckZvcm1hdHRlckRlY2ltYWxTdHlsZV07Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBsb2NhbGl6ZWRT
dHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19JTlRFUk5BTCgiJUAgJUDDlyVAIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBz
eW1ib2wsIG5vdCB4KSIpLCAoTlNTdHJpbmcgKilmaWxlbmFtZSwgd2lkdGhTdHJpbmcsIGhlaWdo
dFN0cmluZ107Ci0jZWxzZQotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpV
SV9TVFJJTkdfSU5URVJOQUwoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBh
IHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwg
KE5TU3RyaW5nICopZmlsZW5hbWUsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKV07Ci0jZW5k
aWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50TG9hZGlu
Z1N0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiTG9hZGluZy4u
LiIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBtZXNzYWdlIHdoZW4gdGhlIG1lZGlhIGlzIGxv
YWRpbmciKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bWVkaWFFbGVtZW50
TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5B
TCgiTGl2ZSBCcm9hZGNhc3QiLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVu
IHdhdGNoaW5nIGEgbGl2ZSBicm9hZGNhc3QiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcm
IG5hbWUpCi17Ci0gICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCi0gICAgICAgIHJldHVy
biBVSV9TVFJJTkdfSU5URVJOQUwoImF1ZGlvIGVsZW1lbnQgY29udHJvbGxlciIsICJhY2Nlc3Np
YmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGF1ZGlvIGVsZW1lbnQgY29udHJvbGxlciIpOwot
ICAgIGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
X0lOVEVSTkFMKCJ2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiLCAiYWNjZXNzaWJpbGl0eSByb2xl
IGRlc2NyaXB0aW9uIGZvciB2aWRlbyBlbGVtZW50IGNvbnRyb2xsZXIiKTsKLSAgICBpZiAobmFt
ZSA9PSAiTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIm11
dGUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBtdXRlIGJ1dHRvbiIpOwot
ICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5H
X0lOVEVSTkFMKCJ1bm11dGUiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciB0
dXJuIG11dGUgb2ZmIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKLSAg
ICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgicGxheSIsICJhY2Nlc3NpYmlsaXR5IHJv
bGUgZGVzY3JpcHRpb24gZm9yIHBsYXkgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNl
QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgicGF1c2UiLCAiYWNj
ZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBwYXVzZSBidXR0b24iKTsKLSAgICBpZiAo
bmFtZSA9PSAiU2xpZGVyIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgibW92
aWUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHRpbWVsaW5lIHNs
aWRlciIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoInRpbWVsaW5lIHNsaWRlciB0aHVtYiIsICJhY2Nlc3NpYmlsaXR5
IHJvbGUgZGVzY3JpcHRpb24gZm9yIHRpbWVsaW5lIHRodW1iIik7Ci0gICAgaWYgKG5hbWUgPT0g
IlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoImJhY2sg
MzAgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHNlZWsgYmFj
ayAzMCBzZWNvbmRzIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgicmV0dXJuIHRvIHJl
YWx0aW1lIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgcmV0dXJuIHRvIHJl
YWwgdGltZSBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiZWxhcHNlZCB0aW1lIiwgImFjY2Vz
c2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgZWxhcHNlZCB0aW1lIGRpc3BsYXkiKTsKLSAg
ICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gVUlf
U1RSSU5HX0lOVEVSTkFMKCJyZW1haW5pbmcgdGltZSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVz
Y3JpcHRpb24gZm9yIHRpbWUgcmVtYWluaW5nIGRpc3BsYXkiKTsKLSAgICBpZiAobmFtZSA9PSAi
U3RhdHVzRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwoInN0YXR1
cyIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIG1vdmllIHN0YXR1cyIpOwot
ICAgIGlmIChuYW1lID09ICJGdWxsc2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NU
UklOR19JTlRFUk5BTCgiZnVsbHNjcmVlbiIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRp
b24gZm9yIGVudGVyIGZ1bGxzY3JlZW4gYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtG
b3J3YXJkQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgiZmFzdCBm
b3J3YXJkIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgZmFzdCBmb3J3YXJk
IGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJl
dHVybiBVSV9TVFJJTkdfSU5URVJOQUwoImZhc3QgcmV2ZXJzZSIsICJhY2Nlc3NpYmlsaXR5IHJv
bGUgZGVzY3JpcHRpb24gZm9yIGZhc3QgcmV2ZXJzZSBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9
PSAiU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgic2hvdyBjbG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2Ny
aXB0aW9uIGZvciBzaG93IGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9
PSAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19J
TlRFUk5BTCgiaGlkZSBjbG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2Ny
aXB0aW9uIGZvciBoaWRlIGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKLQotICAgIC8vIEZJWE1F
OiB0aGUgQ29udHJvbHNQYW5lbCBjb250YWluZXIgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgaW4g
dGhlIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5LgotICAgIGlmIChuYW1lID09ICJDb250cm9sc1Bh
bmVsIikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBu
YW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4g
VUlfU1RSSU5HX0lOVEVSTkFMKCJhdWRpbyBlbGVtZW50IHBsYXliYWNrIGNvbnRyb2xzIGFuZCBz
dGF0dXMgZGlzcGxheSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGF1ZGlv
IGVsZW1lbnQgY29udHJvbGxlciIpOwotICAgIGlmIChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQot
ICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ2aWRlbyBlbGVtZW50IHBsYXliYWNr
IGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIHZpZGVvIGVsZW1lbnQgY29udHJvbGxlciIpOwotICAgIGlmIChuYW1lID09ICJN
dXRlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgibXV0ZSBhdWRp
byB0cmFja3MiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG11dGUgYnV0dG9uIik7Ci0g
ICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoInVubXV0ZSBhdWRpbyB0cmFja3MiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIHVuIG11dGUgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQotICAg
ICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJiZWdpbiBwbGF5YmFjayIsICJhY2Nlc3Np
YmlsaXR5IGhlbHAgdGV4dCBmb3IgcGxheSBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiUGF1
c2VCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJwYXVzZSBwbGF5
YmFjayIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgcGF1c2UgYnV0dG9uIik7Ci0gICAg
aWYgKG5hbWUgPT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwo
Im1vdmllIHRpbWUgc2NydWJiZXIiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHRpbWVs
aW5lIHNsaWRlciIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJl
dHVybiBVSV9TVFJJTkdfSU5URVJOQUwoIm1vdmllIHRpbWUgc2NydWJiZXIgdGh1bWIiLCAiYWNj
ZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHRpbWVsaW5lIHNsaWRlciB0aHVtYiIpOwotICAgIGlm
IChuYW1lID09ICJSZXdpbmRCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVS
TkFMKCJzZWVrIG1vdmllIGJhY2sgMzAgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IganVtcCBiYWNrIDMwIHNlY29uZHMgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIlJl
dHVyblRvUmVhbHRpbWVCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFM
KCJyZXR1cm4gc3RyZWFtaW5nIG1vdmllIHRvIHJlYWwgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhl
bHAgdGV4dCBmb3IgcmV0dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUgYnV0dG9uIik7
Ci0gICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoImN1cnJlbnQgbW92aWUgdGltZSBpbiBzZWNvbmRzIiwgImFjY2Vz
c2liaWxpdHkgaGVscCB0ZXh0IGZvciBlbGFwc2VkIHRpbWUgZGlzcGxheSIpOwotICAgIGlmIChu
YW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoIm51bWJlciBvZiBzZWNvbmRzIG9mIG1vdmllIHJlbWFpbmluZyIsICJhY2Nlc3Np
YmlsaXR5IGhlbHAgdGV4dCBmb3IgcmVtYWluaW5nIHRpbWUgZGlzcGxheSIpOwotICAgIGlmIChu
YW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5B
TCgiY3VycmVudCBtb3ZpZSBzdGF0dXMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIG1v
dmllIHN0YXR1cyBkaXNwbGF5Iik7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikK
LSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgic2VlayBxdWlja2x5IGJhY2siLCAi
YWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGZhc3QgcmV3aW5kIGJ1dHRvbiIpOwotICAgIGlm
IChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBVSV9TVFJJTkdf
SU5URVJOQUwoInNlZWsgcXVpY2tseSBmb3J3YXJkIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0
IGZvciBmYXN0IGZvcndhcmQgYnV0dG9uIik7Ci0gICAgaWYgKG5hbWUgPT0gIkZ1bGxzY3JlZW5C
dXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJQbGF5IG1vdmllIGlu
IGZ1bGxzY3JlZW4gbW9kZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgZW50ZXIgZnVs
bHNjcmVlbiBidXR0b24iKTsKLSAgICBpZiAobmFtZSA9PSAiU2hvd0Nsb3NlZENhcHRpb25zQnV0
dG9uIikKLSAgICAgICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgic3RhcnQgZGlzcGxheWlu
ZyBjbG9zZWQgY2FwdGlvbnMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIHNob3cgY2xv
c2VkIGNhcHRpb25zIGJ1dHRvbiIpOwotICAgIGlmIChuYW1lID09ICJIaWRlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24iKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJzdG9wIGRpc3Bs
YXlpbmcgY2xvc2VkIGNhcHRpb25zIiwgImFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBoaWRl
IGNsb3NlZCBjYXB0aW9ucyBidXR0b24iKTsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKLXsKLSAgICBpZiAoIWlz
ZmluaXRlKHRpbWUpKQotICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJpbmRlZmlu
aXRlIHRpbWUiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGFuIGluZGVmaW5pdGUgbWVk
aWEgY29udHJvbGxlciB0aW1lIHZhbHVlIik7Ci0KLSAgICBpbnQgc2Vjb25kcyA9IChpbnQpZmFi
c2YodGltZSk7IAotICAgIGludCBkYXlzID0gc2Vjb25kcyAvICg2MCAqIDYwICogMjQpOwotICAg
IGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50IG1pbnV0ZXMgPSAoc2Vj
b25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAgICBpZiAoZGF5cykKLSAg
ICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19JTlRFUk5B
TCgiJTEkZCBkYXlzICUyJGQgaG91cnMgJTMkZCBtaW51dGVzICU0JGQgc2Vjb25kcyIsICJhY2Nl
c3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDEg
ZGF5IiksIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzXTsKLSAgICBlbHNlIGlmIChob3Vy
cykKLSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19J
TlRFUk5BTCgiJTEkZCBob3VycyAlMiRkIG1pbnV0ZXMgJTMkZCBzZWNvbmRzIiwgImFjY2Vzc2li
aWxpdHkgaGVscCB0ZXh0IGZvciBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUgPj0gNjAgbWlu
dXRlcyIpLCBob3VycywgbWludXRlcywgc2Vjb25kc107Ci0gICAgZWxzZSBpZiAobWludXRlcykK
LSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklOR19JTlRF
Uk5BTCgiJTEkZCBtaW51dGVzICUyJGQgc2Vjb25kcyIsICJhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4
dCBmb3IgbWVkaWEgY29udHJvbGxlciB0aW1lIHZhbHVlID49IDYwIHNlY29uZHMiKSwgbWludXRl
cywgc2Vjb25kc107Ci0KLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6VUlf
U1RSSU5HX0lOVEVSTkFMKCIlMSRkIHNlY29uZHMiLCAiYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQg
Zm9yIG1lZGlhIGNvbnRyb2xsZXIgdGltZSB2YWx1ZSA8IDYwIHNlY29uZHMiKSwgc2Vjb25kc107
Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nVGV4dCgpCi17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgidmFsdWUg
bWlzc2luZyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHJlcXVpcmVkIGZvcm0gY29udHJvbCBl
bGVtZW50cyB0aGF0IGhhdmUgbm8gdmFsdWUiKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKLXsKLSAgICByZXR1
cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ0eXBlIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIGEgdmFsdWUgbm90IG1hdGNoaW5nIHR5cGUi
KTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQ
YXR0ZXJuTWlzbWF0Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJw
YXR0ZXJuIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250
cm9scyByZXF1aXJpbmcgYSBjb25zdHJhaW5lZCB2YWx1ZSBhY2NvcmRpbmcgdG8gcGF0dGVybiIp
OwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVRv
b0xvbmdUZXh0KCkKLXsKLSAgICByZXR1cm4gVUlfU1RSSU5HX0lOVEVSTkFMKCJ0b28gbG9uZyIs
ICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFs
dWUgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGxlbmd0aCIpOwotfQotCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dCgp
Ci17Ci0gICAgcmV0dXJuIFVJX1NUUklOR19JTlRFUk5BTCgicmFuZ2UgdW5kZXJmbG93IiwgIlZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGxvd2Vy
IHRoYW4gYWxsb3dlZCBtaW5pbXVtIik7Ci19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKQotewotICAgIHJldHVybiBV
SV9TVFJJTkdfSU5URVJOQUwoInJhbmdlIG92ZXJmbG93IiwgIlZhbGlkYXRpb24gbWVzc2FnZSBm
b3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4
aW11bSIpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp2YWxpZGF0aW9uTWVz
c2FnZVN0ZXBNaXNtYXRjaFRleHQoKQotewotICAgIHJldHVybiBVSV9TVFJJTkdfSU5URVJOQUwo
InN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRy
b2xzIHdpdGggdmFsdWUgbm90IHJlc3BlY3RpbmcgdGhlIHN0ZXAgYXR0cmlidXRlIik7Ci19Ci0K
LS8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xp
bmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gpCiB7CiAgICAgcmV0dXJuIHBhZ2Ut
Pmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsK
</data>
<flag name="review"
          id="82446"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>