<?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>65000</bug_id>
          
          <creation_ts>2011-07-21 17:41:04 -0700</creation_ts>
          <short_desc>Refactor HTML tokenizer code in preparation for a new XML tokenizer</short_desc>
          <delta_ts>2011-07-24 03:07:49 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440754</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-21 17:41:04 -0700</bug_when>
    <thetext>Refactor HTML tokenizer code in preparation for a new XML tokenizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440757</commentid>
    <comment_count>1</comment_count>
      <attachid>101678</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-21 17:50:26 -0700</bug_when>
    <thetext>Created attachment 101678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440761</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 17:53:26 -0700</bug_when>
    <thetext>Attachment 101678 did not pass style-queue:

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

Source/WebCore/html/parser/HTMLTokenizer.cpp:217:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440767</commentid>
    <comment_count>3</comment_count>
      <attachid>101678</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 18:05:29 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Spoke with jpfau in #webkit a bit about this change.  This seems like a good direction.  The main question revolves around whether we want InputStreamPreprocessor for XML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440768</commentid>
    <comment_count>4</comment_count>
      <attachid>101678</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 18:06:31 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Can you include before/after results from the HTML parser benchmark?  The tokenizer perf is very sensitive to subtle changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440773</commentid>
    <comment_count>5</comment_count>
      <attachid>101678</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 18:11:57 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Attachment 101678 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9192900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440783</commentid>
    <comment_count>6</comment_count>
      <attachid>101678</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 18:35:33 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Attachment 101678 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9192910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440784</commentid>
    <comment_count>7</comment_count>
      <attachid>101678</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 18:37:25 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Attachment 101678 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9201974</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441033</commentid>
    <comment_count>8</comment_count>
      <attachid>101678</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-22 11:11:57 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

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

&gt; Source/WebCore/xml/parser/MarkupTokenizerBase.h:155
&gt; +    // This method can get hidden in subclasses

Can we make these methods ASSERT_NOT_REACHED instead?  I&apos;m not quite sure why we have them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441037</commentid>
    <comment_count>9</comment_count>
      <attachid>101678</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-22 11:12:55 -0700</bug_when>
    <thetext>Comment on attachment 101678
Patch

Generally, this looks good.  I&apos;d like to see a perf comparison (to be safe) and there&apos;s some question about how much of the input stream pre-processor you want for XML, which affects some of the factoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441161</commentid>
    <comment_count>10</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-22 14:20:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 101678 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101678&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/xml/parser/MarkupTokenizerBase.h:155
&gt; &gt; +    // This method can get hidden in subclasses
&gt; 
&gt; Can we make these methods ASSERT_NOT_REACHED instead?  I&apos;m not quite sure why we have them.

These functions contain shared code that is used by the HTML tokenizer as well as the XML tokenizer. The base functions won&apos;t get hidden by the XML tokenizer because it doesn&apos;t need to worry about saving the open tag name or any special stuff that HTML does.

(In reply to comment #9)
&gt; (From update of attachment 101678 [details])
&gt; Generally, this looks good.  I&apos;d like to see a perf comparison (to be safe) and there&apos;s some question about how much of the input stream pre-processor you want for XML, which affects some of the factoring.

The refactored code seems to cause about a 2.5-3.5% performance hit to the parser. Before the refactor, the HTML parser performance test gave me results that were typically like this:

avg 1638.45
median 1633.5
stdev 16.719674039884868
min 1616
max 1684

And after the refractor, the numbers typically looked like this:

avg 1690.95
median 1690
stdev 10.086996579755542
min 1673
max 1709

The input preprocessor is also reused because XML doesn&apos;t accept null bytes and does CRLF folding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441167</commentid>
    <comment_count>11</comment_count>
      <attachid>101765</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-22 14:25:08 -0700</bug_when>
    <thetext>Created attachment 101765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441171</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 14:28:22 -0700</bug_when>
    <thetext>Attachment 101765 did not pass style-queue:

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

Source/WebCore/html/parser/HTMLTokenizer.cpp:210:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441181</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-22 14:38:32 -0700</bug_when>
    <thetext>Can we avoid the 3% regression?  Where is it coming from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441307</commentid>
    <comment_count>14</comment_count>
      <attachid>101799</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-22 18:12:04 -0700</bug_when>
    <thetext>Created attachment 101799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441308</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 18:14:29 -0700</bug_when>
    <thetext>Attachment 101799 did not pass style-queue:

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

Source/WebCore/html/parser/HTMLTokenizer.cpp:221:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441309</commentid>
    <comment_count>16</comment_count>
      <attachid>101799</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-22 18:15:15 -0700</bug_when>
    <thetext>Comment on attachment 101799
Patch

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

&gt; Source/WebCore/html/parser/HTMLTokenizer.cpp:110
&gt; +    &amp;&amp; (m_state == HTMLTokenizerState::DataState
&gt; +        || m_state == HTMLTokenizerState::RCDATAState
&gt; +        || m_state == HTMLTokenizerState::RAWTEXTState
&gt; +        || m_state == HTMLTokenizerState::PLAINTEXTState);

Bad indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441324</commentid>
    <comment_count>17</comment_count>
      <attachid>101802</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-22 18:54:52 -0700</bug_when>
    <thetext>Created attachment 101802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441326</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-22 18:58:13 -0700</bug_when>
    <thetext>Attachment 101802 did not pass style-queue:

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

Source/WebCore/html/parser/HTMLTokenizer.cpp:221:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441442</commentid>
    <comment_count>19</comment_count>
      <attachid>101802</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-24 03:07:43 -0700</bug_when>
    <thetext>Comment on attachment 101802
Patch

Clearing flags on attachment: 101802

Committed r91643: &lt;http://trac.webkit.org/changeset/91643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441443</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-24 03:07:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101678</attachid>
            <date>2011-07-21 17:50:26 -0700</date>
            <delta_ts>2011-07-22 14:25:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65000-20110721175025.patch</filename>
            <type>text/plain</type>
            <size>119462</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMjc1Y2E3OWM5ZDc0NmRl
NDZhYjkxYjA0MzAwMGNiM2MyMTYzZGFhLi4zN2RjM2E2ZmUxMjJhYWY2NjliZjI5MTVkNjgxOGM3
MzZiMTVmZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEtMDctMjEgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBIVE1MIHRva2Vu
aXplciBjb2RlIGluIHByZXBhcmF0aW9uIGZvciBhIG5ldyBYTUwgdG9rZW5pemVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9y
Q29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6aXNFbmRUYWdCdWZmZXJpbmdTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpIVE1MVG9rZW5pemVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OmZsdXNoRW1pdEFuZFJlc3VtZUluKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjp1
cGRhdGVTdGF0ZUZvcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmVtaXRBbmRSZXN1bWVJbik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjplbWl0QW5kUmVjb25zdW1lSW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0U3Rh
cnRUYWcpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFZpZXdTb3VyY2VQYXJzZXI6OlRleHRWaWV3U291cmNlUGFyc2VyKToK
KyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWFya3VwVG9rZW5CYXNlOjp0eXBlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRv
a2VuaXplckJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjp+TWFya3VwVG9rZW5pemVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tl
bml6ZXJCYXNlOjpsaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXpl
ckJhc2U6OmNvbHVtbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpzZXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpmb3JjZU51bGxD
aGFyYWN0ZXJSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjpzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6SW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6Om5leHRJbnB1dENoYXJhY3Rlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVl
ayk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6c2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVN
YXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6TWFya3VwVG9r
ZW5pemVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpidWZm
ZXJDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6ZW1p
dEFuZFJlc3VtZUluKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OmVt
aXRBbmRSZWNvbnN1bWVJbik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNl
OjplbWl0RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OmhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXpl
cklubGluZU1ldGhvZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuaXplcldo
aXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9y
aW5nQ2FzZSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlU3RyaW5nQW5kQVNTRVJUKToKKwog
MjAxMS0wNy0yMCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgQXR0
ZW1wdCB0byBmaXggdGhlIEdUSyBidWlsZCBhZnRlciBjaGFuZ2VzZXQgOTEzOTYgPGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkxMzk2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRkYWExYWE4ODEyNTdhNDc5YjQw
N2IzYzFkNTc5ODRhNWRhMmY1MTQuLjIxMjA3NGZlMzZlNjExMDJiM2Y5OWFlNzM1ZjllNzMxZjU4
NWQ4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU2LDYgKzU2LDggQEAKIAkJMDBCOTMxODkxM0JBOERCQzAwMzVBOTQ4IC8q
IFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCAqLzsgfTsKIAkJMDBCOTMxOEIxM0JBOERDOTAwMzVBOTQ4IC8q
IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODUxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUuY3BwICovOyB9OwogCQkwMEI5MzE4QzEzQkE4RENDMDAzNUE5NDggLyogWE1M
RG9jdW1lbnRQYXJzZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
U2NvcGUuaCAqLzsgfTsKKwkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2Vu
aXplcklubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxp
bmVNZXRob2RzLmggKi87IH07CisJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBNYXJrdXBU
b2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICov
OyB9OwogCQkwMENBOTNCMjEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQ0E5M0Ix
MTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovOyB9OwogCQkwMENB
OTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjQxM0M2Njk3QzAw
RjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBEMDQ2NEExM0M0
RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEQwNDY0ODEzQzREMTQ1MDAz
MjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLzsgfTsKQEAgLTY0NjIs
NiArNjQ2NCw4IEBACiAJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDBCOTMxODUxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJTY29w
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTg2MTNCQTg2N0YwMDM1
QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDBDNjBFM0UxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGlu
ZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwVG9rZW5p
emVySW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEM2MEU0
MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBUb2tlbml6ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVu
dFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXdYTUxEb2N1bWVu
dFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMENBOTNCNDEzQzY2OTdD
MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjc5MSw2ICsxMjc5NSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwMDAyMkU2
ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9k
cy5oICovLAogCQkJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2Uu
aCAqLywKKwkJCQkwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFz
ZS5oICovLAorCQkJCTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJ
bmxpbmVNZXRob2RzLmggKi8sCiAJCQkJMDBDQTkzQjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQkwMENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyog
TmV3WE1MRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0Mg
LyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLywKQEAgLTIyMjI2LDYgKzIyMjMy
LDggQEAKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBU
b2tlbkJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAv
KiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEM2
MEU0MjEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggODUw
ZWJjYmRmMGYzZTEzYmFkMjZiN2I1ODk0ZmJiOTBlZGYwY2Y0OS4uMjljNmEzY2IzNzllNTQxMDIw
OWU5MjQwYjQxNzVmZTkxZDczYTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00OSwyNyArNDksMjcgQEAgbmFtZXNwYWNl
IHsKIAogLy8gVGhpcyBpcyBhIGRpcmVjdCB0cmFuc2NyaXB0aW9uIG9mIHN0ZXAgNCBmcm9tOgog
Ly8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKLUhUTUxUb2tlbml6ZXI6OlN0YXRlIHRv
a2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJv
b2wgcmVwb3J0RXJyb3JzKQorSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0
ZUZvckNvbnRleHRFbGVtZW50KEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVy
cm9ycykKIHsKICAgICBpZiAoIWNvbnRleHRFbGVtZW50KQotICAgICAgICByZXR1cm4gSFRNTFRv
a2VuaXplcjo6RGF0YVN0YXRlOworICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGU7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnID0gY29udGV4
dEVsZW1lbnQtPnRhZ1FOYW1lKCk7CiAKICAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHRpdGxl
VGFnKSB8fCBjb250ZXh0VGFnLm1hdGNoZXModGV4dGFyZWFUYWcpKQotICAgICAgICByZXR1cm4g
SFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGU7CisgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVy
U3RhdGU6OlJDREFUQVN0YXRlOwogICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMoc3R5bGVUYWcp
CiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyh4bXBUYWcpCiAgICAgICAgIHx8IGNvbnRl
eHRUYWcubWF0Y2hlcyhpZnJhbWVUYWcpCiAgICAgICAgIHx8IChjb250ZXh0VGFnLm1hdGNoZXMo
bm9lbWJlZFRhZykgJiYgSFRNTFRyZWVCdWlsZGVyOjpwbHVnaW5zRW5hYmxlZChjb250ZXh0RWxl
bWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHx8IChjb250ZXh0VGFnLm1hdGNo
ZXMobm9zY3JpcHRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0RW5hYmxlZChjb250ZXh0
RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0
Y2hlcyhub2ZyYW1lc1RhZykpCi0gICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9r
ZW5pemVyOjpSQVdURVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKKyAg
ICAgICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0
YXRlIDogSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZTsKICAgICBpZiAoY29udGV4
dFRhZy5tYXRjaGVzKHNjcmlwdFRhZykpCi0gICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBI
VE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXJTdGF0ZTo6
U2NyaXB0RGF0YVN0YXRlIDogSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZTsKICAg
ICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHBsYWludGV4dFRhZykpCi0gICAgICAgIHJldHVybiBI
VE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKLSAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6
RGF0YVN0YXRlOworICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRT
dGF0ZTsKKyAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAgIG1fcGFyc2VyU2No
ZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgpOwogCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlw
dHMoKSkgewotICAgICAgICBBU1NFUlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2Vu
aXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLT5zdGF0ZSgpID09
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgaWYgKCFtX3ByZWxvYWRT
Y2FubmVyKSB7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gYWRvcHRQdHIobmV3IEhU
TUxQcmVsb2FkU2Nhbm5lcihkb2N1bWVudCgpKSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IDZkNTdlZWFlMWQ4OTBkZGQzMWYzZmMz
NzNhNGY1MDg3OTEyNmNiNzAuLjNmNTU4NWQ5YTM1MDIzMzgxMTJlYjM0MDI4ODZlMDBmMGYwMjY4
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTFRy
ZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWFya3VwVG9r
ZW5pemVySW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAg
LTQ2LDggKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1jb25zdCBVQ2hhciBIVE1MVG9rZW5pemVyOjpJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyID0gMDsKLQogbmFtZXNwYWNlIHsKIAogaW5saW5lIFVDaGFy
IHRvTG93ZXJDYXNlKFVDaGFyIGNjKQpAQCAtNTcsMjMgKzU2LDYgQEAgaW5saW5lIFVDaGFyIHRv
TG93ZXJDYXNlKFVDaGFyIGNjKQogICAgIHJldHVybiBjYyArIGxvd2VyQ2FzZU9mZnNldDsKIH0K
IAotaW5saW5lIGJvb2wgaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKFVDaGFyIGNjKQotewotICAgIHJl
dHVybiBjYyA9PSAnICcgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQyc7Ci19Ci0KLWlubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nh
c2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFjdGVy
cykKLXsKLSAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKLSAgICAgICAgc291cmNlLmFk
dmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKLX0KLQot
aW5saW5lIHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQotewotICAgIHdoaWxlICgqZXhwZWN0
ZWRDaGFyYWN0ZXJzKQotICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgqZXhwZWN0ZWRD
aGFyYWN0ZXJzKyspOwotfQotCiBpbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3Qg
VmVjdG9yPFVDaGFyLCAzMj4mIHZlY3RvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAg
aWYgKHZlY3Rvci5zaXplKCkgIT0gc3RyaW5nLmxlbmd0aCgpKQpAQCAtODQsMTcgKzY2LDE3IEBA
IGlubGluZSBib29sIHZlY3RvckVxdWFsc1N0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIDMyPiYg
dmVjdG9yLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgcmV0dXJuICFtZW1jbXAoc3RyaW5nRGF0YSwg
dmVjdG9yRGF0YSwgdmVjdG9yLnNpemUoKSAqIHNpemVvZihVQ2hhcikpOwogfQogCi1pbmxpbmUg
Ym9vbCBpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKEhUTUxUb2tlbml6ZXI6OlN0YXRlIHN0YXRlKQor
aW5saW5lIGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlN0
YXRlIHN0YXRlKQogewogICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlbml6
ZXI6OlJDREFUQUVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJDREFU
QUVuZFRhZ05hbWVTdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRFbmRUYWdP
cGVuU3RhdGU6Ci0gICAgY2FzZSBIVE1MVG9rZW5pemVyOjpSQVdURVhURW5kVGFnTmFtZVN0YXRl
OgotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZToKLSAg
ICBjYXNlIEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGU6Ci0gICAgY2Fz
ZSBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZToKLSAgICBj
YXNlIEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlOgorICAg
IGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFFbmRUYWdPcGVuU3RhdGU6CisgICAgY2Fz
ZSBIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQUVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6U2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6U2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBI
VE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMDIsMTAgKzg0LDE0IEBAIGlubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3RhdGUoSFRN
TFRva2VuaXplcjo6U3RhdGUgc3RhdGUpCiB9CiAKIH0KKyAgICAKKyNkZWZpbmUgSFRNTF9CRUdJ
Tl9TVEFURShzdGF0ZU5hbWUpIEJFR0lOX1NUQVRFKEhUTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVO
YW1lKQorI2RlZmluZSBIVE1MX1JFQ09OU1VNRV9JTihzdGF0ZU5hbWUpIFJFQ09OU1VNRV9JTihI
VE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRNTF9BRFZBTkNFX1RPKHN0
YXRlTmFtZSkgQURWQU5DRV9UTyhIVE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZp
bmUgSFRNTF9TV0lUQ0hfVE8oc3RhdGVOYW1lKSBTV0lUQ0hfVE8oSFRNTFRva2VuaXplclN0YXRl
LCBzdGF0ZU5hbWUpCiAKIEhUTUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIoYm9vbCB1c2VQcmVI
VE1MNVBhcnNlclF1aXJrcykKLSAgICA6IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IodGhpcykK
LSAgICAsIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3ModXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mp
CisgICAgOiBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtz
KQogewogICAgIHJlc2V0KCk7CiB9CkBAIC0xMTYsNyArMTAyLDcgQEAgSFRNTFRva2VuaXplcjo6
fkhUTUxUb2tlbml6ZXIoKQogCiB2b2lkIEhUTUxUb2tlbml6ZXI6OnJlc2V0KCkKIHsKLSAgICBt
X3N0YXRlID0gRGF0YVN0YXRlOworICAgIG1fc3RhdGUgPSBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZTsKICAgICBtX3Rva2VuID0gMDsKICAgICBtX2xpbmVOdW1iZXIgPSAwOwogICAgIG1f
c2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9IGZhbHNlOwpAQCAtMTQzLDQ4ICsxMjksNiBA
QCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgQ09NUElMRVIoTVNWQykKLS8v
IFdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVz
ZSB3ZSB3YW50IHRvIGFzc2VydAotLy8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFj
aGVkIGluIHRoZSBzdGF0ZSBtYWNoaW5lLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIp
Ci0jZW5kaWYKLQotI2RlZmluZSBCRUdJTl9TVEFURShzdGF0ZU5hbWUpIGNhc2Ugc3RhdGVOYW1l
OiBzdGF0ZU5hbWU6Ci0jZGVmaW5lIEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBi
cmVhazsKLQotLy8gV2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJy
ZWNvbnN1bWUgdGhlIGN1cnJlbnQgaW5wdXQKLS8vIGNoYXJhY3RlciBpbiB0aGUgPG11bWJsZT4g
c3RhdGUuIgotI2RlZmluZSBSRUNPTlNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQot
Ci0vLyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgImNvbnN1bWUg
dGhlIG5leHQgaW5wdXQKLS8vIGNoYXJhY3RlciAuLi4gYW5kIHN3aXRjaCB0byB0aGUgPG11bWJs
ZT4gc3RhdGUuIgotI2RlZmluZSBBRFZBTkNFX1RPKHN0YXRlTmFtZSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3Iu
YWR2YW5jZShzb3VyY2UsIG1fbGluZU51bWJlcikpICAgICAgXAotICAgICAgICAgICAgcmV0dXJu
IGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFj
dGVyKCk7ICAgICAgICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUg
KGZhbHNlKQotCi0vLyBTb21ldGltZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVkIGxvZ2ljIGlu
IHRoZSBzcGVjIHRoYXQgc2VwYXJhdGVzIHdoZW4KLS8vIHdlIGNvbnN1bWUgdGhlIG5leHQgaW5w
dXQgY2hhcmFjdGVyIGFuZCB3aGVuIHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIKLS8vIHN0YXRl
LiBXZSBoYW5kbGUgdGhvc2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2UgZGlyZWN0bHkg
YW5kIHVzaW5nCi0vLyB0aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNhdGVkIHN0YXRl
LgotI2RlZmluZSBTV0lUQ0hfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0
YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgXAotICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hh
cmFjdGVyKCk7ICAgICAgICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hp
bGUgKGZhbHNlKQotCi0KIGlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnNhdmVFbmRUYWdOYW1l
SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQpOwpAQCAtMTkyLDM5ICsxMzYsNiBAQCBpbmxpbmUgdm9pZCBIVE1M
VG9rZW5pemVyOjpzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCkKICAgICAgICAgbV9hcHByb3ByaWF0
ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1lKCk7CiB9CiAKLS8vIFdlIHVzZSB0aGlzIGZ1bmN0
aW9uIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAiRW1pdCB0aGUgY3VycmVudCA8bXVtYmxlPgot
Ly8gdG9rZW4uIFN3aXRjaCB0byB0aGUgPG11bWJsZT4gc3RhdGUuIiAgV2UgdXNlIHRoZSB3b3Jk
ICJyZXN1bWUiIGluc3RlYWQgb2YKLS8vIHN3aXRjaCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgbWFj
cm8gYWN0dWFsbHkgcmV0dXJucyBhbmQgdGhhdCB3ZSdsbCBlbmQgdXAKLS8vIGluIHRoZSBzdGF0
ZSB3aGVuIHdlICJyZXN1bWUiIChpLmUuLCBhcmUgY2FsbGVkIGFnYWluKS4KLWJvb2wgSFRNTFRv
a2VuaXplcjo6ZW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBTdGF0ZSBz
dGF0ZSkKLXsKLSAgICBtX3N0YXRlID0gc3RhdGU7Ci0gICAgc291cmNlLmFkdmFuY2UobV9saW5l
TnVtYmVyKTsKLSAgICBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLS8vIElkZW50aWNhbCB0byBlbWl0QW5kUmVzdW1lSW4sIGV4Y2VwdCBkb2VzIG5vdCBh
ZHZhbmNlLgotYm9vbCBIVE1MVG9rZW5pemVyOjplbWl0QW5kUmVjb25zdW1lSW4oU2VnbWVudGVk
U3RyaW5nJiwgU3RhdGUgc3RhdGUpCi17Ci0gICAgbV9zdGF0ZSA9IHN0YXRlOwotICAgIHNhdmVF
bmRUYWdOYW1lSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVXNlZCB0byBl
bWl0IHRoZSBFbmRPZkZpbGUgdG9rZW4uCi0vLyBDaGVjayBpZiB3ZSBoYXZlIGJ1ZmZlcmVkIGNo
YXJhY3RlcnMgdG8gZW1pdCBmaXJzdCBiZWZvcmUgZW1pdHRpbmcgdGhlIEVPRi4KLWJvb2wgSFRN
TFRva2VuaXplcjo6ZW1pdEVuZE9mRmlsZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKLXsKLSAg
ICBpZiAoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1i
ZXIpOwotICAgIG1fdG9rZW4tPmNsZWFyKCk7Ci0gICAgbV90b2tlbi0+bWFrZUVuZE9mRmlsZSgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVy
ZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fdG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CkBAIC0yMzgsNyArMTQ5LDcgQEAgYm9v
bCBIVE1MVG9rZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlKQogCiAjZGVmaW5lIEZMVVNIX0FORF9BRFZBTkNFX1RPKHN0YXRlTmFtZSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBIVE1MVG9rZW5pemVyU3RhdGU6OnN0YXRl
TmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChmbHVzaEJ1ZmZl
cmVkRW5kVGFnKHNvdXJjZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yNDgsNyArMTU5LDcg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlKQogICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCi1i
b29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoRW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBTdGF0ZSBzdGF0ZSkKK2Jvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hFbWl0QW5kUmVz
dW1lSW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUg
c3RhdGUpCiB7CiAgICAgbV9zdGF0ZSA9IHN0YXRlOwogICAgIGZsdXNoQnVmZmVyZWRFbmRUYWco
c291cmNlKTsKQEAgLTI2Nyw3ICsxNzgsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgLy8g
V2Ugc3RhcnRlZCBhbiBlbmQgdGFnIGR1cmluZyBvdXIgbGFzdCBpdGVyYXRpb24uCiAgICAgICAg
IG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsKICAgICAgICAgbV9i
dWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gRGF0YVN0
YXRlKSB7CisgICAgICAgIGlmIChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKSB7CiAgICAgICAgICAgICAvLyBXZSdyZSBiYWNrIGluIHRoZSBkYXRhIHN0YXRlLCBzbyB3
ZSBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgdGFnLgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTI5MSwyMDUgKzIwMiwyMDUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYg
KG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZykgewogICAgICAgICBtX3NraXBMZWFkaW5n
TmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKGNjID09ICdcbicpIHsKLSAg
ICAgICAgICAgIGlmIChtX3N0YXRlID09IERhdGFTdGF0ZSkKLSAgICAgICAgICAgICAgICBBRFZB
TkNFX1RPKERhdGFTdGF0ZSk7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBSQ0RBVEFTdGF0
ZSkKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAg
IGlmIChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKQorICAgICAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSkKKyAgICAgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oUkNEQVRBU3RhdGUpOwogICAgICAgICAgICAgLy8gV2hlbiBwYXJzaW5n
IHRleHQvcGxhaW4gZG9jdW1lbnRzLCB3ZSBydW4gdGhlIHRva2VuaXplciBpbiB0aGUKICAgICAg
ICAgICAgIC8vIFBMQUlOVEVYVFN0YXRlIGFuZCBpZ25vcmUgbV9za2lwTGVhZGluZ05ld0xpbmVG
b3JMaXN0aW5nLgotICAgICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUExBSU5URVhUU3RhdGUp
OworICAgICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSFRNTFRva2VuaXplclN0YXRlOjpQTEFJ
TlRFWFRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTb3VyY2U6IGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Rva2VuaXNhdGlvbjAK
ICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBCRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKKyAg
ICBIVE1MX0JFR0lOX1NUQVRFKERhdGFTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyYnKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikgewogICAgICAgICAgICAgICAg
IC8vIFdlIGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdl
CiAgICAgICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgQURWQU5DRV9U
TyhUYWdPcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ09wZW5TdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhEYXRhU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkgeworICAgIEhUTUxfQkVH
SU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpIHsKICAgICAgICAgaWYgKCFw
cm9jZXNzRW50aXR5KHNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hh
cmFjdGVyVG9rZW4oKTsKLSAgICAgICAgU1dJVENIX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIEhU
TUxfU1dJVENIX1RPKERhdGFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShSQ0RBVEFTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkNEQVRBU3Rh
dGUpIHsKICAgICAgICAgaWYgKGNjID09ICcmJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hh
cmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJD
REFUQVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSkgeworICAgIEhUTUxfQkVH
SU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSkgewogICAgICAgICBpZiAo
IXByb2Nlc3NFbnRpdHkoc291cmNlKSkKICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbigpOwotICAgICAgICBTV0lUQ0hfVE8oUkNEQVRBU3RhdGUpOworICAgICAg
ICBIVE1MX1NXSVRDSF9UTyhSQ0RBVEFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShSQVdURVhUU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJB
V1RFWFRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRl
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUxlc3NUaGFuU2ln
blN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhTGVzc1RoYW5T
aWduU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6ZW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShQTEFJTlRFWFRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcihjYyk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOworICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoVGFnT3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShU
YWdPcGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICchJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKEVuZFRhZ09wZW5TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWco
dG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3Rh
cnRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz8nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAvLyBU
aGUgc3BlYyBjb25zdW1lcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYmVmb3JlIHN3aXRjaGluZwog
ICAgICAgICAgICAgLy8gdG8gdGhlIGJvZ3VzIGNvbW1lbnQgc3RhdGUsIGJ1dCBpdCdzIGVhc2ll
ciB0byBpbXBsZW1lbnQKICAgICAgICAgICAgIC8vIGlmIHdlIHJlY29uc3VtZSB0aGUgY3VycmVu
dCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUp
OworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoRW5kVGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChp
c0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyh0b0xv
d2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWco
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBidWZmZXJD
aGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJv
cigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoVGFnTmFtZVN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmli
dXRlTmFtZVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAobV91c2VQcmVIVE1M
NVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
Y29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdO
YW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAg
ICAgICAgIH0gaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKSB7CiAgICAgICAgIGlmIChj
YyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAg
ICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
UkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShS
Q0RBVEFFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJDREFUQUVuZFRh
Z09wZW5TdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2li
bGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRB
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFFbmRU
YWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1l
U3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8
Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQ0RB
VEFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkNE
QVRBRW5kVGFnTmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRk
VG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJD
REFUQUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNj
KSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RB
VEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUVu
ZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNUb2tl
bml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCkBAIC00OTksNTUgKzQxMCw1NSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRl
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZs
dXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKICAgICAgICAgICAg
IG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
UkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShS
QVdURVhUTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJBV1RFWFRM
ZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRF
bmRUYWdPcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRU
YWdPcGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdPcGVuU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdPcGVuU3RhdGUpIHsKICAg
ICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJD
YXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RF
WFRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwog
ICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQVdU
RVhURW5kVGFnTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQVdURVhURW5kVGFn
TmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJs
ZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhU
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhURW5k
VGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRk
VG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdO
YW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRh
ZygpKQpAQCAtNTU3LDU5ICs0NjgsNTkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAg
ICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGlmIChp
c0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcp
OwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7CiAgICAgICAgICAgICBtX2J1
ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RF
WFRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwog
ICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3Jp
cHREYXRhTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERh
dGFMZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUKG1fYnVm
ZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlw
dERhdGFFbmRUYWdPcGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICchJykgewog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoJyEnKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVTdGFy
dFN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rlcign
PCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICB9CiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFnT3Bl
blN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRl
KSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFn
TmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Q
b3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRU
YWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNV
TUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAo
aXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2Mp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKQEAgLTYxOSwx
MzYgKzUzMCwxMzYgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgICAgIEZMVVNI
X0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAg
ICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0No
YXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFn
TmFtZS5jbGVhcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRh
RXNjYXBlU3RhcnRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2Fw
ZVN0YXJ0U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZVN0YXJ0RGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlU3RhcnREYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4o
U2NyaXB0RGF0YVN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAn
LScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZFN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZFN0YXRlKSB7CiAgICAgICAgIGlmIChj
YyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSkgewor
ICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7CiAg
ICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwogICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAg
ICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsK
ICAgICAgICAgaWYgKGNjID09ICcvJykgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
Y2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5
KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5T
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRU
YWdPcGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAg
ICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlw
dERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSkgewogICAg
ICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNh
c2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdO
YW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7
CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAg
YWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rl
cignLycpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShT
Y3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVw
cGVyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRh
ZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFt
ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVu
ZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNUb2tl
bml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCkBAIC03NTgsMjk5ICs2NjksMjk5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAg
ICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUp
IHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykgfHwgY2MgPT0gJy8nIHx8
IGNjID09ICc+JykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAg
ICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQotICAgICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsK
ICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2Mp
OwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0
YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAg
ICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPCcpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5T
aWduU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSkgeworICAgIEhUTUxf
QkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpIHsKICAgICAgICAg
aWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hE
YXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewogICAgICAgICAgICAg
YnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
ewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScp
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rl
cihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVz
c1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIGJ1ZmZl
ckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSkgewogICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7CiAg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgaWYgKHRlbXBvcmFy
eUJ1ZmZlcklzKHNjcmlwdFRhZy5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlRW5kU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVFbmRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNj
KSkgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZU5hbWVT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKSB7
CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09
ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2Uo
Y2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRh
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBj
YyA9PSAnPCcgfHwgY2MgPT0gJz0nKQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5BdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgp
KTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0
ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICcvJykgewogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2Uu
bnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPScpIHsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1
dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1
dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0Nv
bnN1bWVkKCkpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKG1fdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5l
bmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2Mp
KSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNh
c2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0
dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09
ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCiAgICAgICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckF0dHJp
YnV0ZU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1l
U3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGNjID09ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCi0gICAgICAgICAgICBBRFZBTkNFX1RP
KEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJR
dWlya3MgJiYgY2MgPT0gJzwnKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRy
aWJ1dGUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlTmFtZShzb3VyY2Uu
bnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRy
aWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcpCiAgICAgICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShCZWZvcmVBdHRyaWJ1dGVW
YWx1ZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAg
ICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0
ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpICsgMSk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcmJykgewogICAgICAgICAgICAgbV90b2tlbi0+YmVn
aW5BdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0g
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgbV90b2tlbi0+
YmVnaW5BdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSAr
IDEpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1
b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNl
LCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCiAg
ICAgICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5B
dHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZURv
dWJsZVF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZURv
dWJsZVF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAg
IG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25z
dW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVl
UXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcmJykgewogICAgICAgICAg
ICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICciJzsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25z
dW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJ1wnJykgewogICAg
ICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFj
dGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZVZh
bHVlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmli
dXRlVmFsdWVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAg
ICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wnJzsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0
ZVZhbHVlU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJh
Y3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRl
KTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUo
QXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBdHRy
aWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVz
cGFjZShjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJj
ZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcmJykg
ewogICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICc+JzsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJp
YnV0ZVZhbHVlU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVy
c0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09
IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNv
dXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0g
J1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKICAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0
ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVv
dGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJ
Tl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkg
ewogICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKICAgICAgICAgVmVj
dG9yPFVDaGFyLCAxNj4gZGVjb2RlZEVudGl0eTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gY29u
c3VtZUhUTUxFbnRpdHkoc291cmNlLCBkZWNvZGVkRW50aXR5LCBub3RFbm91Z2hDaGFyYWN0ZXJz
LCBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKTsKQEAgLTEwNjksNjggKzk4MCw2OCBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgLy8ga2VlcGluZyB0cmFjayBvZiB0aGlzIGV4cGxpY3Rs
eSwgd2Ugb2JzZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cwogICAgICAgICAvLyBzdGF0ZSBjYW4gYmUg
ZGV0ZXJtaW5lZCBieSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLgogICAgICAgICBpZiAo
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicpCi0gICAgICAgICAgICBTV0lUQ0hf
VE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1NX
SVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgZWxzZSBp
ZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcnKQotICAgICAgICAgICAgU1dJ
VENIX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9TV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAgICAg
U1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X1NXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7CiAgICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2VsZkNsb3NpbmdT
dGFydFRhZ1N0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPnNldFNlbGZDbG9zaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09O
U1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAg
IEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShCb2d1c0NvbW1lbnRTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUpIHsKICAgICAgICAgbV90b2tlbi0+
YmVnaW5Db21tZW50KCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihDb250aW51ZUJvZ3VzQ29tbWVu
dFN0YXRlKTsKKyAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQ29udGludWVCb2d1c0NvbW1lbnRT
dGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb250aW51
ZUJvZ3VzQ29tbWVudFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb250aW51ZUJvZ3Vz
Q29tbWVudFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZp
bGVNYXJrZXIpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oQ29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkgewogICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0iKSk7
CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoImRv
Y3R5cGUiKSk7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjZGF0YVN0cmlu
ZywgKCJbQ0RBVEFbIikpOwpAQCAtMTE0MCwxOTkgKzEwNTEsMTk5IEBAIGJvb2wgSFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CiAgICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKICAgICAgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQ29tbWVu
dFN0YXJ0U3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKENvbW1lbnRTdGFy
dFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnRCcgfHwgY2Mg
PT0gJ2QnKSB7CiAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCBy
ZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVTdHJpbmcpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CiAgICAg
ICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJk
b2N0eXBlIik7Ci0gICAgICAgICAgICAgICAgU1dJVENIX1RPKERPQ1RZUEVTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgSFRNTF9TV0lUQ0hfVE8oRE9DVFlQRVN0YXRlKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykK
ICAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnWycgJiYgc2hvdWxkQWxsb3dDREFUQSgpKSB7CiAgICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkKGNkYXRhU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpEaWRNYXRjaCkgewogICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRB
U1NFUlQoc291cmNlLCAiW0NEQVRBWyIpOwotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhDREFU
QVNlY3Rpb25TdGF0ZSk7CisgICAgICAgICAgICAgICAgSFRNTF9TV0lUQ0hfVE8oQ0RBVEFTZWN0
aW9uU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICB9CiAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKENvbW1lbnRTdGFydFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oQ29tbWVudFN0YXJ0RGFzaFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAg
IEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhcnREYXNoU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRTdGFydERhc2hTdGF0ZSkgewogICAgICAgICBp
ZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29y
OjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3Vy
Y2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21t
ZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJ
Tl9TVEFURShDb21tZW50RW5kRGFzaFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21t
ZW50RW5kRGFzaFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
Q29tbWVudEVuZFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkgewor
ICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9
PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICchJykgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50
RW5kQmFuZ1N0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kQmFu
Z1N0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3Vy
Y2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29t
bWVudFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQ29tbWVudEVuZEJhbmdTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29t
bWVudEVuZEJhbmdTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCchJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudCgnIScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAg
IEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFU3RhdGUpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKERPQ1RZUEVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZp
bGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luRE9DVFlQRSgpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVET0NUWVBFTmFt
ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJlZm9yZURPQ1RZUEVOYW1l
U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9T
VEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShCZWZv
cmVET0NUWVBFTmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YmVn
aW5ET0NUWVBFKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZ
UEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2lu
RE9DVFlQRSgpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJT
dGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luRE9DVFlQRShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwogICAg
ICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBF
TmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFTmFtZVN0YXRlKSB7CiAg
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb05hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NU
WVBFTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3Rh
dGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgaWYgKGNjID09ICc+JykK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJT
dGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBwdWJsaWNTdHJpbmcsICgicHVibGljIikpOwogICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7CkBAIC0xMzQwLDMw
MSArMTI1MSwzMDEgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgU2VnbWVudGVk
U3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5n
Q2FzZShwdWJsaWNTdHJpbmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpEaWRNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5n
QW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInB1YmxpYyIpOwotICAgICAgICAgICAgICAg
ICAgICBTV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsKKyAgICAgICAg
ICAgICAgICAgICAgSFRNTF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRl
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycg
fHwgY2MgPT0gJ3MnKSB7CiAgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJp
bmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewogICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3Jp
bmdDYXNlKHNvdXJjZSwgInN5c3RlbSIpOwotICAgICAgICAgICAgICAgICAgICBTV0lUQ0hfVE8o
QWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgSFRN
TF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Qm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3VzRE9D
VFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpIHsKICAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChj
YyA9PSAnIicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVk
U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAg
ICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3Vi
bGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
aW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0
ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
Qm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1
b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnIicpCi0gICAgICAgICAgICBBRFZBTkNF
X1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0
ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOwogICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgp
CiAKLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkg
ewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3Rl
bUlkZW50aWZpZXJzU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJ1wnJykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90
ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3Vz
RE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVy
c1N0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJz
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGlj
QW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJT
dGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRv
dWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJv
Z3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKSB7CisgICAgSFRN
TF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpIHsKICAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJl
Zm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZp
ZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAg
ICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3Vy
Y2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VR
dWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91
YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
U2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CiAgICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFy
a2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUp
IHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwog
ICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShCb2d1
c0RPQ1RZUEVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQm9ndXNET0NUWVBFU3RhdGUp
IHsKICAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwot
ICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CisgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25TdGF0ZSkgewor
ICAgIEhUTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICddJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVC
cmFja2V0U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblJp
Z2h0U3F1YXJlQnJhY2tldFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25SaWdodFNxdWFyZUJyYWNrZXRT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVCcmFj
a2V0U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICddJykKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ0RBVEFTZWN0aW9uRG91YmxlUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvbkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tldFN0
YXRlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJ10nKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25Eb3VibGVSaWdodFNxdWFyZUJyYWNrZXRT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uRG91YmxlUmlnaHRTcXVh
cmVCcmFja2V0U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhEYXRhU3Rh
dGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignXScpOwog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCddJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQ0RB
VEFTZWN0aW9uU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCkBAIC0x
NjQ4LDE4ICsxNTU5LDE4IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogdm9pZCBIVE1MVG9rZW5pemVyOjp1
cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIEZyYW1lKiBmcmFtZSkK
IHsKICAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJlYVRhZyB8fCB0YWdOYW1lID09IHRpdGxlVGFn
KQotICAgICAgICBzZXRTdGF0ZShSQ0RBVEFTdGF0ZSk7CisgICAgICAgIHNldFN0YXRlKEhUTUxU
b2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwogICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gcGxh
aW50ZXh0VGFnKQotICAgICAgICBzZXRTdGF0ZShQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIHNl
dFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogICAgIGVsc2UgaWYg
KHRhZ05hbWUgPT0gc2NyaXB0VGFnKQotICAgICAgICBzZXRTdGF0ZShTY3JpcHREYXRhU3RhdGUp
OworICAgICAgICBzZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFTdGF0ZSk7
CiAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzdHlsZVRhZwogICAgICAgICB8fCB0YWdOYW1lID09
IGlmcmFtZVRhZwogICAgICAgICB8fCB0YWdOYW1lID09IHhtcFRhZwogICAgICAgICB8fCAodGFn
TmFtZSA9PSBub2VtYmVkVGFnICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1Z2luc0VuYWJsZWQoZnJh
bWUpKQogICAgICAgICB8fCB0YWdOYW1lID09IG5vZnJhbWVzVGFnCiAgICAgICAgIHx8ICh0YWdO
YW1lID09IG5vc2NyaXB0VGFnICYmIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0RW5hYmxlZChmcmFt
ZSkpKQotICAgICAgICBzZXRTdGF0ZShSQVdURVhUU3RhdGUpOworICAgICAgICBzZXRTdGF0ZShI
VE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZSk7CiB9CiAKIGlubGluZSBib29sIEhUTUxU
b2tlbml6ZXI6OnRlbXBvcmFyeUJ1ZmZlcklzKGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRTdHJpbmcp
CkBAIC0xNjc4LDIxICsxNTg5LDkgQEAgaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6aXNBcHBy
b3ByaWF0ZUVuZFRhZygpCiAgICAgcmV0dXJuIG1fYnVmZmVyZWRFbmRUYWdOYW1lID09IG1fYXBw
cm9wcmlhdGVFbmRUYWdOYW1lOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpidWZm
ZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7Ci0gICAgbV90b2tlbi0+
ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOwotICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVy
KGNoYXJhY3Rlcik7Ci19Ci0KIGlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnBhcnNlRXJyb3Io
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlubGluZSBib29sIEhUTUxUb2tlbml6
ZXI6OmhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKLXsKLSAgICByZXR1cm4gbV90b2tlbi0+
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI7Ci19Ci0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCBmYTQ1Y2IyNDMxMTE1OGU5ZGZm
Zjk0ZWI3YjU0MmJhODBkYjEzZmNlLi44N2JjNmExMGMwZTVlOTA4M2U5ZWM1MDM2OWQxNzUxZjg2
MDU0NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBA
IC0yNywxMSArMjcsOCBAQAogI2lmbmRlZiBIVE1MVG9rZW5pemVyX2gKICNkZWZpbmUgSFRNTFRv
a2VuaXplcl9oCiAKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJCYXNlLmgiCiAjaW5jbHVkZSAi
U2VnbWVudGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzks
OCArMzYsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MVG9rZW47
CiAKLWNsYXNzIEhUTUxUb2tlbml6ZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxU
b2tlbml6ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEhUTUxUb2tlbml6ZXJT
dGF0ZSB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIERhdGFTdGF0ZSwKQEAg
LTExOSw3ICsxMTUsMTIgQEAgcHVibGljOgogICAgICAgICBDREFUQVNlY3Rpb25SaWdodFNxdWFy
ZUJyYWNrZXRTdGF0ZSwKICAgICAgICAgQ0RBVEFTZWN0aW9uRG91YmxlUmlnaHRTcXVhcmVCcmFj
a2V0U3RhdGUsCiAgICAgfTsKK307CiAKK2NsYXNzIEhUTUxUb2tlbml6ZXIgOiBwdWJsaWMgTWFy
a3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhUTUxUb2tlbml6ZXJTdGF0ZT4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbml6ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IGNy
ZWF0ZShib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKSB7IHJldHVybiBhZG9wdFB0cihuZXcg
SFRNTFRva2VuaXplcih1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykpOyB9CiAgICAgfkhUTUxUb2tl
bml6ZXIoKTsKIApAQCAtMTMwLDEyICsxMzEsNiBAQCBwdWJsaWM6CiAgICAgLy8gdGhleSBjYWxs
IHJlc2V0KCkgZmlyc3QpLgogICAgIGJvb2wgbmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYsIEhU
TUxUb2tlbiYpOwogCi0gICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVO
dW1iZXI7IH0KLSAgICBpbnQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gMTsgfSAvLyBN
YXRjaGVzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIGJlaGF2aW9yLgotCi0gICAgU3RhdGUg
c3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgdm9pZCBzZXRTdGF0ZShTdGF0
ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KLQogICAgIC8vIFVwZGF0ZXMgdGhlIHRva2Vu
aXplcidzIHN0YXRlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGFnIG5hbWUuIFRoaXMgaXMKICAg
ICAvLyBhbiBhcHByb3hpbWF0aW9uIG9mIGhvdyB0aGUgdHJlZSBidWlsZGVyIHdvdWxkIHVwZGF0
ZSB0aGUgdG9rZW5pemVyJ3MKICAgICAvLyBzdGF0ZS4gVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZv
ciBhcHByb3hpbWF0aW5nIEhUTUwgdG9rZW5pemF0aW9uLiBUbwpAQCAtMTYyLDExMiArMTU3LDM1
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEFsbG93Q0RBVEEoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZEFsbG93Q0RBVEE7IH0KICAgICB2b2lkIHNldFNob3VsZEFsbG93Q0RBVEEoYm9vbCB2
YWx1ZSkgeyBtX3Nob3VsZEFsbG93Q0RBVEEgPSB2YWx1ZTsgfQogCi0gICAgYm9vbCBzaG91bGRT
a2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lwTnVs
bENoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX2ZvcmNlTnVsbENo
YXJhY3RlclJlcGxhY2VtZW50Ci0gICAgICAgICAgICAmJiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUK
LSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlID09IFJDREFUQVN0YXRlCi0gICAgICAgICAgICAg
ICAgfHwgbV9zdGF0ZSA9PSBSQVdURVhUU3RhdGUKLSAgICAgICAgICAgICAgICB8fCBtX3N0YXRl
ID09IFBMQUlOVEVYVFN0YXRlKTsKKyAgICAgICAgICAgICYmIChtX3N0YXRlID09IEhUTUxUb2tl
bml6ZXJTdGF0ZTo6RGF0YVN0YXRlCisgICAgICAgICAgICAgICAgfHwgbV9zdGF0ZSA9PSBIVE1M
VG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlCisgICAgICAgICAgICAgICAgfHwgbV9zdGF0ZSA9
PSBIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZQorICAgICAgICAgICAgICAgIHx8IG1f
c3RhdGUgPT0gSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQotICAgIGNsYXNzIElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IpOwotICAgIHB1YmxpYzoKLSAgICAgICAgSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3IoSFRNTFRva2VuaXplciogdG9rZW5pemVyKQotICAgICAgICAgICAgOiBtX3Rva2Vu
aXplcih0b2tlbml6ZXIpCi0gICAgICAgICAgICAsIG1fbmV4dElucHV0Q2hhcmFjdGVyKCdcMCcp
Ci0gICAgICAgICAgICAsIG1fc2tpcE5leHROZXdMaW5lKGZhbHNlKQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVy
biBtX25leHRJbnB1dENoYXJhY3RlcjsgfQotCi0gICAgICAgIC8vIFJldHVybnMgd2hldGhlciB3
ZSBzdWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCi0gICAgICAgIC8v
IFRoZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBubyBtb3Jl
Ci0gICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgKGFmdGVyIGNvbGxhcHNpbmcgXHJc
biwgZXRjKS4KLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIGludCYgbGluZU51bWJlcikKLSAgICAgICAgewotICAgICAgICBQZWVrQWdhaW46
Ci0gICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7Ci0KLSAgICAgICAg
ICAgIC8vIEV2ZXJ5IGJyYW5jaCBpbiB0aGlzIGZ1bmN0aW9uIGlzIGV4cGVuc2l2ZSwgc28gd2Ug
aGF2ZSBhCi0gICAgICAgICAgICAvLyBmYXN0LXJlamVjdCBicmFuY2ggZm9yIGNoYXJhY3RlcnMg
dGhhdCBkb24ndCByZXF1aXJlIHNwZWNpYWwKLSAgICAgICAgICAgIC8vIGhhbmRsaW5nLiBQbGVh
c2UgcnVuIHRoZSBwYXJzZXIgYmVuY2htYXJrIHdoZW5ldmVyIHlvdSB0b3VjaAotICAgICAgICAg
ICAgLy8gdGhpcyBmdW5jdGlvbi4gSXQncyB2ZXJ5IGhvdC4KLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBzcGVjaWFsQ2hhcmFjdGVyTWFzayA9ICdcbicgfCAnXHInIHwgJ1wwJzsKLSAg
ICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciAmIH5zcGVjaWFsQ2hhcmFjdGVyTWFz
aykgewotICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICht
X25leHRJbnB1dENoYXJhY3RlciA9PSAnXG4nICYmIG1fc2tpcE5leHROZXdMaW5lKSB7Ci0gICAg
ICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBz
b3VyY2UuYWR2YW5jZVBhc3ROZXdsaW5lKGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgICAgIGlm
IChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdccicpIHsKLSAg
ICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICdcbic7Ci0gICAgICAgICAgICAg
ICAgbV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Vycm9nYXRlIHBhaXIgcmFuZ2Ug
YXMgd2VsbCBhcwotICAgICAgICAgICAgICAgIC8vIGEgbnVtYmVyIG9mIHNwZWNpZmljIGNoYXJh
Y3RlciB2YWx1ZXMgYXJlIHBhcnNlIGVycm9ycyBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkCi0gICAg
ICAgICAgICAgICAgLy8gYnkgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0
aGlzIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzcGVjIGFzIGRvaW5nCi0gICAgICAgICAgICAgICAg
Ly8gdGhhdCBmaWx0ZXJpbmcgYnJlYWtzIHN1cnJvZ2F0ZSBwYWlyIGhhbmRsaW5nIGFuZCBjYXVz
ZXMgdXMgbm90IHRvIG1hdGNoIE1pbmVmaWVsZC4KLSAgICAgICAgICAgICAgICBpZiAobV9uZXh0
SW5wdXRDaGFyYWN0ZXIgPT0gJ1wwJyAmJiAhc2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJr
ZXIoc291cmNlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV90b2tlbml6ZXItPnNob3Vs
ZFNraXBOdWxsQ2hhcmFjdGVycygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291
cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIFBlZWtBZ2FpbjsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IDB4RkZG
RDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSBhcmUg
bW9yZSBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IGFmdGVyIGFkdmFuY2luZy4KLSAgICAgICAgYm9v
bCBhZHZhbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1iZXIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKGxpbmVOdW1iZXIpOwotICAgICAgICAg
ICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNlLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBlbmRPZkZpbGVNYXJrZXI7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBib29sIHNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c291cmNlLmlzQ2xvc2VkKCkgJiYgc291cmNlLmxlbmd0aCgpID09IDE7Ci0gICAgICAgIH0KLQot
ICAgICAgICBIVE1MVG9rZW5pemVyKiBtX3Rva2VuaXplcjsKLQotICAgICAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNuZXh0LWlucHV0LWNo
YXJhY3RlcgotICAgICAgICBVQ2hhciBtX25leHRJbnB1dENoYXJhY3RlcjsKLSAgICAgICAgYm9v
bCBtX3NraXBOZXh0TmV3TGluZTsKLSAgICB9OwotCiAgICAgSFRNTFRva2VuaXplcihib29sIHVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKTsKIAogICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHko
U2VnbWVudGVkU3RyaW5nJik7CiAKICAgICBpbmxpbmUgdm9pZCBwYXJzZUVycm9yKCk7Ci0gICAg
aW5saW5lIHZvaWQgYnVmZmVyQ2hhcmFjdGVyKFVDaGFyKTsKLSAgICBpbmxpbmUgdm9pZCBidWZm
ZXJDb2RlUG9pbnQodW5zaWduZWQpOworICAgIAorICAgIGlubGluZSBib29sIGVtaXRBbmRSZXN1
bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSBz
dGF0ZSkKKyAgICB7CisgICAgICAgIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKTsKKyAgICAgICAg
cmV0dXJuIE1hcmt1cFRva2VuaXplckJhc2U8SFRNTFRva2VuLCBIVE1MVG9rZW5pemVyU3RhdGU+
OjplbWl0QW5kUmVzdW1lSW4oc291cmNlLCBzdGF0ZSk7CisgICAgfQorICAgIAorICAgIGlubGlu
ZSBib29sIGVtaXRBbmRSZWNvbnN1bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuaXplclN0YXRlOjpTdGF0ZSBzdGF0ZSkKKyAgICB7CisgICAgICAgc2F2ZUVuZFRhZ05hbWVJ
Zk5lZWRlZCgpOworICAgICAgIHJldHVybiBNYXJrdXBUb2tlbml6ZXJCYXNlPEhUTUxUb2tlbiwg
SFRNTFRva2VuaXplclN0YXRlPjo6ZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgc3RhdGUpOwor
ICAgIH0KIAotICAgIGlubGluZSBib29sIGVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcm
LCBTdGF0ZSk7Ci0gICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlY29uc3VtZUluKFNlZ21lbnRlZFN0
cmluZyYsIFN0YXRlKTsKLSAgICBpbmxpbmUgYm9vbCBlbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0
cmluZyYpOwotICAgIGlubGluZSBib29sIGZsdXNoRW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0
cmluZyYsIFN0YXRlKTsKKyAgICBpbmxpbmUgYm9vbCBmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdt
ZW50ZWRTdHJpbmcmLCBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlKTsKIAogICAgIC8vIFJldHVy
biB3aGV0aGVyIHdlIG5lZWQgdG8gZW1pdCBhIGNoYXJhY3RlciB0b2tlbiBiZWZvcmUgZGVhbGlu
ZyB3aXRoCiAgICAgLy8gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcuCkBAIC0yODEsMTkgKzE5OSw4IEBA
IHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpOwogICAg
IGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKTsKIAotICAgIGlubGluZSBib29sIGhh
dmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0KLSAgICBTdGF0ZSBtX3N0YXRlOwotCiAgICAg
VmVjdG9yPFVDaGFyLCAzMj4gbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWU7CiAKLSAgICAvLyBtX3Rv
a2VuIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIuIElmIG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0
YWNrLAotICAgIC8vIHRoaXMgbWVtYmVyIG1pZ2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVk
IG1lbW9yeS4KLSAgICBIVE1MVG9rZW4qIG1fdG9rZW47Ci0gICAgaW50IG1fbGluZU51bWJlcjsK
LQotICAgIGJvb2wgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nOwotICAgIGJvb2wgbV9m
b3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudDsKICAgICBib29sIG1fc2hvdWxkQWxsb3dDREFU
QTsKIAogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvI3RlbXBvcmFyeS1idWZmZXIKQEAgLTMwMywxMiArMjEwLDYgQEAgcHJpdmF0ZToKICAg
ICAvLyB0b2tlbiAoZS5nLiwgd2hlbiBsZXhpbmcgc2NyaXB0KS4gV2UgYnVmZmVyIHRoZSBuYW1l
IG9mIHRoZSBlbmQgdGFnCiAgICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJlciBpdCBuZXh0
IHRpbWUgd2UgcmUtZW50ZXIgdGhlIHRva2VuaXplci4KICAgICBWZWN0b3I8VUNoYXIsIDMyPiBt
X2J1ZmZlcmVkRW5kVGFnTmFtZTsKLQotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2FkZGl0aW9uYWwtYWxsb3dlZC1jaGFyYWN0ZXIKLSAg
ICBVQ2hhciBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyOwotCi0gICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10
aGUtaW5wdXQtc3RyZWFtCi0gICAgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgbV9pbnB1dFN0cmVh
bVByZXByb2Nlc3NvcjsKICAgICAKICAgICBib29sIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
aW5kZXggYjdlYmNlNzk1NDJlNWNlNDU1YWU3MmQ1MTk2ZTQ0NDRiMGQ2MWE3Mi4uMDNhMjczMmI0
ZmY3YzNmYzRiOTM4ZDYzOTVjZTFmNzRiZjM3ZmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gcGxhaW50ZXh0VGFnKSB7CiAgICAgICAg
IHByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKTsKICAgICAgICAgbV90cmVlLmlu
c2VydEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5z
ZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIG1fcGFyc2Vy
LT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBidXR0
b25UYWcpIHsKQEAgLTkzOCw3ICs5MzgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSB0ZXh0YXJlYVRhZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1l
bnQodG9rZW4pOwogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFNraXBMZWFkaW5n
TmV3TGluZUZvckxpc3RpbmcodHJ1ZSk7Ci0gICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOworICAgICAgICBtX3BhcnNlci0+
dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwog
ICAgICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICAg
ICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1v
ZGUpOwpAQCAtMjIzMCw4ICsyMjMwLDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIC8vIHNlbGYtY2xvc2lu
ZyBzY3JpcHQgdGFnIHdhcyBlbmNvdW50ZXJlZCBhbmQgcHJlLUhUTUw1IHBhcnNlcgogICAgICAg
ICAgICAgLy8gcXVpcmtzIGFyZSBlbmFibGVkLiBXZSBtdXN0IHNldCB0aGUgdG9rZW5pemVyJ3Mg
c3RhdGUgdG8KICAgICAgICAgICAgIC8vIERhdGFTdGF0ZSBleHBsaWNpdGx5IGlmIHRoZSB0b2tl
bml6ZXIgZGlkbid0IGhhdmUgYSBjaGFuY2UgdG8uCi0gICAgICAgICAgICBBU1NFUlQobV9wYXJz
ZXItPnRva2VuaXplcigpLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSB8fCBt
X3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKTsKLSAgICAgICAgICAgIG1fcGFyc2VyLT50b2tlbml6
ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEFT
U0VSVChtX3BhcnNlci0+dG9rZW5pemVyKCktPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUgfHwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyk7CisgICAgICAgICAgICBt
X3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3RyZWUub3Bl
bkVsZW1lbnRzKCktPnBvcCgpOwpAQCAtMjc4NSw3ICsyNzg1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
Zyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBtX3BhcnNlci0+
dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKKyAgICBt
X3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRB
U3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwog
ICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOwogfQpAQCAtMjc5NCw3ICsyNzk0LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7
Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdU
RVhUU3RhdGUpOworICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2Vu
aXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0g
bV9pbnNlcnRpb25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOwogfQpAQCAt
MjgwMyw3ICsyODAzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFy
dFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0U2NyaXB0RWxl
bWVudCh0b2tlbik7Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpTY3JpcHREYXRhU3RhdGUpOworICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2lu
YWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogCiAgICAgVGV4dFBvc2l0aW9uMCBw
b3NpdGlvbiA9IG1fcGFyc2VyLT50ZXh0UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYzYjUxNjAyMWE0MjQ5
ZjM1Y2I2ZGE3ZmU0YWFmMmMzMmYzOGFjZTYuLmVkNTU0M2VjNTM2NTNlMWM5Nzg4YjZmZWFkNTBl
MGZkMmIyYzMxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRE
b2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBUZXh0RG9jdW1lbnRQYXJzZXI6OlRl
eHREb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTERvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50LCBmYWxzZSkKICAgICAsIG1faGF2ZUluc2VydGVkRmFrZVByZUVs
ZW1lbnQoZmFsc2UpCiB7Ci0gICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlBMQUlOVEVYVFN0YXRlKTsKKyAgICB0b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXpl
clN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CiB9CiAKIFRleHREb2N1bWVudFBhcnNlcjo6flRleHRE
b2N1bWVudFBhcnNlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9U
ZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0
Vmlld1NvdXJjZVBhcnNlci5jcHAKaW5kZXggZDdlNmUzZGZjNmQ1Mzc2MDQzY2ExYWNhYjcyZjlj
NWZhMDJmMWIzOS4uMzQzYjIzYzI5MDgyZDM0NzQyNjA5NTg4NTZjYzk3Y2FiODhkZWZiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2Vy
LmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBUZXh0Vmlld1NvdXJj
ZVBhcnNlcjo6VGV4dFZpZXdTb3VyY2VQYXJzZXIoSFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBIVE1MVmlld1NvdXJjZVBhcnNlcihkb2N1bWVudCkKIHsKLSAgICB0b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOworICAgIHRv
a2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsK
IH0KIAogVGV4dFZpZXdTb3VyY2VQYXJzZXI6On5UZXh0Vmlld1NvdXJjZVBhcnNlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaAppbmRleCBiZDgzYjIzYmRl
OTNkZmU1OWRkOWNiYWJhZDg0N2MzMzAzOGU3MTNkLi41NGJmMjZlYjdmYmFkYzMxOWUwOWM3MzZi
YTBhNDUyZTg2OTdiYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01h
cmt1cFRva2VuQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9r
ZW5CYXNlLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTWFya3VwVG9rZW5CYXNlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tlbkJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZVNldDo6VHlwZSBU
eXBlOworICAgIHR5cGVkZWYgVHlwZVNldCBUeXBlOwogCiAgICAgY2xhc3MgUmFuZ2UgewogICAg
IHB1YmxpYzoKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXR0cmlidXRl
c1tpXS5tX3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsK
ICAgICB9CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB0
eXBlbmFtZSBUeXBlOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAg
IGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAogICAgIHsKQEAgLTM2Niw3ICszNjYsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gd2FudCB0byBlbmQgdXAgd2l0aCBhIGNsZWFuZXIgaW50ZXJmYWNlIGJl
dHdlZW4gdGhlIHR3byBjbGFzc2VzLgogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNIVE1MVG9rZW47
CiAKLSAgICBUeXBlIG1fdHlwZTsKKyAgICB0eXBlbmFtZSBUeXBlOjpUeXBlIG1fdHlwZTsKICAg
ICBSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCiAgICAgaW50IG1fYmFz
ZU9mZnNldDsKICAgICBEYXRhVmVjdG9yIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYjFkNjQzNjY1MzI5
MDEzMDdjZTlmNDA5OGE3MDc4ZGNlN2JmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oCkBAIC0wLDAgKzEsMjEyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWFya3VwVG9rZW5pemVyQmFzZV9oCisjZGVmaW5lIE1hcmt1cFRva2VuaXplckJh
c2VfaAorCisjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gTmV2ZXIgdXNlIHRoaXMgdHlwZSBmb3IgYSB2YXJpYWJsZSwgYXMgaXQg
Y29udGFpbnMgc2V2ZXJhbCBub24tdmlydHVhbCBmdW5jdGlvbnMuCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUb2tlbiwgdHlwZW5hbWUgU3RhdGU+CitjbGFzcyBNYXJrdXBUb2tlbml6ZXJCYXNlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tlbml6ZXJCYXNlKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NYXJrdXBUb2tlbml6ZXJC
YXNlKCkgeyB9CisKKyAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51
bWJlcjsgfQorICAgIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiAxOyB9IC8vIE1h
dGNoZXMgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmggYmVoYXZpb3IuCisKKyAgICB0eXBlbmFt
ZSBTdGF0ZTo6U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdm9p
ZCBzZXRTdGF0ZSh0eXBlbmFtZSBTdGF0ZTo6U3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRl
OyB9CisKKyAgICBib29sIGZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudDsgfQorICAgIHZvaWQgc2V0Rm9y
Y2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2ZvcmNlTnVsbENoYXJh
Y3RlclJlcGxhY2VtZW50ID0gdmFsdWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lw
TnVsbENoYXJhY3RlcnMoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5n
LXRoZS1pbnB1dC1zdHJlYW0KKyAgICBjbGFzcyBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciB7Cisg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKTsKKyAg
ICBwdWJsaWM6CisgICAgICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKE1hcmt1cFRva2VuaXpl
ckJhc2U8VG9rZW4sIFN0YXRlPiogdG9rZW5pemVyKQorICAgICAgICAgICAgOiBtX3Rva2VuaXpl
cih0b2tlbml6ZXIpCisgICAgICAgICAgICAsIG1fbmV4dElucHV0Q2hhcmFjdGVyKCdcMCcpCisg
ICAgICAgICAgICAsIG1fc2tpcE5leHROZXdMaW5lKGZhbHNlKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBt
X25leHRJbnB1dENoYXJhY3RlcjsgfQorCisgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBz
dWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCisgICAgICAgIC8vIFRo
ZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBubyBtb3JlCisg
ICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgKGFmdGVyIGNvbGxhcHNpbmcgXHJcbiwg
ZXRjKS4KKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIGludCYgbGluZU51bWJlcikKKyAgICAgICAgeworICAgICAgICBQZWVrQWdhaW46Cisg
ICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7CisKKyAgICAgICAgICAg
IC8vIEV2ZXJ5IGJyYW5jaCBpbiB0aGlzIGZ1bmN0aW9uIGlzIGV4cGVuc2l2ZSwgc28gd2UgaGF2
ZSBhCisgICAgICAgICAgICAvLyBmYXN0LXJlamVjdCBicmFuY2ggZm9yIGNoYXJhY3RlcnMgdGhh
dCBkb24ndCByZXF1aXJlIHNwZWNpYWwKKyAgICAgICAgICAgIC8vIGhhbmRsaW5nLiBQbGVhc2Ug
cnVuIHRoZSBwYXJzZXIgYmVuY2htYXJrIHdoZW5ldmVyIHlvdSB0b3VjaAorICAgICAgICAgICAg
Ly8gdGhpcyBmdW5jdGlvbi4gSXQncyB2ZXJ5IGhvdC4KKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBzcGVjaWFsQ2hhcmFjdGVyTWFzayA9ICdcbicgfCAnXHInIHwgJ1wwJzsKKyAgICAg
ICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciAmIH5zcGVjaWFsQ2hhcmFjdGVyTWFzaykg
eworICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX25l
eHRJbnB1dENoYXJhY3RlciA9PSAnXG4nICYmIG1fc2tpcE5leHROZXdMaW5lKSB7CisgICAgICAg
ICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZVBhc3ROZXdsaW5lKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIGlmIChz
b3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdccicpIHsKKyAgICAg
ICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICdcbic7CisgICAgICAgICAgICAgICAg
bV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Vycm9nYXRlIHBhaXIgcmFuZ2UgYXMg
d2VsbCBhcworICAgICAgICAgICAgICAgIC8vIGEgbnVtYmVyIG9mIHNwZWNpZmljIGNoYXJhY3Rl
ciB2YWx1ZXMgYXJlIHBhcnNlIGVycm9ycyBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkCisgICAgICAg
ICAgICAgICAgLy8gYnkgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlz
IGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzcGVjIGFzIGRvaW5nCisgICAgICAgICAgICAgICAgLy8g
dGhhdCBmaWx0ZXJpbmcgYnJlYWtzIHN1cnJvZ2F0ZSBwYWlyIGhhbmRsaW5nIGFuZCBjYXVzZXMg
dXMgbm90IHRvIG1hdGNoIE1pbmVmaWVsZC4KKyAgICAgICAgICAgICAgICBpZiAobV9uZXh0SW5w
dXRDaGFyYWN0ZXIgPT0gJ1wwJyAmJiAhc2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJrZXIo
c291cmNlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBvcnRpb24gb2YgY29kZSBz
aG91bGQgYmUgaGl0IGluZnJlcXVlbnRseSwgc28gYSB2aXJ0dWFsIGNhbGwgc2hvdWxkbid0IGhp
dCBwZXJmb3JtYW5jZSBtdWNoCisgICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuaXplci0+
c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gUGVla0FnYWluOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0g
MHhGRkZEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJl
IGFyZSBtb3JlIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgYWZ0ZXIgYWR2YW5jaW5nLgorICAgICAg
ICBib29sIGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGludCYgbGluZU51bWJlcikK
KyAgICAgICAgeworICAgICAgICAgICAgc291cmNlLmFkdmFuY2UobGluZU51bWJlcik7CisgICAg
ICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gcGVlayhzb3VyY2UsIGxpbmVOdW1iZXIpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGVuZE9mRmlsZU1hcmtlciA9IDA7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBib29sIHNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFy
a2VyKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gc291cmNlLmlzQ2xvc2VkKCkgJiYgc291cmNlLmxlbmd0aCgpID09IDE7CisgICAg
ICAgIH0KKworICAgICAgICBNYXJrdXBUb2tlbml6ZXJCYXNlPFRva2VuLCBTdGF0ZT4qIG1fdG9r
ZW5pemVyOworCisgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvI25leHQtaW5wdXQtY2hhcmFjdGVyCisgICAgICAgIFVDaGFyIG1fbmV4
dElucHV0Q2hhcmFjdGVyOworICAgICAgICBib29sIG1fc2tpcE5leHROZXdMaW5lOworICAgIH07
CisKKyAgICBNYXJrdXBUb2tlbml6ZXJCYXNlKCkgOiBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29y
KHRoaXMpIHsgcmVzZXQoKTsgfQorCisgICAgaW5saW5lIHZvaWQgYnVmZmVyQ2hhcmFjdGVyKFVD
aGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7CisgICAgICAgIG1fdG9rZW4tPmVu
c3VyZUlzQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0
ZXIoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBidWZmZXJDb2RlUG9pbnQo
dW5zaWduZWQpOworCisgICAgLy8gVGhpcyBtZXRob2QgY2FuIGdldCBoaWRkZW4gaW4gc3ViY2xh
c3NlcworICAgIGlubGluZSBib29sIGVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgdHlwZW5hbWUgU3RhdGU6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgbV9zdGF0
ZSA9IHN0YXRlOworICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLy8gVGhpcyBtZXRob2QgY2FuIGdldCBo
aWRkZW4gaW4gc3ViY2xhc3NlcworICAgIGlubGluZSBib29sIGVtaXRBbmRSZWNvbnN1bWVJbihT
ZWdtZW50ZWRTdHJpbmcmLCB0eXBlbmFtZSBTdGF0ZTo6U3RhdGUgc3RhdGUpCisgICAgeworICAg
ICAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlubGluZSBib29sIGVtaXRFbmRPZkZpbGUoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCisgICAg
eworICAgICAgICBpZiAoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkRhdGFTdGF0ZTsKKyAgICAg
ICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsKKyAgICAgICAgbV90b2tlbi0+Y2xlYXIo
KTsKKyAgICAgICAgbV90b2tlbi0+bWFrZUVuZE9mRmlsZSgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RGF0YVN0YXRlOworICAgICAgICBtX3Rva2VuID0gMDsKKyAgICAgICAgbV9saW5lTnVt
YmVyID0gMDsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IFRva2VuOjpU
eXBlOjpDaGFyYWN0ZXI7CisgICAgfQorICAgIAorICAgIHR5cGVuYW1lIFN0YXRlOjpTdGF0ZSBt
X3N0YXRlOworCisgICAgLy8gbV90b2tlbiBpcyBvd25lZCBieSB0aGUgY2FsbGVyLiBJZiBuZXh0
VG9rZW4gaXMgbm90IG9uIHRoZSBzdGFjaywKKyAgICAvLyB0aGlzIG1lbWJlciBtaWdodCBiZSBw
b2ludGluZyB0byB1bmFsbG9jYXRlZCBtZW1vcnkuCisgICAgVG9rZW4qIG1fdG9rZW47CisgICAg
aW50IG1fbGluZU51bWJlcjsKKworICAgIGJvb2wgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0
aW5nOworICAgIGJvb2wgbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudDsKKworICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2FkZGl0
aW9uYWwtYWxsb3dlZC1jaGFyYWN0ZXIKKyAgICBVQ2hhciBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hh
cmFjdGVyOworCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IgbV9pbnB1dFN0cmVhbVByZXByb2Nlc3NvcjsKK307CisKK30KKworI2Vu
ZGlmIC8vIE1hcmt1cFRva2VuaXplckJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZTMxMzE1NzdmYjg3Y2YzZjdmNTA2YjIxNWE4YzQxOWMxMDM1MDZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2Rz
LmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxl
LCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhv
ZHNfaAorI2RlZmluZSBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzX2gKKworI2luY2x1ZGUg
IlNlZ21lbnRlZFN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBib29s
IGlzVG9rZW5pemVyV2hpdGVzcGFjZShVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gY2MgPT0gJyAn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEMnOworfQorCitp
bmxpbmUgdm9pZCBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBjb25zdCBjaGFyKiBleHBlY3RlZENoYXJhY3RlcnMpCit7CisgICAgd2hp
bGUgKCpleHBlY3RlZENoYXJhY3RlcnMpCisgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJU
SWdub3JpbmdDYXNlKCpleHBlY3RlZENoYXJhY3RlcnMrKyk7Cit9CisKK2lubGluZSB2b2lkIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlQoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIq
IGV4cGVjdGVkQ2hhcmFjdGVycykKK3sKKyAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykK
KyAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsK
K30KKworI2lmIENPTVBJTEVSKE1TVkMpCisvLyBXZSBuZWVkIHRvIGRpc2FibGUgdGhlICJ1bnJl
YWNoYWJsZSBjb2RlIiB3YXJuaW5nIGJlY2F1c2Ugd2Ugd2FudCB0byBhc3NlcnQKKy8vIHRoYXQg
c29tZSBjb2RlIHBvaW50cyBhcmVuJ3QgcmVhY2hlZCBpbiB0aGUgc3RhdGUgbWFjaGluZS4KKyNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAyKQorI2VuZGlmCisKKyNkZWZpbmUgQkVHSU5fU1RB
VEUocHJlZml4LCBzdGF0ZU5hbWUpIGNhc2UgcHJlZml4OjpzdGF0ZU5hbWU6IHN0YXRlTmFtZToK
KyNkZWZpbmUgRU5EX1NUQVRFKCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOworCisvLyBX
ZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgInJlY29uc3VtZSB0aGUg
Y3VycmVudCBpbnB1dAorLy8gY2hhcmFjdGVyIGluIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCisjZGVm
aW5lIFJFQ09OU1VNRV9JTihwcmVmaXgsIHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBw
cmVmaXg6OnN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8vIFdlIHVzZSB0
aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAiY29uc3VtZSB0aGUgbmV4dCBpbnB1
dAorLy8gY2hhcmFjdGVyIC4uLiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCisj
ZGVmaW5lIEFEVkFOQ0VfVE8ocHJlZml4LCBzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUg
PSBwcmVmaXg6OnN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGlmICghbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJj
ZSwgbV9saW5lTnVtYmVyKSkgICAgICBcCisgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNj
ID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAg
ICAgICAgICBcCisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8v
IFNvbWV0aW1lcyB0aGVyZSdzIG1vcmUgY29tcGxpY2F0ZWQgbG9naWMgaW4gdGhlIHNwZWMgdGhh
dCBzZXBhcmF0ZXMgd2hlbgorLy8gd2UgY29uc3VtZSB0aGUgbmV4dCBpbnB1dCBjaGFyYWN0ZXIg
YW5kIHdoZW4gd2Ugc3dpdGNoIHRvIGEgcGFydGljdWxhcgorLy8gc3RhdGUuIFdlIGhhbmRsZSB0
aG9zZSBjYXNlcyBieSBhZHZhbmNpbmcgdGhlIHNvdXJjZSBkaXJlY3RseSBhbmQgdXNpbmcKKy8v
IHRoaXMgbWFjcm8gdG8gc3dpdGNoIHRvIHRoZSBpbmRpY2F0ZWQgc3RhdGUuCisjZGVmaW5lIFNX
SVRDSF9UTyhwcmVmaXgsIHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBwcmVmaXg6
OnN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBl
ZWsoc291cmNlLCBtX2xpbmVOdW1iZXIpKSBcCisgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAg
ICAgICAgICAgICBcCisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
K30KKworI2VuZGlmIC8vIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101765</attachid>
            <date>2011-07-22 14:25:08 -0700</date>
            <delta_ts>2011-07-22 18:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65000-20110722142507.patch</filename>
            <type>text/plain</type>
            <size>122613</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMjc1Y2E3OWM5ZDc0NmRl
NDZhYjkxYjA0MzAwMGNiM2MyMTYzZGFhLi42OTI2MjFhYmZkMzU2MDRmZTdkYmEyOGU5YmY3N2Nl
ZmM0MjFmMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDctMjIgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBIVE1MIHRva2Vu
aXplciBjb2RlIGluIHByZXBhcmF0aW9uIGZvciBhIG5ldyBYTUwgdG9rZW5pemVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXpl
clN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6aXNFbmRUYWdCdWZmZXJpbmdT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpIVE1MVG9rZW5pemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6OmZsdXNoRW1pdEFuZFJlc3VtZUluKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjp1cGRhdGVTdGF0ZUZvcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2hvdWxkU2tpcE51bGxD
aGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmVtaXRBbmRSZXN1
bWVJbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjplbWl0QW5kUmVjb25zdW1l
SW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5l
ZWRlZCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jh
d1RleHRTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTY3JpcHRTdGFydFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3Vt
ZW50UGFyc2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Vmlld1NvdXJjZVBhcnNlcjo6VGV4dFZpZXdTb3Vy
Y2VQYXJzZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbkJhc2U6OnR5cGUpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuaXplckJhc2U6On5NYXJrdXBUb2tlbml6ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1hcmt1cFRva2VuaXplckJhc2U6OmxpbmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFy
a3VwVG9rZW5pemVyQmFzZTo6Y29sdW1uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuaXplckJhc2U6OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXpl
ckJhc2U6OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6
OmZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuaXplckJhc2U6OnNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OklucHV0U3RyZWFtUHJlcHJvY2Vzc29y
OjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tl
bml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6bmV4dElucHV0Q2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OklucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6Oklu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1
cFRva2VuaXplckJhc2U6OklucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpzaG91bGRUcmVhdE51bGxB
c0VuZE9mRmlsZU1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNl
OjpNYXJrdXBUb2tlbml6ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXpl
ckJhc2U6OmJ1ZmZlckNoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6
ZXJCYXNlOjplbWl0QW5kUmVzdW1lSW4pOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5p
emVyQmFzZTo6ZW1pdEFuZFJlY29uc3VtZUluKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRv
a2VuaXplckJhc2U6OmVtaXRFbmRPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9r
ZW5pemVyQmFzZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFz
ZTo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIHhtbC9wYXJzZXIvTWFy
a3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omlz
VG9rZW5pemVyV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlU3RyaW5nQW5k
QVNTRVJUSWdub3JpbmdDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VTdHJpbmdBbmRB
U1NFUlQpOgorCiAyMDExLTA3LTIwICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAog
ICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgR1RLIGJ1aWxkIGFmdGVyIGNoYW5nZXNldCA5MTM5
NiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTEzOTY+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBlMmVjM2VjMjEwNjc4ZDczYjk5NTUxYjNlOGI2NTY3YjEzY2M1
NzU1Li5hZTc5ZDVkMmZlNDc0YTc0NjdhMGI1NGViZjExNjBjODE3MjRjMTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM4MDcsNiArMzgwNyw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01h
cmt1cFRva2VuaXplckJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJJbmxpbmVNZXRob2RzLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hN
TERvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOTFmM2Y0OWRjM2VlNTYxZTZmMjc5
M2ViMTllM2M3ODIzZmQyNTQ2Li45ZWVmOWU5ODRkMWIzMjMxYTE4MmU4NjE5N2QyNzk5YjI5ZDky
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MTIyLDYgKzYxMjIsOCBAQAogICAgICAgICAgICAg
J3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tl
bkJhc2UuaCcsCisgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgn
LAorICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAg
ICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICd4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCA3ZTBiYjIwZDEwNTBmYjRkYWI5YWYxMjU3ZWFmOGEzYWI0YWNkNWNlLi5kNzAzY2ZmM2Y5YWQ4
YTY2OGJlMDFhNGE2ZWUzODAzODlkMjczOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjQ5OCw2ICsy
NDk4LDggQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBc
CiAgICAgd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBcCiAgICAgeG1sL3BhcnNlci9NYXJrdXBUb2tl
bkJhc2UuaCBcCisgICAgeG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggXAorICAgIHht
bC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIFwKICAgICB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmggXAogICAgIHhtbC9ET01QYXJzZXIuaCBcCiAgICAgeG1sL05h
dGl2ZVhQYXRoTlNSZXNvbHZlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggNTRjM2JmZWU1NjgyZWZiNmYyODZkNmViNjM0NWI0OTVjOTg3
MmM3OS4uNDkwODRjYTg2M2U2Mjk0YmRjNmIwMWQwYjJjM2Y4YjliZTAxZDI2MSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyNjIxLDYgKzQy
NjIxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuaXplckJhc2UuaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcTWFya3Vw
VG9rZW5pemVySW5saW5lTWV0aG9kcy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRkYWExYWE4ODEyNTdhNDc5YjQwN2IzYzFkNTc5ODRh
NWRhMmY1MTQuLjIxMjA3NGZlMzZlNjExMDJiM2Y5OWFlNzM1ZjllNzMxZjU4NWQ4ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2LDYgKzU2LDggQEAKIAkJMDBCOTMxODkxM0JBOERCQzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwMEI5MzE4MzEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcCAqLzsgfTsKIAkJMDBCOTMxOEIxM0JBOERDOTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDBCOTMxODUxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUu
Y3BwICovOyB9OwogCQkwMEI5MzE4QzEzQkE4RENDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLzsg
fTsKKwkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1l
dGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAw
QzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgg
Ki87IH07CisJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEM2MEU0
MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovOyB9OwogCQkwMENB
OTNCMjEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQ0E5M0IxMTNDNjY5MTYwMEY3
RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovOyB9OwogCQkwMENBOTNCNTEzQzY2OTdD
MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5l
d1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJMDBEMDQ2NEExM0M0RDE0NTAwMzI2RkND
IC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1M
Q2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLzsgfTsKQEAgLTY0NjIsNiArNjQ2NCw4IEBA
CiAJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODUxM0JB
ODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTg2MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxE
b2N1bWVudFBhcnNlclNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhN
TERvY3VtZW50UGFyc2VyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBD
NjBFM0UxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwVG9rZW5pemVySW5saW5lTWV0
aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEM2MEU0MTEzRDc5N0FFMDA5
MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrdXBUb2tlbml6ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXdYTUxEb2N1bWVudFBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMENBOTNCNDEzQzY2OTdDMDBGN0ZFOTUgLyog
TmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc5
MSw2ICsxMjc5NSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwMDAyMkU2ODEzQ0UxQkJBMDAy
ODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oICovLAogCQkJ
CTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCAqLywKKwkJCQkw
MEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovLAorCQkJ
CTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2Rz
LmggKi8sCiAJCQkJMDBDQTkzQjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFy
c2VyLmNwcCAqLywKIAkJCQkwMENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1l
bnRQYXJzZXIuaCAqLywKIAkJCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLywKQEAgLTIyMjI2LDYgKzIyMjMyLDggQEAKIAkJCQk5
MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tl
bml6ZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwMEM2MEU0MjEzRDc5N0FF
MDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFC
RTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggODUwZWJjYmRmMGYzZTEz
YmFkMjZiN2I1ODk0ZmJiOTBlZGYwY2Y0OS4uMjljNmEzY2IzNzllNTQxMDIwOWU5MjQwYjQxNzVm
ZTkxZDczYTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC00OSwyNyArNDksMjcgQEAgbmFtZXNwYWNlIHsKIAogLy8gVGhp
cyBpcyBhIGRpcmVjdCB0cmFuc2NyaXB0aW9uIG9mIHN0ZXAgNCBmcm9tOgogLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVu
ZC5odG1sI2ZyYWdtZW50LWNhc2UKLUhUTUxUb2tlbml6ZXI6OlN0YXRlIHRva2VuaXplclN0YXRl
Rm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJy
b3JzKQorSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRF
bGVtZW50KEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVycm9ycykKIHsKICAg
ICBpZiAoIWNvbnRleHRFbGVtZW50KQotICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6RGF0
YVN0YXRlOworICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGU7CiAK
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnID0gY29udGV4dEVsZW1lbnQtPnRh
Z1FOYW1lKCk7CiAKICAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHRpdGxlVGFnKSB8fCBjb250
ZXh0VGFnLm1hdGNoZXModGV4dGFyZWFUYWcpKQotICAgICAgICByZXR1cm4gSFRNTFRva2VuaXpl
cjo6UkNEQVRBU3RhdGU7CisgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFU
QVN0YXRlOwogICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMoc3R5bGVUYWcpCiAgICAgICAgIHx8
IGNvbnRleHRUYWcubWF0Y2hlcyh4bXBUYWcpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hl
cyhpZnJhbWVUYWcpCiAgICAgICAgIHx8IChjb250ZXh0VGFnLm1hdGNoZXMobm9lbWJlZFRhZykg
JiYgSFRNTFRyZWVCdWlsZGVyOjpwbHVnaW5zRW5hYmxlZChjb250ZXh0RWxlbWVudC0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHx8IChjb250ZXh0VGFnLm1hdGNoZXMobm9zY3JpcHRU
YWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0RW5hYmxlZChjb250ZXh0RWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhub2ZyYW1l
c1RhZykpCi0gICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9rZW5pemVyOjpSQVdU
RVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlIDogSFRNTFRv
a2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZTsKICAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVz
KHNjcmlwdFRhZykpCi0gICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9rZW5pemVy
OjpTY3JpcHREYXRhU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0
YXRlIDogSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZTsKICAgICBpZiAoY29udGV4
dFRhZy5tYXRjaGVzKHBsYWludGV4dFRhZykpCi0gICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVy
OjpQTEFJTlRFWFRTdGF0ZTsKLSAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlOwor
ICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZTsKKyAgICBy
ZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6
ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAgIG1fcGFyc2VyU2NoZWR1bGVyLT5zY2hl
ZHVsZUZvclJlc3VtZSgpOwogCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewotICAg
ICAgICBBU1NFUlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0
YXRlKTsKKyAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7CiAg
ICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gYWRvcHRQdHIobmV3IEhUTUxQcmVsb2FkU2Nh
bm5lcihkb2N1bWVudCgpKSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRU
b0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbml6ZXIuY3BwCmluZGV4IDZkNTdlZWFlMWQ4OTBkZGQzMWYzZmMzNzNhNGY1MDg3OTEy
NmNiNzAuLmQ1MWQ0M2QzYjllMmEyNzUwMTFhNGY1OTQ5YzhkOTQyMDgzYTIzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWFya3VwVG9rZW5pemVySW5saW5l
TWV0aG9kcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTQ2LDggKzQ3LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1j
b25zdCBVQ2hhciBIVE1MVG9rZW5pemVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyID0gMDsKLQogbmFtZXNwYWNlIHsKIAogaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNl
KFVDaGFyIGNjKQpAQCAtNTcsMjMgKzU2LDYgQEAgaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNlKFVD
aGFyIGNjKQogICAgIHJldHVybiBjYyArIGxvd2VyQ2FzZU9mZnNldDsKIH0KIAotaW5saW5lIGJv
b2wgaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKFVDaGFyIGNjKQotewotICAgIHJldHVybiBjYyA9PSAn
ICcgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQyc7Ci19Ci0K
LWlubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFjdGVycykKLXsKLSAgICB3
aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKLSAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NF
UlRJZ25vcmluZ0Nhc2UoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKLX0KLQotaW5saW5lIHZvaWQg
YWR2YW5jZVN0cmluZ0FuZEFTU0VSVChTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQotewotICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFyYWN0ZXJz
KQotICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgqZXhwZWN0ZWRDaGFyYWN0ZXJzKysp
OwotfQotCiBpbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFy
LCAzMj4mIHZlY3RvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHZlY3Rvci5z
aXplKCkgIT0gc3RyaW5nLmxlbmd0aCgpKQpAQCAtODQsMTcgKzY2LDE3IEBAIGlubGluZSBib29s
IHZlY3RvckVxdWFsc1N0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIDMyPiYgdmVjdG9yLCBjb25z
dCBTdHJpbmcmIHN0CiAgICAgcmV0dXJuICFtZW1jbXAoc3RyaW5nRGF0YSwgdmVjdG9yRGF0YSwg
dmVjdG9yLnNpemUoKSAqIHNpemVvZihVQ2hhcikpOwogfQogCi1pbmxpbmUgYm9vbCBpc0VuZFRh
Z0J1ZmZlcmluZ1N0YXRlKEhUTUxUb2tlbml6ZXI6OlN0YXRlIHN0YXRlKQoraW5saW5lIGJvb2wg
aXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHN0YXRlKQog
ewogICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJDREFUQUVu
ZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJDREFUQUVuZFRhZ05hbWVT
dGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRFbmRUYWdPcGVuU3RhdGU6Ci0g
ICAgY2FzZSBIVE1MVG9rZW5pemVyOjpSQVdURVhURW5kVGFnTmFtZVN0YXRlOgotICAgIGNhc2Ug
SFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUxU
b2tlbml6ZXI6OlNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGU6Ci0gICAgY2FzZSBIVE1MVG9rZW5p
emVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tl
bml6ZXI6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTFRv
a2VuaXplclN0YXRlOjpSQ0RBVEFFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5p
emVyU3RhdGU6OlJDREFUQUVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJT
dGF0ZTo6UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
U2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
U2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVy
U3RhdGU6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIsMTAgKzg0
LDE0IEBAIGlubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3RhdGUoSFRNTFRva2VuaXplcjo6
U3RhdGUgc3RhdGUpCiB9CiAKIH0KKyAgICAKKyNkZWZpbmUgSFRNTF9CRUdJTl9TVEFURShzdGF0
ZU5hbWUpIEJFR0lOX1NUQVRFKEhUTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQorI2RlZmlu
ZSBIVE1MX1JFQ09OU1VNRV9JTihzdGF0ZU5hbWUpIFJFQ09OU1VNRV9JTihIVE1MVG9rZW5pemVy
U3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRNTF9BRFZBTkNFX1RPKHN0YXRlTmFtZSkgQURW
QU5DRV9UTyhIVE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRNTF9TV0lU
Q0hfVE8oc3RhdGVOYW1lKSBTV0lUQ0hfVE8oSFRNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUp
CiAKIEhUTUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIoYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1
aXJrcykKLSAgICA6IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IodGhpcykKLSAgICAsIG1fdXNl
UHJlSFRNTDVQYXJzZXJRdWlya3ModXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCisgICAgOiBtX3Vz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQogewogICAgIHJl
c2V0KCk7CiB9CkBAIC0xMTYsNyArMTAyLDcgQEAgSFRNTFRva2VuaXplcjo6fkhUTUxUb2tlbml6
ZXIoKQogCiB2b2lkIEhUTUxUb2tlbml6ZXI6OnJlc2V0KCkKIHsKLSAgICBtX3N0YXRlID0gRGF0
YVN0YXRlOworICAgIG1fc3RhdGUgPSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZTsKICAg
ICBtX3Rva2VuID0gMDsKICAgICBtX2xpbmVOdW1iZXIgPSAwOwogICAgIG1fc2tpcExlYWRpbmdO
ZXdMaW5lRm9yTGlzdGluZyA9IGZhbHNlOwpAQCAtMTQzLDg4ICsxMjksNiBAQCBpbmxpbmUgYm9v
bCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgQ09NUElMRVIoTVNWQykKLS8vIFdlIG5lZWQgdG8g
ZGlzYWJsZSB0aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50IHRv
IGFzc2VydAotLy8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRoZSBz
dGF0ZSBtYWNoaW5lLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIpCi0jZW5kaWYKLQot
I2RlZmluZSBCRUdJTl9TVEFURShzdGF0ZU5hbWUpIGNhc2Ugc3RhdGVOYW1lOiBzdGF0ZU5hbWU6
Ci0jZGVmaW5lIEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKLQotLy8g
V2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJyZWNvbnN1bWUgdGhl
IGN1cnJlbnQgaW5wdXQKLS8vIGNoYXJhY3RlciBpbiB0aGUgPG11bWJsZT4gc3RhdGUuIgotI2Rl
ZmluZSBSRUNPTlNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0g
c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0vLyBXZSB1c2Ug
dGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgImNvbnN1bWUgdGhlIG5leHQgaW5w
dXQKLS8vIGNoYXJhY3RlciAuLi4gYW5kIHN3aXRjaCB0byB0aGUgPG11bWJsZT4gc3RhdGUuIgot
I2RlZmluZSBBRFZBTkNFX1RPKHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRl
ID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShzb3Vy
Y2UsIG1fbGluZU51bWJlcikpICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJl
ZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBj
YyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAg
ICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0v
LyBTb21ldGltZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVkIGxvZ2ljIGluIHRoZSBzcGVjIHRo
YXQgc2VwYXJhdGVzIHdoZW4KLS8vIHdlIGNvbnN1bWUgdGhlIG5leHQgaW5wdXQgY2hhcmFjdGVy
IGFuZCB3aGVuIHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIKLS8vIHN0YXRlLiBXZSBoYW5kbGUg
dGhvc2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2UgZGlyZWN0bHkgYW5kIHVzaW5nCi0v
LyB0aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNhdGVkIHN0YXRlLgotI2RlZmluZSBT
V0lUQ0hfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVO
YW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5w
ZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgXAotICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAg
ICAgICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQot
Ci0KLWlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKQot
ewotICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKQotICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsK
LX0KLQotLy8gV2UgdXNlIHRoaXMgZnVuY3Rpb24gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJF
bWl0IHRoZSBjdXJyZW50IDxtdW1ibGU+Ci0vLyB0b2tlbi4gU3dpdGNoIHRvIHRoZSA8bXVtYmxl
PiBzdGF0ZS4iICBXZSB1c2UgdGhlIHdvcmQgInJlc3VtZSIgaW5zdGVhZCBvZgotLy8gc3dpdGNo
IHRvIGluZGljYXRlIHRoYXQgdGhpcyBtYWNybyBhY3R1YWxseSByZXR1cm5zIGFuZCB0aGF0IHdl
J2xsIGVuZCB1cAotLy8gaW4gdGhlIHN0YXRlIHdoZW4gd2UgInJlc3VtZSIgKGkuZS4sIGFyZSBj
YWxsZWQgYWdhaW4pLgotYm9vbCBIVE1MVG9rZW5pemVyOjplbWl0QW5kUmVzdW1lSW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIFN0YXRlIHN0YXRlKQotewotICAgIG1fc3RhdGUgPSBzdGF0ZTsK
LSAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOwotICAgIHNhdmVFbmRUYWdOYW1lSWZO
ZWVkZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gSWRlbnRpY2FsIHRvIGVtaXRBbmRS
ZXN1bWVJbiwgZXhjZXB0IGRvZXMgbm90IGFkdmFuY2UuCi1ib29sIEhUTUxUb2tlbml6ZXI6OmVt
aXRBbmRSZWNvbnN1bWVJbihTZWdtZW50ZWRTdHJpbmcmLCBTdGF0ZSBzdGF0ZSkKLXsKLSAgICBt
X3N0YXRlID0gc3RhdGU7Ci0gICAgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi0vLyBVc2VkIHRvIGVtaXQgdGhlIEVuZE9mRmlsZSB0b2tlbi4KLS8vIENo
ZWNrIGlmIHdlIGhhdmUgYnVmZmVyZWQgY2hhcmFjdGVycyB0byBlbWl0IGZpcnN0IGJlZm9yZSBl
bWl0dGluZyB0aGUgRU9GLgotYm9vbCBIVE1MVG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlKQotewotICAgIGlmIChoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAg
IHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7Ci0gICAgbV90b2tlbi0+Y2xlYXIoKTsKLSAg
ICBtX3Rva2VuLT5tYWtlRW5kT2ZGaWxlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wg
SFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSkKIHsKICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKQEAgLTIzOCw3ICsxNDIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVyZWRF
bmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKICNkZWZpbmUgRkxVU0hfQU5EX0FEVkFO
Q0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgaWYgKGZsdXNoQnVmZmVyZWRFbmRUYWcoc291cmNlKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYg
KHNvdXJjZS5pc0VtcHR5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKQEAgLTI0OCw3ICsxNTIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVm
ZmVyZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgICAgIGdvdG8gc3RhdGVO
YW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKLWJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hFbWl0QW5k
UmVzdW1lSW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFN0YXRlIHN0YXRlKQorYm9vbCBIVE1M
VG9rZW5pemVyOjpmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSBzdGF0ZSkKIHsKICAgICBtX3N0YXRlID0gc3RhdGU7
CiAgICAgZmx1c2hCdWZmZXJlZEVuZFRhZyhzb3VyY2UpOwpAQCAtMjY3LDcgKzE3MSw3IEBAIGJv
b2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICAvLyBXZSBzdGFydGVkIGFuIGVuZCB0YWcgZHVyaW5nIG91
ciBsYXN0IGl0ZXJhdGlvbi4KICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJl
ZEVuZFRhZ05hbWUpOwogICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUpIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0g
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpIHsKICAgICAgICAgICAgIC8vIFdlJ3JlIGJh
Y2sgaW4gdGhlIGRhdGEgc3RhdGUsIHNvIHdlIG11c3QgYmUgZG9uZSB3aXRoIHRoZSB0YWcuCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjkxLDIwNSArMTk1LDIwNSBA
QCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
SFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAobV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5n
KSB7CiAgICAgICAgIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9IGZhbHNlOwogICAg
ICAgICBpZiAoY2MgPT0gJ1xuJykgewotICAgICAgICAgICAgaWYgKG1fc3RhdGUgPT0gRGF0YVN0
YXRlKQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKLSAgICAgICAgICAg
IGlmIChtX3N0YXRlID09IFJDREFUQVN0YXRlKQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
UkNEQVRBU3RhdGUpOworICAgICAgICAgICAgaWYgKG1fc3RhdGUgPT0gSFRNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpCisgICAgICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0
ZSk7CisgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFU
QVN0YXRlKQorICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CiAg
ICAgICAgICAgICAvLyBXaGVuIHBhcnNpbmcgdGV4dC9wbGFpbiBkb2N1bWVudHMsIHdlIHJ1biB0
aGUgdG9rZW5pemVyIGluIHRoZQogICAgICAgICAgICAgLy8gUExBSU5URVhUU3RhdGUgYW5kIGln
bm9yZSBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcuCi0gICAgICAgICAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIC8vIFNvdXJjZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jdG9rZW5pc2F0aW9uMAogICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIEJF
R0lOX1NUQVRFKERhdGFTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7
CiAgICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZUluRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFy
YWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8Jykg
ewogICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hh
cmFjdGVyKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3Rl
ciB0b2tlbnMgcXVldWVkIHVwIHRoYXQgd2UKICAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRp
bmcgbGF6aWx5IGhlcmUuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ09wZW5TdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUlu
RGF0YVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRh
dGFTdGF0ZSkgewogICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKICAgICAgICAg
ICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICBTV0lUQ0hf
VE8oRGF0YVN0YXRlKTsKKyAgICAgICAgSFRNTF9TV0lUQ0hfVE8oRGF0YVN0YXRlKTsKICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJDREFUQVN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShSQ0RBVEFTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyYnKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
UkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJD
aGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJD
REFUQVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJD
REFUQVN0YXRlKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQogICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIFNXSVRD
SF9UTyhSQ0RBVEFTdGF0ZSk7CisgICAgICAgIEhUTUxfU1dJVENIX1RPKFJDREFUQVN0YXRlKTsK
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRTdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkFXVEVYVFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9
PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhS
QVdURVhUU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlw
dERhdGFTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUExB
SU5URVhUU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKSB7CiAg
ICAgICAgIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KQogICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgQURWQU5DRV9UTyhQ
TEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIEhUTUxfQURWQU5DRV9UTyhQTEFJTlRFWFRTdGF0ZSk7
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShUYWdPcGVuU3RhdGUp
IHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJyEnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oTWFya3VwRGVjbGFyYXRpb25PcGVuU3Rh
dGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RP
KEVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRW5kVGFnT3Bl
blN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAg
ICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRh
Z05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAg
ICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGNvbnN1bWVzIHRoZSBjdXJyZW50IGNo
YXJhY3RlciBiZWZvcmUgc3dpdGNoaW5nCiAgICAgICAgICAgICAvLyB0byB0aGUgYm9ndXMgY29t
bWVudCBzdGF0ZSwgYnV0IGl0J3MgZWFzaWVyIHRvIGltcGxlbWVudAogICAgICAgICAgICAgLy8g
aWYgd2UgcmVjb25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9J
TihCb2d1c0NvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoRW5kVGFnT3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShFbmRUYWdP
cGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oVGFnTmFt
ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
Qm9ndXNDb21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQm9ndXND
b21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFRhZ05hbWVT
dGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlm
IChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkg
ewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFt
ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAg
ICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQ0RBVEFM
ZXNzVGhhblNpZ25TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5T
aWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICcvJykgewogICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFn
TmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdPcGVu
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUVuZFRhZ09wZW5TdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJDREFUQUVuZFRhZ09wZW5TdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FT
Q0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rl
cignLycpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnTmFtZVN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpIHsKICAgICAgICAg
aWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNj
KSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKQEAgLTQ5OSw1NSArNDAzLDU1IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9U
TyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPicpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcignLycpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1w
b3JhcnlCdWZmZXIpOwogICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7CiAgICAgICAgIGlm
IChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAg
ICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oUkFXVEVY
VFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkFX
VEVYVEVuZFRhZ09wZW5TdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewog
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2Vy
KGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAg
ICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhS
QVdURVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZl
ckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVND
SUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7
CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAgICAgICAg
ICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCkBAIC01NTcsNTkgKzQ2MSw1OSBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4n
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Jy8nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5
QnVmZmVyKTsKICAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKSB7CiAgICAgICAg
IGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7
CiAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwn
KTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignIScpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
U2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERh
dGFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihj
YykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVu
ZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcignLycpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRh
RW5kVGFnTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFn
TmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJs
ZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2Mp
KSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAg
ICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlw
dERhdGFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKQpAQCAtNjE5LDEzNiArNTIzLDEzNiBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnVmZmVy
Q2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKICAg
ICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydFN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0
YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3Rh
dGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFz
aFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERh
c2hEYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihT
Y3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0
YVN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlw
dERhdGFFc2NhcGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2Nh
cGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVy
Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRE
YXNoU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2Fw
ZWREYXNoU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFz
aFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFz
aERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZWREYXNoRGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3Rh
dGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBS
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERh
dGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0
YUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRh
RXNjYXBlZERhc2hEYXNoU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNp
Z25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRM
ZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUp
OwogICAgICAgICB9IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVz
Y2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUKG1f
YnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7
CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dl
cihjYykpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAg
YnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFy
KCk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2Fw
ZWRFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2Nh
cGVkRW5kVGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRk
VG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9J
TihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUp
IHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
KSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dl
cihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAg
ICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKQEAgLTc1OCwyOTkgKzY2MiwyOTkg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNF
X1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICc+JykgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKCcvJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3Rl
bXBvcmFyeUJ1ZmZlcik7CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigp
OwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHRE
YXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlw
dFRhZy5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNj
KTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0
YXJ0U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAg
ICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNj
YXBlU3RhcnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSkgewogICAgICAgICBp
ZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUp
OwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewogICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkRGFzaFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNj
YXBlZERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7Cisg
ICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUp
IHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNo
RGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZERhc2hEYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8Jykgewog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09
ICcvJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVFbmRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZUVuZFN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpIHx8IGNj
ID09ICcvJyB8fCBjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
CiAgICAgICAgICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgp
KSkKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwor
ICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJVXBw
ZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVz
cGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhT
ZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJr
cyAmJiBjYyA9PSAnPCcpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0
ZSgpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhB
dHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09O
U1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNj
ID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCiAgICAgICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmli
dXRlKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVOYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFt
ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShB
dHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEF0dHJpYnV0ZU5hbWVT
dGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAg
ICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJz
Q29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc9JykgewogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmli
dXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShz
b3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcp
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9m
Q2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29u
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwn
IHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVO
YW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFt
ZVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc9
JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCi0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAgbV90b2tlbi0+
YmVnaW5BdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShj
YykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNj
ID09ICc8JykKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmli
dXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZVZhbHVlU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVy
c0NvbnN1bWVkKCkgKyAxKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVE
b3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRl
VmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyYnKSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihBdHRyaWJ1
dGVWYWx1ZVVucXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQXR0
cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcn
KSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpICsgMSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRP
ZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJF
Q09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0
YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnPCcgfHwg
Y2MgPT0gJz0nIHx8IGNjID09ICdgJykKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZCgpKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmli
dXRlVmFsdWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVv
dGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5x
dW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICciJykgewogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291
cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
ID0gJyInOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJp
YnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJl
ZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291
cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgUkVDT05TVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91Ymxl
UXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVl
RG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKSB7CiAgICAg
ICAgIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVW
YWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIgPSAnXCcnOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVu
Y2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENo
YXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRl
VmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAg
UkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZh
bHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgewogICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAgICAgICAgbV90b2tl
bi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyID0gJz4nOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZl
cmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1
ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScg
fHwgY2MgPT0gJ2AnKQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluQXR0
cmlidXRlVmFsdWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJl
bmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CiAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFj
dGVycyA9IGZhbHNlOwogICAgICAgICBWZWN0b3I8VUNoYXIsIDE2PiBkZWNvZGVkRW50aXR5Owog
ICAgICAgICBib29sIHN1Y2Nlc3MgPSBjb25zdW1lSFRNTEVudGl0eShzb3VyY2UsIGRlY29kZWRF
bnRpdHksIG5vdEVub3VnaENoYXJhY3RlcnMsIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIp
OwpAQCAtMTA2OSw2OCArOTczLDY4IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAvLyBrZWVw
aW5nIHRyYWNrIG9mIHRoaXMgZXhwbGljdGx5LCB3ZSBvYnNlcnZlIHRoYXQgdGhlIHByZXZpb3Vz
CiAgICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIuCiAgICAgICAgIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09
ICciJykKLSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVv
dGVkU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
ID09ICdcJycpCi0gICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90
ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmds
ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciA9PSAnPicpCi0gICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90
ZWRTdGF0ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1
dGVWYWx1ZVF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckF0dHJpYnV0
ZVZhbHVlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
YykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xv
c2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBj
YyA9PSAnPCcpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09
IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZv
cmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKSB7CisgICAgSFRN
TF9CRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICc+JykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U2VsZkNsb3NpbmcoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRF
KEJvZ3VzQ29tbWVudFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShCb2d1c0NvbW1lbnRT
dGF0ZSkgewogICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgUkVDT05T
VU1FX0lOKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOworICAgICAgICBIVE1MX1JFQ09OU1VN
RV9JTihDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKLSAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoTWFy
a3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKE1hcmt1cERl
Y2xhcmF0aW9uT3BlblN0YXRlKSB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBkYXNoRGFzaFN0cmluZywgKCItLSIpKTsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGRvY3R5cGVTdHJpbmcsICgiZG9jdHlwZSIpKTsKICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGNkYXRhU3RyaW5nLCAoIltDREFUQVsiKSk7CkBAIC0xMTQwLDE5OSAr
MTA0NCwxOTkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFu
Y2VBbmRBU1NFUlQoJy0nKTsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VS
VCgnLScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAg
ICAgICAgICAgIFNXSVRDSF9UTyhDb21tZW50U3RhcnRTdGF0ZSk7CisgICAgICAgICAgICAgICAg
SFRNTF9TV0lUQ0hfVE8oQ29tbWVudFN0YXJ0U3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAg
ICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKICAgICAgICAgICAgIFNlZ21lbnRl
ZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmlu
Z0Nhc2UoZG9jdHlwZVN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRl
ZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNT
RVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICBTV0lU
Q0hfVE8oRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhET0NU
WVBFU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdbJyAmJiBz
aG91bGRBbGxvd0NEQVRBKCkpIHsKICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0Fo
ZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoY2RhdGFTdHJpbmcpOwogICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CiAgICAgICAg
ICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJbQ0RBVEFbIik7Ci0gICAg
ICAgICAgICAgICAgU1dJVENIX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICAgICAgICAgICAg
ICBIVE1MX1NXSVRDSF9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAg
IH0KICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21t
ZW50U3RhdGUpOworICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhcnRT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0U3RhdGUpIHsKICAgICAg
ICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXJ0RGFz
aFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhcnREYXNoU3Rh
dGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0
YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBI
VE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRF
KENvbW1lbnRTdGFydERhc2hTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29tbWVudFN0
YXJ0RGFzaFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29t
bWVudEVuZFN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhD
b21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENv
bW1lbnRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRlKSB7CiAgICAg
ICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNo
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmREYXNoU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmREYXNoU3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29u
c3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVu
dFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50RW5k
U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyEnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRCYW5nU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKENvbW1lbnRFbmRCYW5nU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICctJykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRF
bmRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb21tZW50RW5kQmFuZ1N0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50RW5kQmFuZ1N0YXRlKSB7CiAgICAgICAgIGlm
IChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScp
OwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVu
dEVuZERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
LScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRF
KERPQ1RZUEVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN0YXRlKSB7CiAg
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVD
T05TVU1FX0lOKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNP
TlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpIHsKICAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9y
ZURPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2UoY2MpKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5i
ZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKERPQ1RZUEVOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlm
IChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUo
dG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KERPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lO
X1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUp
OwogICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1YmxpY1N0cmluZywgKCJwdWJsaWMi
KSk7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5n
LCAoInN5c3RlbSIpKTsKQEAgLTEzNDAsMzAxICsxMjQ0LDMwMSBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQg
PSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAi
cHVibGljIik7Ci0gICAgICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhBZnRlckRPQ1RZUEVQdWJs
aWNLZXl3b3JkU3RhdGUpOworICAgICAgICAgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhBZnRl
ckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICdTJyB8fCBjYyA9PSAncycpIHsKICAgICAgICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAic3lzdGVtIik7Ci0gICAg
ICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUp
OworICAgICAgICAgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1L
ZXl3b3JkU3RhdGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNLZXl3
b3JkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdv
cmRTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJE
b3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1
YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1wnJykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tl
bi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1
c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBF
U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9T
VEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CiAgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZv
cmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRl
bnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhE
T0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09
ICciJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
UHVibGljSWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NU
WVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9
PSAnXCcnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUp
OworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1
YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NU
WVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0Fu
ZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJl
dHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0
ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRv
a2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0
ZW1JZGVudGlmaWVyc1N0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQ
RVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5p
emVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBF
UHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZp
ZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZv
cmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJj
ZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0
ZW1LZXl3b3JkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3Rl
bUtleXdvcmRTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
bV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7CisgICAgSFRN
TF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7CiAgICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAg
aWYgKGNjID09ICciJykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmll
clRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRp
ZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVt
SWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9
PSAnIicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVt
SWRlbnRpZmllclN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b1N5c3RlbUlkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAg
fQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJ1wnJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtz
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJv
cigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRl
bnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShCb2d1c0RPQ1RZUEVTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBF
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJv
Z3VzRE9DVFlQRVN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKENEQVRBU2VjdGlvblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDREFUQVNlY3Rp
b25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJ10nKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhDREFUQVNlY3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpOwogICAgICAg
ICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENEQVRB
U2VjdGlvblJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShD
REFUQVNlY3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0g
J10nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25Eb3VibGVSaWdodFNxdWFy
ZUJyYWNrZXRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9u
RG91YmxlUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcignXScpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKENEQVRB
U2VjdGlvblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKENEQVRBU2VjdGlv
blN0YXRlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEJFR0lOX1NUQVRFKENEQVRBU2VjdGlv
bkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShD
REFUQVNlY3Rpb25Eb3VibGVSaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSkgewogICAgICAgICBpZiAo
Y2MgPT0gJz4nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgYnVmZmVyQ2hhcmFjdGVyKCddJyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJ10n
KTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX1JFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKQEAgLTE2NDgsMTggKzE1NTIsMTggQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiB2b2lkIEhUTUxUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSwgRnJhbWUqIGZyYW1lKQogewogICAgIGlmICh0YWdOYW1lID09IHRleHRhcmVh
VGFnIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcpCi0gICAgICAgIHNldFN0YXRlKFJDREFUQVN0YXRl
KTsKKyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CiAg
ICAgZWxzZSBpZiAodGFnTmFtZSA9PSBwbGFpbnRleHRUYWcpCi0gICAgICAgIHNldFN0YXRlKFBM
QUlOVEVYVFN0YXRlKTsKKyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJ
TlRFWFRTdGF0ZSk7CiAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpCi0gICAgICAg
IHNldFN0YXRlKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIHNldFN0YXRlKEhUTUxUb2tlbml6
ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsKICAgICBlbHNlIGlmICh0YWdOYW1lID09IHN0eWxl
VGFnCiAgICAgICAgIHx8IHRhZ05hbWUgPT0gaWZyYW1lVGFnCiAgICAgICAgIHx8IHRhZ05hbWUg
PT0geG1wVGFnCiAgICAgICAgIHx8ICh0YWdOYW1lID09IG5vZW1iZWRUYWcgJiYgSFRNTFRyZWVC
dWlsZGVyOjpwbHVnaW5zRW5hYmxlZChmcmFtZSkpCiAgICAgICAgIHx8IHRhZ05hbWUgPT0gbm9m
cmFtZXNUYWcKICAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9zY3JpcHRUYWcgJiYgSFRNTFRyZWVC
dWlsZGVyOjpzY3JpcHRFbmFibGVkKGZyYW1lKSkpCi0gICAgICAgIHNldFN0YXRlKFJBV1RFWFRT
dGF0ZSk7CisgICAgICAgIHNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRl
KTsKIH0KIAogaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29u
c3QgU3RyaW5nJiBleHBlY3RlZFN0cmluZykKQEAgLTE2NzgsMjEgKzE1ODIsOSBAQCBpbmxpbmUg
Ym9vbCBIVE1MVG9rZW5pemVyOjppc0FwcHJvcHJpYXRlRW5kVGFnKCkKICAgICByZXR1cm4gbV9i
dWZmZXJlZEVuZFRhZ05hbWUgPT0gbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWU7CiB9CiAKLWlubGlu
ZSB2b2lkIEhUTUxUb2tlbml6ZXI6OmJ1ZmZlckNoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCi17
Ci0gICAgQVNTRVJUKGNoYXJhY3RlciAhPSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKTsKLSAgICBtX3Rva2VuLT5lbnN1cmVJc0NoYXJhY3RlclRva2VuKCk7Ci0gICAg
bV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLX0KLQogaW5saW5lIHZvaWQg
SFRNTFRva2VuaXplcjo6cGFyc2VFcnJvcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KQotewotICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcjsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuaXplci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
CmluZGV4IGZhNDVjYjI0MzExMTU4ZTlkZmZmOTRlYjdiNTQyYmE4MGRiMTNmY2UuLjMwNjE0MGZl
MmFhMDM0M2U1NGY1NTFkMWZkYjM0NmM0ZjVlYzEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW5pemVyLmgKQEAgLTI3LDIwICsyNywxNSBAQAogI2lmbmRlZiBIVE1M
VG9rZW5pemVyX2gKICNkZWZpbmUgSFRNTFRva2VuaXplcl9oCiAKKyNpbmNsdWRlICJIVE1MVG9r
ZW4uaCIKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJCYXNlLmgiCiAjaW5jbHVkZSAiU2VnbWVu
dGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTFRva2VuOwogCi1jbGFzcyBIVE1MVG9rZW5pemVy
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MVG9rZW5pemVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitjbGFzcyBIVE1MVG9rZW5pemVyU3RhdGUgewogcHVibGljOgogICAgIGVu
dW0gU3RhdGUgewogICAgICAgICBEYXRhU3RhdGUsCkBAIC0xMTksNyArMTE0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUsCiAgICAgICAg
IENEQVRBU2VjdGlvbkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlLAogICAgIH07Cit9Owog
CitjbGFzcyBIVE1MVG9rZW5pemVyIDogcHVibGljIE1hcmt1cFRva2VuaXplckJhc2U8SFRNTFRv
a2VuLCBIVE1MVG9rZW5pemVyU3RhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1M
VG9rZW5pemVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPiBjcmVhdGUoYm9vbCB1c2VQcmVIVE1MNVBh
cnNlclF1aXJrcykgeyByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxUb2tlbml6ZXIodXNlUHJlSFRN
TDVQYXJzZXJRdWlya3MpKTsgfQogICAgIH5IVE1MVG9rZW5pemVyKCk7CiAKQEAgLTEzMCwxMiAr
MTMwLDYgQEAgcHVibGljOgogICAgIC8vIHRoZXkgY2FsbCByZXNldCgpIGZpcnN0KS4KICAgICBi
b29sIG5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmLCBIVE1MVG9rZW4mKTsKIAotICAgIGludCBs
aW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Ci0gICAgaW50IGNvbHVt
bk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gTWF0Y2hlcyBMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuaCBiZWhhdmlvci4KLQotICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQotICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0
YXRlOyB9Ci0KICAgICAvLyBVcGRhdGVzIHRoZSB0b2tlbml6ZXIncyBzdGF0ZSBhY2NvcmRpbmcg
dG8gdGhlIGdpdmVuIHRhZyBuYW1lLiBUaGlzIGlzCiAgICAgLy8gYW4gYXBwcm94aW1hdGlvbiBv
ZiBob3cgdGhlIHRyZWUgYnVpbGRlciB3b3VsZCB1cGRhdGUgdGhlIHRva2VuaXplcidzCiAgICAg
Ly8gc3RhdGUuIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgYXBwcm94aW1hdGluZyBIVE1MIHRv
a2VuaXphdGlvbi4gVG8KQEAgLTE2MiwxMTIgKzE1NiwzNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
aG91bGRBbGxvd0NEQVRBKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRBbGxvd0NEQVRBOyB9CiAg
ICAgdm9pZCBzZXRTaG91bGRBbGxvd0NEQVRBKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRBbGxvd0NE
QVRBID0gdmFsdWU7IH0KIAotICAgIGJvb2wgc2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29u
c3QKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAhbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudAotICAg
ICAgICAgICAgJiYgKG1fc3RhdGUgPT0gRGF0YVN0YXRlCi0gICAgICAgICAgICAgICAgfHwgbV9z
dGF0ZSA9PSBSQ0RBVEFTdGF0ZQotICAgICAgICAgICAgICAgIHx8IG1fc3RhdGUgPT0gUkFXVEVY
VFN0YXRlCi0gICAgICAgICAgICAgICAgfHwgbV9zdGF0ZSA9PSBQTEFJTlRFWFRTdGF0ZSk7Cisg
ICAgICAgICAgICAmJiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZQor
ICAgICAgICAgICAgICAgIHx8IG1fc3RhdGUgPT0gSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFT
dGF0ZQorICAgICAgICAgICAgICAgIHx8IG1fc3RhdGUgPT0gSFRNTFRva2VuaXplclN0YXRlOjpS
QVdURVhUU3RhdGUKKyAgICAgICAgICAgICAgICB8fCBtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJT
dGF0ZTo6UExBSU5URVhUU3RhdGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5n
LXRoZS1pbnB1dC1zdHJlYW0KLSAgICBjbGFzcyBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKTsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKEhUTUxUb2tlbml6ZXIq
IHRva2VuaXplcikKLSAgICAgICAgICAgIDogbV90b2tlbml6ZXIodG9rZW5pemVyKQotICAgICAg
ICAgICAgLCBtX25leHRJbnB1dENoYXJhY3RlcignXDAnKQotICAgICAgICAgICAgLCBtX3NraXBO
ZXh0TmV3TGluZShmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgVUNoYXIg
bmV4dElucHV0Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7
IH0KLQotICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgd2Ugc3VjY2VlZGVkIGluIHBlZWtpbmcg
YXQgdGhlIG5leHQgY2hhcmFjdGVyLgotICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGZh
aWwgdG8gcGVlayBpcyBpZiB0aGVyZSBhcmUgbm8gbW9yZQotICAgICAgICAvLyBjaGFyYWN0ZXJz
IGluIHxzb3VyY2V8IChhZnRlciBjb2xsYXBzaW5nIFxyXG4sIGV0YykuCi0gICAgICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBwZWVrKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1i
ZXIpCi0gICAgICAgIHsKLSAgICAgICAgUGVla0FnYWluOgotICAgICAgICAgICAgbV9uZXh0SW5w
dXRDaGFyYWN0ZXIgPSAqc291cmNlOwotCi0gICAgICAgICAgICAvLyBFdmVyeSBicmFuY2ggaW4g
dGhpcyBmdW5jdGlvbiBpcyBleHBlbnNpdmUsIHNvIHdlIGhhdmUgYQotICAgICAgICAgICAgLy8g
ZmFzdC1yZWplY3QgYnJhbmNoIGZvciBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBzcGVj
aWFsCi0gICAgICAgICAgICAvLyBoYW5kbGluZy4gUGxlYXNlIHJ1biB0aGUgcGFyc2VyIGJlbmNo
bWFyayB3aGVuZXZlciB5b3UgdG91Y2gKLSAgICAgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24uIEl0
J3MgdmVyeSBob3QuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgc3BlY2lhbENoYXJh
Y3Rlck1hc2sgPSAnXG4nIHwgJ1xyJyB8ICdcMCc7Ci0gICAgICAgICAgICBpZiAobV9uZXh0SW5w
dXRDaGFyYWN0ZXIgJiB+c3BlY2lhbENoYXJhY3Rlck1hc2spIHsKLSAgICAgICAgICAgICAgICBt
X3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0g
J1xuJyAmJiBtX3NraXBOZXh0TmV3TGluZSkgewotICAgICAgICAgICAgICAgIG1fc2tpcE5leHRO
ZXdMaW5lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0TmV3bGlu
ZShsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIG1fbmV4dElu
cHV0Q2hhcmFjdGVyID0gKnNvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICht
X25leHRJbnB1dENoYXJhY3RlciA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgbV9uZXh0SW5w
dXRDaGFyYWN0ZXIgPSAnXG4nOwotICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5l
d0xpbmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMgaW5kaWNh
dGVzIHRoYXQgdGhlIHN1cnJvZ2F0ZSBwYWlyIHJhbmdlIGFzIHdlbGwgYXMKLSAgICAgICAgICAg
ICAgICAvLyBhIG51bWJlciBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBl
cnJvcnMgYW5kIHNob3VsZCBiZSByZXBsYWNlZAotICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFdlIHN1c3BlY3QgdGhpcyBpcyBhIHByb2JsZW0gd2l0aCB0
aGUgc3BlYyBhcyBkb2luZwotICAgICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVyaW5nIGJyZWFr
cyBzdXJyb2dhdGUgcGFpciBoYW5kbGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBtYXRjaCBNaW5l
ZmllbGQuCi0gICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcg
JiYgIXNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fdG9rZW5pemVyLT5zaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBQZWVrQWdhaW47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAweEZGRkQ7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8c291
cmNlfCBhZnRlciBhZHZhbmNpbmcuCi0gICAgICAgIGJvb2wgYWR2YW5jZShTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSwgaW50JiBsaW5lTnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZShsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBwZWVr
KHNvdXJjZSwgbGluZU51bWJlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgZW5kT2ZGaWxlTWFya2VyOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBzaG91
bGRUcmVhdE51bGxBc0VuZE9mRmlsZU1hcmtlcihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pc0Nsb3NlZCgpICYmIHNv
dXJjZS5sZW5ndGgoKSA9PSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgSFRNTFRva2VuaXplciog
bV90b2tlbml6ZXI7Ci0KLSAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1jaGFyYWN0ZXIKLSAgICAgICAgVUNoYXIg
bV9uZXh0SW5wdXRDaGFyYWN0ZXI7Ci0gICAgICAgIGJvb2wgbV9za2lwTmV4dE5ld0xpbmU7Ci0g
ICAgfTsKLQogICAgIEhUTUxUb2tlbml6ZXIoYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyk7
CiAKICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmluZyYpOwogCiAg
ICAgaW5saW5lIHZvaWQgcGFyc2VFcnJvcigpOwotICAgIGlubGluZSB2b2lkIGJ1ZmZlckNoYXJh
Y3RlcihVQ2hhcik7Ci0gICAgaW5saW5lIHZvaWQgYnVmZmVyQ29kZVBvaW50KHVuc2lnbmVkKTsK
KyAgICAKKyAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVzdW1lSW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICBz
YXZlRW5kVGFnTmFtZUlmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiBNYXJrdXBUb2tlbml6ZXJC
YXNlPEhUTUxUb2tlbiwgSFRNTFRva2VuaXplclN0YXRlPjo6ZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgc3RhdGUpOworICAgIH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVjb25zdW1l
SW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgc3Rh
dGUpCisgICAgeworICAgICAgICBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCk7CisgICAgICAgIHJl
dHVybiBNYXJrdXBUb2tlbml6ZXJCYXNlPEhUTUxUb2tlbiwgSFRNTFRva2VuaXplclN0YXRlPjo6
ZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgc3RhdGUpOworICAgIH0KIAotICAgIGlubGluZSBi
b29sIGVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmLCBTdGF0ZSk7Ci0gICAgaW5saW5l
IGJvb2wgZW1pdEFuZFJlY29uc3VtZUluKFNlZ21lbnRlZFN0cmluZyYsIFN0YXRlKTsKLSAgICBp
bmxpbmUgYm9vbCBlbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0cmluZyYpOwotICAgIGlubGluZSBi
b29sIGZsdXNoRW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYsIFN0YXRlKTsKKyAgICBp
bmxpbmUgYm9vbCBmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OlN0YXRlKTsKIAogICAgIC8vIFJldHVybiB3aGV0aGVyIHdlIG5lZWQgdG8g
ZW1pdCBhIGNoYXJhY3RlciB0b2tlbiBiZWZvcmUgZGVhbGluZyB3aXRoCiAgICAgLy8gdGhlIGJ1
ZmZlcmVkIGVuZCB0YWcuCkBAIC0yNzgsMjIgKzE5NSwxNyBAQCBwcml2YXRlOgogICAgIC8vIGtu
b3cgd2hldGhlciB0aGV5IHJlcHJlc2VudCBlbmQgdGFncyBvciBSQ0RBVEEsIGV0Yy4gVGhlc2UK
ICAgICAvLyBmdW5jdGlvbnMgaGVscCBtYW5hZ2UgdGhlc2Ugc3RhdGUuCiAgICAgaW5saW5lIHZv
aWQgYWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjYyk7Ci0gICAgaW5saW5lIHZvaWQgc2F2ZUVu
ZFRhZ05hbWVJZk5lZWRlZCgpOwotICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWco
KTsKIAotICAgIGlubGluZSBib29sIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0KLSAg
ICBTdGF0ZSBtX3N0YXRlOworICAgIGlubGluZSB2b2lkIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUg
PSBtX3Rva2VuLT5uYW1lKCk7CisgICAgfQorICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVF
bmRUYWcoKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1l
OwogCi0gICAgLy8gbV90b2tlbiBpcyBvd25lZCBieSB0aGUgY2FsbGVyLiBJZiBuZXh0VG9rZW4g
aXMgbm90IG9uIHRoZSBzdGFjaywKLSAgICAvLyB0aGlzIG1lbWJlciBtaWdodCBiZSBwb2ludGlu
ZyB0byB1bmFsbG9jYXRlZCBtZW1vcnkuCi0gICAgSFRNTFRva2VuKiBtX3Rva2VuOwotICAgIGlu
dCBtX2xpbmVOdW1iZXI7Ci0KLSAgICBib29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGlu
ZzsKLSAgICBib29sIG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQ7CiAgICAgYm9vbCBt
X3Nob3VsZEFsbG93Q0RBVEE7CiAKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrLyN0ZW1wb3JhcnktYnVmZmVyCkBAIC0zMDMsMTIgKzIxNSw2
IEBAIHByaXZhdGU6CiAgICAgLy8gdG9rZW4gKGUuZy4sIHdoZW4gbGV4aW5nIHNjcmlwdCkuIFdl
IGJ1ZmZlciB0aGUgbmFtZSBvZiB0aGUgZW5kIHRhZwogICAgIC8vIHRva2VuIGhlcmUgc28gd2Ug
cmVtZW1iZXIgaXQgbmV4dCB0aW1lIHdlIHJlLWVudGVyIHRoZSB0b2tlbml6ZXIuCiAgICAgVmVj
dG9yPFVDaGFyLCAzMj4gbV9idWZmZXJlZEVuZFRhZ05hbWU7Ci0KLSAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhZGRpdGlvbmFsLWFsbG93
ZWQtY2hhcmFjdGVyCi0gICAgVUNoYXIgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcjsKLQot
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQotICAgIElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I7CiAgICAgCiAgICAgYm9vbCBtX3VzZVByZUhU
TUw1UGFyc2VyUXVpcmtzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGI3ZWJjZTc5NTQyZTVjZTQ1NWFlNzJkNTE5NmU0NDQ0YjBk
NjFhNzIuLjAzYTI3MzJiNGZmN2MzZmM0YjkzOGQ2Mzk1Y2UxZjc0YmYzN2ZiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtODMzLDcg
KzgzMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHko
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHBsYWludGV4
dFRhZykgewogICAgICAgICBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAg
ICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7Ci0gICAgICAgIG1fcGFyc2Vy
LT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOwor
ICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0
ZTo6UExBSU5URVhUU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0b2tl
bi5uYW1lKCkgPT0gYnV0dG9uVGFnKSB7CkBAIC05MzgsNyArOTM4LDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGV4dGFyZWFUYWcpIHsKICAgICAgICAgbV90cmVl
Lmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigp
LT5zZXRTa2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nKHRydWUpOwotICAgICAgICBtX3BhcnNl
ci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKKyAg
ICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6
OlJDREFUQVN0YXRlKTsKICAgICAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2Vy
dGlvbk1vZGU7CiAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwogICAgICAgICBzZXRJbnNl
cnRpb25Nb2RlKFRleHRNb2RlKTsKQEAgLTIyMzAsOCArMjIzMCw4IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAg
ICAvLyBzZWxmLWNsb3Npbmcgc2NyaXB0IHRhZyB3YXMgZW5jb3VudGVyZWQgYW5kIHByZS1IVE1M
NSBwYXJzZXIKICAgICAgICAgICAgIC8vIHF1aXJrcyBhcmUgZW5hYmxlZC4gV2UgbXVzdCBzZXQg
dGhlIHRva2VuaXplcidzIHN0YXRlIHRvCiAgICAgICAgICAgICAvLyBEYXRhU3RhdGUgZXhwbGlj
aXRseSBpZiB0aGUgdG9rZW5pemVyIGRpZG4ndCBoYXZlIGEgY2hhbmNlIHRvLgotICAgICAgICAg
ICAgQVNTRVJUKG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVy
OjpEYXRhU3RhdGUgfHwgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyk7Ci0gICAgICAgICAgICBt
X3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7
CisgICAgICAgICAgICBBU1NFUlQobV9wYXJzZXItPnRva2VuaXplcigpLT5zdGF0ZSgpID09IEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlIHx8IG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mp
OworICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsKQEAgLTI3ODUsNyArMjc4NSw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7
Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RB
VEFTdGF0ZSk7CisgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyU3RhdGU6OlJDREFUQVN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1f
aW5zZXJ0aW9uTW9kZTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKFRleHRNb2RlKTsKIH0KQEAgLTI3
OTQsNyArMjc5NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1Rl
eHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRN
TEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRN
TFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKKyAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlKTsKICAgICBtX29yaWdpbmFs
SW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKFRl
eHRNb2RlKTsKIH0KQEAgLTI4MDMsNyArMjgwMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NF
UlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVl
Lmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKKyAgICBtX3BhcnNlci0+
dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRl
KTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKIAogICAg
IFRleHRQb3NpdGlvbjAgcG9zaXRpb24gPSBtX3BhcnNlci0+dGV4dFBvc2l0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCA2M2I1MTYwMjFhNDI0OWYzNWNiNmRhN2ZlNGFhZjJjMzJmMzhhY2U2Li5lZDU1NDNlYzUzNjUz
ZTFjOTc4OGI2ZmVhZDUwZTBmZDJiMmMzMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgVGV4dERv
Y3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IEhUTUxEb2N1bWVudFBhcnNlcihkb2N1bWVudCwgZmFsc2UpCiAgICAgLCBtX2hhdmVJ
bnNlcnRlZEZha2VQcmVFbGVtZW50KGZhbHNlKQogewotICAgIHRva2VuaXplcigpLT5zZXRTdGF0
ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgdG9rZW5pemVyKCktPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogfQogCiBUZXh0RG9jdW1l
bnRQYXJzZXI6On5UZXh0RG9jdW1lbnRQYXJzZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCmluZGV4IGQ3ZTZlM2RmYzZkNTM3
NjA0M2NhMWFjYWI3MmY5YzVmYTAyZjFiMzkuLjM0M2IyM2MyOTA4MmQzNDc0MjYwOTU4ODU2Y2M5
N2NhYjg4ZGVmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRW
aWV3U291cmNlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0
Vmlld1NvdXJjZVBhcnNlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogVGV4dFZpZXdTb3VyY2VQYXJzZXI6OlRleHRWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291
cmNlRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTFZpZXdTb3VyY2VQYXJzZXIoZG9jdW1l
bnQpCiB7Ci0gICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVY
VFN0YXRlKTsKKyAgICB0b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQ
TEFJTlRFWFRTdGF0ZSk7CiB9CiAKIFRleHRWaWV3U291cmNlUGFyc2VyOjp+VGV4dFZpZXdTb3Vy
Y2VQYXJzZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbkJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgK
aW5kZXggYmQ4M2IyM2JkZTkzZGZlNTlkZDljYmFiYWQ4NDdjMzMwMzhlNzEzZC4uNTRiZjI2ZWI3
ZmJhZGMzMTllMDljNzM2YmEwYTQ1MmU4Njk3YmJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIE1hcmt1cFRv
a2VuQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya3VwVG9rZW5CYXNlKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1l
IFR5cGVTZXQ6OlR5cGUgVHlwZTsKKyAgICB0eXBlZGVmIFR5cGVTZXQgVHlwZTsKIAogICAgIGNs
YXNzIFJhbmdlIHsKICAgICBwdWJsaWM6CkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAg
ICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2
YWx1ZS5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisgICAgdHlwZW5hbWUgVHlwZTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAKICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKICAgICB7CkBAIC0zNjYs
NyArMzY2LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHdhbnQgdG8gZW5kIHVwIHdpdGggYSBjbGVh
bmVyIGludGVyZmFjZSBiZXR3ZWVuIHRoZSB0d28gY2xhc3Nlcy4KICAgICBmcmllbmQgY2xhc3Mg
QXRvbWljSFRNTFRva2VuOwogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgdHlwZW5hbWUgVHlwZTo6
VHlwZSBtX3R5cGU7CiAgICAgUmFuZ2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJv
LgogICAgIGludCBtX2Jhc2VPZmZzZXQ7CiAgICAgRGF0YVZlY3RvciBtX2RhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkYmIxZDY0MzY2NTMyOTAxMzA3Y2U5ZjQwOThhNzA3OGRjZTdiZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaApAQCAt
MCwwICsxLDIxMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
IGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1hcmt1cFRva2VuaXplckJhc2VfaAorI2RlZmluZSBN
YXJrdXBUb2tlbml6ZXJCYXNlX2gKKworI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIE5ldmVyIHVzZSB0aGlzIHR5cGUgZm9yIGEg
dmFyaWFibGUsIGFzIGl0IGNvbnRhaW5zIHNldmVyYWwgbm9uLXZpcnR1YWwgZnVuY3Rpb25zLgor
dGVtcGxhdGU8dHlwZW5hbWUgVG9rZW4sIHR5cGVuYW1lIFN0YXRlPgorY2xhc3MgTWFya3VwVG9r
ZW5pemVyQmFzZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya3VwVG9rZW5pemVyQmFz
ZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
TWFya3VwVG9rZW5pemVyQmFzZSgpIHsgfQorCisgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICBpbnQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gMTsgfSAvLyBNYXRjaGVzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIGJlaGF2aW9y
LgorCisgICAgdHlwZW5hbWUgU3RhdGU6OlN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUodHlwZW5hbWUgU3RhdGU6OlN0YXRlIHN0YXRlKSB7
IG1fc3RhdGUgPSBzdGF0ZTsgfQorCisgICAgYm9vbCBmb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQ7IH0K
KyAgICB2b2lkIHNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KGJvb2wgdmFsdWUpIHsg
bV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudCA9IHZhbHVlOyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6
CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgY2xhc3MgSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcik7CisgICAgcHVibGljOgorICAgICAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cihNYXJrdXBUb2tlbml6ZXJCYXNlPFRva2VuLCBTdGF0ZT4qIHRva2VuaXplcikKKyAgICAgICAg
ICAgIDogbV90b2tlbml6ZXIodG9rZW5pemVyKQorICAgICAgICAgICAgLCBtX25leHRJbnB1dENo
YXJhY3RlcignXDAnKQorICAgICAgICAgICAgLCBtX3NraXBOZXh0TmV3TGluZShmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVUNoYXIgbmV4dElucHV0Q2hhcmFjdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7IH0KKworICAgICAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgd2Ugc3VjY2VlZGVkIGluIHBlZWtpbmcgYXQgdGhlIG5leHQgY2hhcmFjdGVy
LgorICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGZhaWwgdG8gcGVlayBpcyBpZiB0aGVy
ZSBhcmUgbm8gbW9yZQorICAgICAgICAvLyBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IChhZnRlciBj
b2xsYXBzaW5nIFxyXG4sIGV0YykuCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwZWVrKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1iZXIpCisgICAgICAgIHsKKyAgICAg
ICAgUGVla0FnYWluOgorICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNl
OworCisgICAgICAgICAgICAvLyBFdmVyeSBicmFuY2ggaW4gdGhpcyBmdW5jdGlvbiBpcyBleHBl
bnNpdmUsIHNvIHdlIGhhdmUgYQorICAgICAgICAgICAgLy8gZmFzdC1yZWplY3QgYnJhbmNoIGZv
ciBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBzcGVjaWFsCisgICAgICAgICAgICAvLyBo
YW5kbGluZy4gUGxlYXNlIHJ1biB0aGUgcGFyc2VyIGJlbmNobWFyayB3aGVuZXZlciB5b3UgdG91
Y2gKKyAgICAgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24uIEl0J3MgdmVyeSBob3QuCisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgc3BlY2lhbENoYXJhY3Rlck1hc2sgPSAnXG4nIHwgJ1xy
JyB8ICdcMCc7CisgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgJiB+c3BlY2lh
bENoYXJhY3Rlck1hc2spIHsKKyAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xuJyAmJiBtX3NraXBOZXh0TmV3
TGluZSkgeworICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0TmV3bGluZShsaW5lTnVtYmVyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJj
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9
PSAnXHInKSB7CisgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAnXG4nOwor
ICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgdGhlIHN1cnJvZ2F0
ZSBwYWlyIHJhbmdlIGFzIHdlbGwgYXMKKyAgICAgICAgICAgICAgICAvLyBhIG51bWJlciBvZiBz
cGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBlcnJvcnMgYW5kIHNob3VsZCBiZSBy
ZXBsYWNlZAorICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIu
IFdlIHN1c3BlY3QgdGhpcyBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3BlYyBhcyBkb2luZworICAg
ICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVyaW5nIGJyZWFrcyBzdXJyb2dhdGUgcGFpciBoYW5k
bGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBtYXRjaCBNaW5lZmllbGQuCisgICAgICAgICAgICAg
ICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcgJiYgIXNob3VsZFRyZWF0TnVsbEFz
RW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBw
b3J0aW9uIG9mIGNvZGUgc2hvdWxkIGJlIGhpdCBpbmZyZXF1ZW50bHksIHNvIGEgdmlydHVhbCBj
YWxsIHNob3VsZG4ndCBoaXQgcGVyZm9ybWFuY2UgbXVjaAorICAgICAgICAgICAgICAgICAgICBp
ZiAobV90b2tlbml6ZXItPnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIFBlZWtB
Z2FpbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX25leHRJ
bnB1dENoYXJhY3RlciA9IDB4RkZGRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IGFmdGVyIGFk
dmFuY2luZy4KKyAgICAgICAgYm9vbCBhZHZhbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBp
bnQmIGxpbmVOdW1iZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKGxp
bmVOdW1iZXIpOworICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNlLCBsaW5l
TnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBlbmRPZkZp
bGVNYXJrZXIgPSAwOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBzaG91bGRUcmVhdE51
bGxBc0VuZE9mRmlsZU1hcmtlcihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pc0Nsb3NlZCgpICYmIHNvdXJjZS5sZW5n
dGgoKSA9PSAxOworICAgICAgICB9CisKKyAgICAgICAgTWFya3VwVG9rZW5pemVyQmFzZTxUb2tl
biwgU3RhdGU+KiBtX3Rva2VuaXplcjsKKworICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNuZXh0LWlucHV0LWNoYXJhY3RlcgorICAg
ICAgICBVQ2hhciBtX25leHRJbnB1dENoYXJhY3RlcjsKKyAgICAgICAgYm9vbCBtX3NraXBOZXh0
TmV3TGluZTsKKyAgICB9OworCisgICAgTWFya3VwVG9rZW5pemVyQmFzZSgpIDogbV9pbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcih0aGlzKSB7IHJlc2V0KCk7IH0KKworICAgIGlubGluZSB2b2lkIGJ1
ZmZlckNoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyICE9IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpOworICAg
ICAgICBtX3Rva2VuLT5lbnN1cmVJc0NoYXJhY3RlclRva2VuKCk7CisgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQg
YnVmZmVyQ29kZVBvaW50KHVuc2lnbmVkKTsKKworICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBnZXQg
aGlkZGVuIGluIHN1YmNsYXNzZXMKKyAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVzdW1lSW4oU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIHR5cGVuYW1lIFN0YXRlOjpTdGF0ZSBzdGF0ZSkKKyAgICB7
CisgICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5l
TnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIFRoaXMg
bWV0aG9kIGNhbiBnZXQgaGlkZGVuIGluIHN1YmNsYXNzZXMKKyAgICBpbmxpbmUgYm9vbCBlbWl0
QW5kUmVjb25zdW1lSW4oU2VnbWVudGVkU3RyaW5nJiwgdHlwZW5hbWUgU3RhdGU6OlN0YXRlIHN0
YXRlKQorICAgIHsKKyAgICAgICAgbV9zdGF0ZSA9IHN0YXRlOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBlbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpE
YXRhU3RhdGU7CisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7CisgICAgICAg
IG1fdG9rZW4tPmNsZWFyKCk7CisgICAgICAgIG1fdG9rZW4tPm1ha2VFbmRPZkZpbGUoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCByZXNldCgpCisgICAgeworICAg
ICAgICBtX3N0YXRlID0gU3RhdGU6OkRhdGFTdGF0ZTsKKyAgICAgICAgbV90b2tlbiA9IDA7Cisg
ICAgICAgIG1fbGluZU51bWJlciA9IDA7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgaGF2ZUJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4tPnR5
cGUoKSA9PSBUb2tlbjo6VHlwZTo6Q2hhcmFjdGVyOworICAgIH0KKyAgICAKKyAgICB0eXBlbmFt
ZSBTdGF0ZTo6U3RhdGUgbV9zdGF0ZTsKKworICAgIC8vIG1fdG9rZW4gaXMgb3duZWQgYnkgdGhl
IGNhbGxlci4gSWYgbmV4dFRva2VuIGlzIG5vdCBvbiB0aGUgc3RhY2ssCisgICAgLy8gdGhpcyBt
ZW1iZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVtb3J5LgorICAgIFRva2Vu
KiBtX3Rva2VuOworICAgIGludCBtX2xpbmVOdW1iZXI7CisKKyAgICBib29sIG1fc2tpcExlYWRp
bmdOZXdMaW5lRm9yTGlzdGluZzsKKyAgICBib29sIG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFj
ZW1lbnQ7CisKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNhZGRpdGlvbmFsLWFsbG93ZWQtY2hhcmFjdGVyCisgICAgVUNoYXIgbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlcjsKKworICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVh
bQorICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I7
Cit9OworCit9CisKKyNlbmRpZiAvLyBNYXJrdXBUb2tlbml6ZXJCYXNlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5o
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2Rz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWUzMTMxNTc3ZmI4N2NmM2Y3ZjUwNmIyMTVhOGM0MTljMTAzNTA2ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5p
emVySW5saW5lTWV0aG9kcy5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXJrdXBUb2tl
bml6ZXJJbmxpbmVNZXRob2RzX2gKKyNkZWZpbmUgTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9k
c19oCisKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitpbmxpbmUgYm9vbCBpc1Rva2VuaXplcldoaXRlc3BhY2UoVUNoYXIgY2MpCit7CisgICAg
cmV0dXJuIGNjID09ICcgJyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MDknIHx8IGNjID09
ICdceDBDJzsKK30KKworaW5saW5lIHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5n
Q2FzZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0
ZXJzKQoreworICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFyYWN0ZXJzKQorICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgqZXhwZWN0ZWRDaGFyYWN0ZXJzKyspOworfQor
CitpbmxpbmUgdm9pZCBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBjb25zdCBjaGFyKiBleHBlY3RlZENoYXJhY3RlcnMpCit7CisgICAgd2hpbGUgKCpleHBl
Y3RlZENoYXJhY3RlcnMpCisgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCpleHBlY3Rl
ZENoYXJhY3RlcnMrKyk7Cit9CisKKyNpZiBDT01QSUxFUihNU1ZDKQorLy8gV2UgbmVlZCB0byBk
aXNhYmxlIHRoZSAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBiZWNhdXNlIHdlIHdhbnQgdG8g
YXNzZXJ0CisvLyB0aGF0IHNvbWUgY29kZSBwb2ludHMgYXJlbid0IHJlYWNoZWQgaW4gdGhlIHN0
YXRlIG1hY2hpbmUuCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMikKKyNlbmRpZgorCisj
ZGVmaW5lIEJFR0lOX1NUQVRFKHByZWZpeCwgc3RhdGVOYW1lKSBjYXNlIHByZWZpeDo6c3RhdGVO
YW1lOiBzdGF0ZU5hbWU6CisjZGVmaW5lIEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyBicmVhazsKKworLy8gV2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlz
ICJyZWNvbnN1bWUgdGhlIGN1cnJlbnQgaW5wdXQKKy8vIGNoYXJhY3RlciBpbiB0aGUgPG11bWJs
ZT4gc3RhdGUuIgorI2RlZmluZSBSRUNPTlNVTUVfSU4ocHJlZml4LCBzdGF0ZU5hbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBtX3N0YXRlID0gcHJlZml4OjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisvLyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgImNvbnN1
bWUgdGhlIG5leHQgaW5wdXQKKy8vIGNoYXJhY3RlciAuLi4gYW5kIHN3aXRjaCB0byB0aGUgPG11
bWJsZT4gc3RhdGUuIgorI2RlZmluZSBBRFZBTkNFX1RPKHByZWZpeCwgc3RhdGVOYW1lKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBtX3N0YXRlID0gcHJlZml4OjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3IuYWR2YW5jZShzb3VyY2UsIG1fbGluZU51bWJlcikpICAgICAgXAorICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hh
cmFjdGVyKCk7ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisvLyBTb21ldGltZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVkIGxvZ2lj
IGluIHRoZSBzcGVjIHRoYXQgc2VwYXJhdGVzIHdoZW4KKy8vIHdlIGNvbnN1bWUgdGhlIG5leHQg
aW5wdXQgY2hhcmFjdGVyIGFuZCB3aGVuIHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIKKy8vIHN0
YXRlLiBXZSBoYW5kbGUgdGhvc2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2UgZGlyZWN0
bHkgYW5kIHVzaW5nCisvLyB0aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNhdGVkIHN0
YXRlLgorI2RlZmluZSBTV0lUQ0hfVE8ocHJlZml4LCBzdGF0ZU5hbWUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBt
X3N0YXRlID0gcHJlZml4OjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgXAorICAgICAgICAgICAg
cmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0
Q2hhcmFjdGVyKCk7ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCit9CisKKyNlbmRpZiAvLyBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRo
b2RzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101799</attachid>
            <date>2011-07-22 18:12:04 -0700</date>
            <delta_ts>2011-07-22 18:54:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65000-20110722181203.patch</filename>
            <type>text/plain</type>
            <size>122662</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMjc1Y2E3OWM5ZDc0NmRl
NDZhYjkxYjA0MzAwMGNiM2MyMTYzZGFhLi43OGVkNGZkZDA1OTRhNGI2NjM3ZmVlMGM1OTkwNjc4
NTBhMTBjNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDctMjIgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBIVE1MIHRva2Vu
aXplciBjb2RlIGluIHByZXBhcmF0aW9uIGZvciBhIG5ldyBYTUwgdG9rZW5pemVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXpl
clN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6aXNFbmRUYWdCdWZmZXJpbmdT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpIVE1MVG9rZW5pemVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ojo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OmZsdXNoRW1pdEFuZFJlc3VtZUluKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjp1
cGRhdGVTdGF0ZUZvcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6ZW1pdEFuZFJlc3VtZUluKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmVtaXRBbmRSZWNvbnN1bWVJbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFn
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0
VGFnKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjpUZXh0RG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRWaWV3U291cmNlUGFyc2VyOjpUZXh0Vmlld1NvdXJjZVBhcnNlcik6Cisg
ICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hcmt1cFRva2VuQmFzZTo6dHlwZSk6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tl
bml6ZXJCYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFz
ZTo6fk1hcmt1cFRva2VuaXplckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5p
emVyQmFzZTo6bGluZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjpjb2x1bW5OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFz
ZTo6c3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6c2V0U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6Zm9yY2VOdWxsQ2hh
cmFjdGVyUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFz
ZTo6c2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWFya3VwVG9rZW5pemVyQmFzZTo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OklucHV0U3RyZWFt
UHJlcHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6Oklu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpuZXh0SW5wdXRDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OnBlZWsp
OgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6SW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFz
ZTo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OnNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFy
a2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6Ok1hcmt1cFRva2Vu
aXplckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6YnVmZmVy
Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OmVtaXRB
bmRSZXN1bWVJbik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjplbWl0
QW5kUmVjb25zdW1lSW4pOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6
ZW1pdEVuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpy
ZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbik6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJ
bmxpbmVNZXRob2RzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmlu
Z0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZVN0cmluZ0FuZEFTU0VSVCk6CisKIDIw
MTEtMDctMjAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIEF0dGVt
cHQgdG8gZml4IHRoZSBHVEsgYnVpbGQgYWZ0ZXIgY2hhbmdlc2V0IDkxMzk2IDxodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MTM5Nj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IGUyZWMzZWMyMTA2NzhkNzNiOTk1NTFiM2U4YjY1NjdiMTNjYzU3NTUuLmFlNzlkNWQy
ZmU0NzRhNzQ2N2EwYjU0ZWJmMTE2MGM4MTcyNGMxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMzgwNyw2ICszODA3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3Vw
VG9rZW5CYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVy
QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGlu
ZU1ldGhvZHMuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBh
cnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJz
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGI5MWYzZjQ5ZGMzZWU1NjFlNmYyNzkzZWIxOWUzYzc4MjNm
ZDI1NDYuLjllZWY5ZTk4NGQxYjMyMzFhMTgyZTg2MTk3ZDI3OTliMjlkOTJmOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTYxMjIsNiArNjEyMiw4IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywKKyAg
ICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCcsCisgICAgICAgICAg
ICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgnLAogICAgICAgICAg
ICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICd4bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDdlMGJiMjBkMTA1
MGZiNGRhYjlhZjEyNTdlYWY4YTNhYjRhY2Q1Y2UuLmQ3MDNjZmYzZjlhZDhhNjY4YmUwMWE0YTZl
ZTM4MDM4OWQyNzM5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNDk4LDYgKzI0OTgsOCBAQCBIRUFE
RVJTICs9IFwKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIFwKICAgICB3b3JrZXJz
L1dvcmtlclRocmVhZC5oIFwKICAgICB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIFwKKyAg
ICB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCBcCisgICAgeG1sL3BhcnNlci9NYXJr
dXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggXAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuaCBcCiAgICAgeG1sL0RPTVBhcnNlci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jl
c29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA1NGMzYmZlZTU2ODJlZmI2ZjI4NmQ2ZWI2MzQ1YjQ5NWM5ODcyYzc5Li40OTA4NGNh
ODYzZTYyOTRiZGM2YjAxZDBiMmMzZjhiOWJlMDFkMjYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI2MjEsNiArNDI2MjEsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxw
YXJzZXJcTWFya3VwVG9rZW5pemVyQmFzZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbml6ZXJJbmxp
bmVNZXRob2RzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTERvY3VtZW50UGFyc2VyLmgiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGRhYTFhYTg4MTI1N2E0NzliNDA3YjNjMWQ1Nzk4NGE1ZGEyZjUxNC4uMjEy
MDc0ZmUzNmU2MTEwMmIzZjk5YWU3MzVmOWU3MzFmNTg1ZDhmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTYsNiArNTYsOCBA
QAogCQkwMEI5MzE4OTEzQkE4REJDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkz
MTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovOyB9
OwogCQkwMEI5MzE4QjEzQkE4REM5MDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4
NTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi87IH07CiAJ
CTAwQjkzMThDMTNCQThEQ0MwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5MzE4NjEzQkE4
NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovOyB9OworCQkwMEM2MEUz
RjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDNjBFM0UxM0Q3NkQ3
RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCAqLzsgfTsKKwkJMDBD
NjBFNDIxM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplckJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQzYwRTQxMTNENzk3QUUwMDky
QTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJCYXNlLmggKi87IH07CiAJCTAwQ0E5M0IyMTNDNjY5MTYw
MEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjExM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmggKi87IH07CiAJCTAwQ0E5M0I1MTNDNjY5N0MwMEY3RkU5NSAvKiBO
ZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMENBOTNCNDEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQ
YXJzZXIuY3BwICovOyB9OwogCQkwMEQwNDY0QTEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwRDA0NjQ4MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXIuY3BwICovOyB9OwpAQCAtNjQ2Miw2ICs2NDY0LDggQEAKIAkJMDBCOTMxODMx
M0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4NTEzQkE4NjdGMDAzNUE5NDgg
LyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMEM2MEUzRTEzRDc2RDdF
MDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAwQzYwRTQxMTNENzk3QUUwMDkyQTI3NSAvKiBNYXJr
dXBUb2tlbml6ZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1
cFRva2VuaXplckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBDQTkzQjEx
M0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ld1hNTERvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdYTUxE
b2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwRDA0NjQ4
MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzkxLDYgKzEyNzk1LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTAwMDIyRTY4MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggKi8sCiAJCQkJMDBBNjI5QzAxM0Qw
QkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oICovLAorCQkJCTAwQzYwRTQxMTNENzk3
QUUwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJCYXNlLmggKi8sCisJCQkJMDBDNjBFM0UxM0Q3
NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCAqLywKIAkJCQkw
MENBOTNCNDEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovLAog
CQkJCTAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICov
LAogCQkJCTAwRDA0NjQ4MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXIuY3BwICovLApAQCAtMjIyMjYsNiArMjIyMzIsOCBAQAogCQkJCTkzMzA5REY4MDk5RTY0
OTIwMDU2RTU4MSAvKiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0
MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBB
NjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1l
dGhvZHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBN
YXJrdXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGNTEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMx
MkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA4NTBlYmNiZGYwZjNlMTNiYWQyNmI3YjU4OTRm
YmI5MGVkZjBjZjQ5Li4yOWM2YTNjYjM3OWU1NDEwMjA5ZTkyNDBiNDE3NWZlOTFkNzNhNzExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKQEAgLTQ5LDI3ICs0OSwyNyBAQCBuYW1lc3BhY2UgewogCiAvLyBUaGlzIGlzIGEgZGlyZWN0
IHRyYW5zY3JpcHRpb24gb2Ygc3RlcCA0IGZyb206CiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21l
bnQtY2FzZQotSFRNTFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxl
bWVudChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCitIVE1MVG9r
ZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogewogICAgIGlmICghY29udGV4
dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGU7CisgICAg
ICAgIHJldHVybiBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZTsKIAogICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGNvbnRleHRUYWcgPSBjb250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKTsKIAog
ICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXModGl0bGVUYWcpIHx8IGNvbnRleHRUYWcubWF0Y2hl
cyh0ZXh0YXJlYVRhZykpCi0gICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGU7CiAgICAg
aWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzdHlsZVRhZykKICAgICAgICAgfHwgY29udGV4dFRhZy5t
YXRjaGVzKHhtcFRhZykKICAgICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKGlmcmFtZVRhZykK
ICAgICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub2VtYmVkVGFnKSAmJiBIVE1MVHJlZUJ1
aWxkZXI6OnBsdWdpbnNFbmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgp
KSkKICAgICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub3NjcmlwdFRhZykgJiYgSFRNTFRy
ZWVCdWlsZGVyOjpzY3JpcHRFbmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFt
ZSgpKSkKICAgICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKG5vZnJhbWVzVGFnKSkKLSAgICAg
ICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSA6IEhU
TUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3Jz
ID8gSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyU3RhdGU6
OlBMQUlOVEVYVFN0YXRlOwogICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMoc2NyaXB0VGFnKSkK
LSAgICAgICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFT
dGF0ZSA6IEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgICAgICByZXR1cm4gcmVw
b3J0RXJyb3JzID8gSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUgOiBIVE1MVG9r
ZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlOwogICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMo
cGxhaW50ZXh0VGFnKSkKLSAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0
YXRlOwotICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGU7CisgICAgICAgIHJldHVy
biBIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlOworICAgIHJldHVybiBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKQEAgLTI4OCw3ICsy
ODgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91
c01vZGUgbW9kZSkKICAgICAgICAgbV9wYXJzZXJTY2hlZHVsZXItPnNjaGVkdWxlRm9yUmVzdW1l
KCk7CiAKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7Ci0gICAgICAgIEFTU0VSVCht
X3Rva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAg
ICBBU1NFUlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKICAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXIgPSBhZG9wdFB0cihuZXcgSFRNTFByZWxvYWRTY2FubmVyKGRvY3VtZW50
KCkpKTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQu
Y3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5j
cHAKaW5kZXggNmQ1N2VlYWUxZDg5MGRkZDMxZjNmYzM3M2E0ZjUwODc5MTI2Y2I3MC4uZTlmZWRl
Y2Y4ZTZjZDYwNjA3ODc2NWMyMjhiNDhkODRmYmYyMWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNDYsOCArNDcsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNvbnN0IFVDaGFyIEhU
TUxUb2tlbml6ZXI6OklucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIgPSAw
OwotCiBuYW1lc3BhY2UgewogCiBpbmxpbmUgVUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCkBA
IC01NywyMyArNTYsNiBAQCBpbmxpbmUgVUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCiAgICAg
cmV0dXJuIGNjICsgbG93ZXJDYXNlT2Zmc2V0OwogfQogCi1pbmxpbmUgYm9vbCBpc1Rva2VuaXpl
cldoaXRlc3BhY2UoVUNoYXIgY2MpCi17Ci0gICAgcmV0dXJuIGNjID09ICcgJyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBDJzsKLX0KLQotaW5saW5lIHZvaWQg
YWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQotewotICAgIHdoaWxlICgqZXhwZWN0
ZWRDaGFyYWN0ZXJzKQotICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2Fz
ZSgqZXhwZWN0ZWRDaGFyYWN0ZXJzKyspOwotfQotCi1pbmxpbmUgdm9pZCBhZHZhbmNlU3RyaW5n
QW5kQVNTRVJUKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBjb25zdCBjaGFyKiBleHBlY3RlZENo
YXJhY3RlcnMpCi17Ci0gICAgd2hpbGUgKCpleHBlY3RlZENoYXJhY3RlcnMpCi0gICAgICAgIHNv
dXJjZS5hZHZhbmNlQW5kQVNTRVJUKCpleHBlY3RlZENoYXJhY3RlcnMrKyk7Ci19Ci0KIGlubGlu
ZSBib29sIHZlY3RvckVxdWFsc1N0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIDMyPiYgdmVjdG9y
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAodmVjdG9yLnNpemUoKSAhPSBzdHJp
bmcubGVuZ3RoKCkpCkBAIC04NCwxNyArNjYsMTcgQEAgaW5saW5lIGJvb2wgdmVjdG9yRXF1YWxz
U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgMzI+JiB2ZWN0b3IsIGNvbnN0IFN0cmluZyYgc3QK
ICAgICByZXR1cm4gIW1lbWNtcChzdHJpbmdEYXRhLCB2ZWN0b3JEYXRhLCB2ZWN0b3Iuc2l6ZSgp
ICogc2l6ZW9mKFVDaGFyKSk7CiB9CiAKLWlubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3Rh
dGUoSFRNTFRva2VuaXplcjo6U3RhdGUgc3RhdGUpCitpbmxpbmUgYm9vbCBpc0VuZFRhZ0J1ZmZl
cmluZ1N0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNo
IChzdGF0ZSkgewotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6UkNEQVRBRW5kVGFnT3BlblN0YXRl
OgotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6UkNEQVRBRW5kVGFnTmFtZVN0YXRlOgotICAgIGNh
c2UgSFRNTFRva2VuaXplcjo6UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUxU
b2tlbml6ZXI6OlJBV1RFWFRFbmRUYWdOYW1lU3RhdGU6Ci0gICAgY2FzZSBIVE1MVG9rZW5pemVy
OjpTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2Ny
aXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlNjcmlwdERh
dGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0
RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6
OlJDREFUQUVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNE
QVRBRW5kVGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhU
RW5kVGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhURW5k
VGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhRW5k
VGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhRW5k
VGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhRXNj
YXBlZEVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0
RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiwxMCArODQsMTQgQEAgaW5saW5l
IGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShIVE1MVG9rZW5pemVyOjpTdGF0ZSBzdGF0ZSkK
IH0KIAogfQorICAgIAorI2RlZmluZSBIVE1MX0JFR0lOX1NUQVRFKHN0YXRlTmFtZSkgQkVHSU5f
U1RBVEUoSFRNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCisjZGVmaW5lIEhUTUxfUkVDT05T
VU1FX0lOKHN0YXRlTmFtZSkgUkVDT05TVU1FX0lOKEhUTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVO
YW1lKQorI2RlZmluZSBIVE1MX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSBBRFZBTkNFX1RPKEhUTUxU
b2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQorI2RlZmluZSBIVE1MX1NXSVRDSF9UTyhzdGF0ZU5h
bWUpIFNXSVRDSF9UTyhIVE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKIAogSFRNTFRva2Vu
aXplcjo6SFRNTFRva2VuaXplcihib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQotICAgIDog
bV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvcih0aGlzKQotICAgICwgbV91c2VQcmVIVE1MNVBhcnNl
clF1aXJrcyh1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKKyAgICA6IG1fdXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3ModXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAg
LTExNCw5ICsxMDAsMjAgQEAgSFRNTFRva2VuaXplcjo6fkhUTUxUb2tlbml6ZXIoKQogewogfQog
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBNYXJrdXBUb2tlbml6ZXJCYXNlPEhUTUxUb2tlbiwg
SFRNTFRva2VuaXplclN0YXRlPjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIW1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQKKyAgICAmJiAobV9z
dGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZQorICAgICAgICB8fCBtX3N0YXRl
ID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUKKyAgICAgICAgfHwgbV9zdGF0ZSA9
PSBIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZQorICAgICAgICB8fCBtX3N0YXRlID09
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOworfQorCisKIHZvaWQgSFRNTFRv
a2VuaXplcjo6cmVzZXQoKQogewotICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgbV9zdGF0
ZSA9IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogICAgIG1fdG9rZW4gPSAwOwogICAg
IG1fbGluZU51bWJlciA9IDA7CiAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0g
ZmFsc2U7CkBAIC0xNDMsODggKzE0MCw2IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnBy
b2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLSNpZiBDT01QSUxFUihNU1ZDKQotLy8gV2UgbmVlZCB0byBkaXNhYmxlIHRoZSAidW5yZWFj
aGFibGUgY29kZSIgd2FybmluZyBiZWNhdXNlIHdlIHdhbnQgdG8gYXNzZXJ0Ci0vLyB0aGF0IHNv
bWUgY29kZSBwb2ludHMgYXJlbid0IHJlYWNoZWQgaW4gdGhlIHN0YXRlIG1hY2hpbmUuCi0jcHJh
Z21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMikKLSNlbmRpZgotCi0jZGVmaW5lIEJFR0lOX1NUQVRF
KHN0YXRlTmFtZSkgY2FzZSBzdGF0ZU5hbWU6IHN0YXRlTmFtZToKLSNkZWZpbmUgRU5EX1NUQVRF
KCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOwotCi0vLyBXZSB1c2UgdGhpcyBtYWNybyB3
aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgInJlY29uc3VtZSB0aGUgY3VycmVudCBpbnB1dAotLy8g
Y2hhcmFjdGVyIGluIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCi0jZGVmaW5lIFJFQ09OU1VNRV9JTihz
dGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGdvdG8gc3Rh
dGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLS8vIFdlIHVzZSB0aGlzIG1hY3JvIHdoZW4gdGhl
IEhUTUw1IHNwZWMgc2F5cyAiY29uc3VtZSB0aGUgbmV4dCBpbnB1dAotLy8gY2hhcmFjdGVyIC4u
LiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCi0jZGVmaW5lIEFEVkFOQ0VfVE8o
c3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICgh
bV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkg
ICAgICBcCi0gICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0gbV9pbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAgICAgICBcCi0gICAgICAg
IGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLS8vIFNvbWV0aW1lcyB0aGVyZSdz
IG1vcmUgY29tcGxpY2F0ZWQgbG9naWMgaW4gdGhlIHNwZWMgdGhhdCBzZXBhcmF0ZXMgd2hlbgot
Ly8gd2UgY29uc3VtZSB0aGUgbmV4dCBpbnB1dCBjaGFyYWN0ZXIgYW5kIHdoZW4gd2Ugc3dpdGNo
IHRvIGEgcGFydGljdWxhcgotLy8gc3RhdGUuIFdlIGhhbmRsZSB0aG9zZSBjYXNlcyBieSBhZHZh
bmNpbmcgdGhlIHNvdXJjZSBkaXJlY3RseSBhbmQgdXNpbmcKLS8vIHRoaXMgbWFjcm8gdG8gc3dp
dGNoIHRvIHRoZSBpbmRpY2F0ZWQgc3RhdGUuCi0jZGVmaW5lIFNXSVRDSF9UTyhzdGF0ZU5hbWUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzb3VyY2UuaXNF
bXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBtX2xpbmVO
dW1iZXIpKSBcCi0gICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0gbV9pbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLQotaW5saW5lIHZvaWQgSFRN
TFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpCi17Ci0gICAgQVNTRVJUKG1fdG9r
ZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgaWYgKG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCi0gICAgICAgIG1fYXBw
cm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwotfQotCi0vLyBXZSB1c2UgdGhp
cyBmdW5jdGlvbiB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgIkVtaXQgdGhlIGN1cnJlbnQgPG11
bWJsZT4KLS8vIHRva2VuLiBTd2l0Y2ggdG8gdGhlIDxtdW1ibGU+IHN0YXRlLiIgIFdlIHVzZSB0
aGUgd29yZCAicmVzdW1lIiBpbnN0ZWFkIG9mCi0vLyBzd2l0Y2ggdG8gaW5kaWNhdGUgdGhhdCB0
aGlzIG1hY3JvIGFjdHVhbGx5IHJldHVybnMgYW5kIHRoYXQgd2UnbGwgZW5kIHVwCi0vLyBpbiB0
aGUgc3RhdGUgd2hlbiB3ZSAicmVzdW1lIiAoaS5lLiwgYXJlIGNhbGxlZCBhZ2FpbikuCi1ib29s
IEhUTUxUb2tlbml6ZXI6OmVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
U3RhdGUgc3RhdGUpCi17Ci0gICAgbV9zdGF0ZSA9IHN0YXRlOwotICAgIHNvdXJjZS5hZHZhbmNl
KG1fbGluZU51bWJlcik7Ci0gICAgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi0vLyBJZGVudGljYWwgdG8gZW1pdEFuZFJlc3VtZUluLCBleGNlcHQgZG9l
cyBub3QgYWR2YW5jZS4KLWJvb2wgSFRNTFRva2VuaXplcjo6ZW1pdEFuZFJlY29uc3VtZUluKFNl
Z21lbnRlZFN0cmluZyYsIFN0YXRlIHN0YXRlKQotewotICAgIG1fc3RhdGUgPSBzdGF0ZTsKLSAg
ICBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFVz
ZWQgdG8gZW1pdCB0aGUgRW5kT2ZGaWxlIHRva2VuLgotLy8gQ2hlY2sgaWYgd2UgaGF2ZSBidWZm
ZXJlZCBjaGFyYWN0ZXJzIHRvIGVtaXQgZmlyc3QgYmVmb3JlIGVtaXR0aW5nIHRoZSBFT0YuCi1i
b29sIEhUTUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Up
Ci17Ci0gICAgaWYgKGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgc291cmNlLmFkdmFuY2UobV9s
aW5lTnVtYmVyKTsKLSAgICBtX3Rva2VuLT5jbGVhcigpOwotICAgIG1fdG9rZW4tPm1ha2VFbmRP
ZkZpbGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVz
aEJ1ZmZlcmVkRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewogICAgIEFTU0VSVCht
X3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwpAQCAtMjM4LDcgKzE1Myw3
IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSkKIAogI2RlZmluZSBGTFVTSF9BTkRfQURWQU5DRV9UTyhzdGF0ZU5hbWUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gSFRNTFRva2VuaXplclN0YXRl
OjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoZmx1
c2hCdWZmZXJlZEVuZFRhZyhzb3VyY2UpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjQ4LDcg
KzE2Myw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxz
ZSkKIAotYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgU3RhdGUgc3RhdGUpCitib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoRW1p
dEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OlN0YXRlIHN0YXRlKQogewogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBmbHVzaEJ1ZmZlcmVk
RW5kVGFnKHNvdXJjZSk7CkBAIC0yNjcsNyArMTgyLDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgIC8vIFdlIHN0YXJ0ZWQgYW4gZW5kIHRhZyBkdXJpbmcgb3VyIGxhc3QgaXRlcmF0aW9uLgog
ICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CiAgICAg
ICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgIGlmIChtX3N0YXRlID09
IERhdGFTdGF0ZSkgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSkgewogICAgICAgICAgICAgLy8gV2UncmUgYmFjayBpbiB0aGUgZGF0YSBzdGF0
ZSwgc28gd2UgbXVzdCBiZSBkb25lIHdpdGggdGhlIHRhZy4KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CkBAIC0yOTEsMjA1ICsyMDYsMjA1IEBAIGJvb2wgSFRNTFRva2VuaXpl
cjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQog
ICAgIGlmIChtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcpIHsKICAgICAgICAgbV9za2lw
TGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChjYyA9PSAnXG4n
KSB7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUpCi0gICAgICAgICAgICAg
ICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwotICAgICAgICAgICAgaWYgKG1fc3RhdGUgPT0gUkNE
QVRBU3RhdGUpCi0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CisgICAg
ICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSkKKyAg
ICAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIGlm
IChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpCisgICAgICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKICAgICAgICAgICAgIC8vIFdoZW4g
cGFyc2luZyB0ZXh0L3BsYWluIGRvY3VtZW50cywgd2UgcnVuIHRoZSB0b2tlbml6ZXIgaW4gdGhl
CiAgICAgICAgICAgICAvLyBQTEFJTlRFWFRTdGF0ZSBhbmQgaWdub3JlIG1fc2tpcExlYWRpbmdO
ZXdMaW5lRm9yTGlzdGluZy4KLSAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFBMQUlOVEVY
VFN0YXRlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0
ZTo6UExBSU5URVhUU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU291cmNlOiBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0b2tlbmlz
YXRpb24wCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgQkVHSU5fU1RBVEUoRGF0YVN0YXRl
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09
ICcmJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluRGF0
YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBpZiAo
bV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBxdWV1ZWQgdXAg
dGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXppbHkgaGVyZS4KICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdP
cGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oRGF0YVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKSB7CiAgICAgICAg
IGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQogICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIFNXSVRDSF9UTyhEYXRhU3RhdGUpOworICAg
ICAgICBIVE1MX1NXSVRDSF9UTyhEYXRhU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoUkNEQVRBU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJD
REFUQVN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAgICBBRFZBTkNF
X1RPKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2ln
blN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFMZXNzVGhhblNpZ25T
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpIHsKICAgICAg
ICAgaWYgKCFwcm9jZXNzRW50aXR5KHNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgU1dJVENIX1RPKFJDREFUQVN0YXRlKTsK
KyAgICAgICAgSFRNTF9TV0lUQ0hfVE8oUkNEQVRBU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9T
VEFURShSQVdURVhUU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhU
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRTdGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRlKSB7CiAgICAg
ICAgIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFMZXNz
VGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUxl
c3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShQTEFJTlRFWFRTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoUExBSU5URVhUU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKKyAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5f
U1RBVEUoVGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnIScpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRW5kVGFnT3BlblN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUpOwogICAgICAgICBl
bHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0
YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5i
ZWdpblN0YXJ0VGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc/JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAg
ICAgLy8gVGhlIHNwZWMgY29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGJlZm9yZSBzd2l0
Y2hpbmcKICAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBidXQgaXQn
cyBlYXNpZXIgdG8gaW1wbGVtZW50CiAgICAgICAgICAgICAvLyBpZiB3ZSByZWNvbnN1bWUgdGhl
IGN1cnJlbnQgY2hhcmFjdGVyLgotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVu
dFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShFbmRUYWdPcGVu
U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkgewogICAgICAg
ICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRU
YWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9
IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2lu
RW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
YnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFRhZ05hbWVT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoVGFnTmFtZVN0YXRlKSB7CiAgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZv
cmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9y
ZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKG1fdXNl
UHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3Rh
dGUpOwogICAgICAgICB9IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAg
ICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigp
OwogICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFJDREFU
QVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQ0RB
VEFFbmRUYWdPcGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNE
QVRBRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2Mp
KSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAg
ICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFU
QUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBRW5k
VGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVf
SU4oUkNEQVRBU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAg
ICBCRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNj
KSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlM
b3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAg
ICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhS
Q0RBVEFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKQpAQCAtNDk5LDU1ICs0MTQsNTUgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRU
YWdTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAg
ICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7CiAgICAg
ICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFJDREFU
QVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShS
QVdURVhUTGVzc1RoYW5TaWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICcvJykgewogICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVCht
X2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhS
QVdURVhURW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZl
ckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwogICAgICAgICB9
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQVdURVhURW5kVGFn
T3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQVdURVhURW5kVGFnT3BlblN0YXRl
KSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFt
ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJs
ZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oUkFXVEVYVFN0
YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RB
VEUoUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkFXVEVY
VEVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRv
UG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkFX
VEVYVEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNj
KSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhU
RW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChpc1Rv
a2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlh
dGVFbmRUYWcoKSkKQEAgLTU1Nyw1OSArNDcyLDU5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAg
ICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oUkFXVEVYVFN0
YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShT
Y3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICcvJykgewog
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VS
VChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
IScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKCchJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2Nh
cGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNj
YXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAg
fQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVu
ZFRhZ09wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ09w
ZW5TdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVF
bmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkg
ewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAg
IGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZl
ckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpIHsKICAgICAg
ICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNl
KGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCkBA
IC02MTksMTM2ICs1MzQsMTM2IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgICAg
ICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmx1c2hFbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAg
ICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAgICAgbV9idWZmZXJl
ZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRh
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2Ny
aXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERh
dGFFc2NhcGVTdGFydFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSkgewogICAgICAgICBpZiAo
Y2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSkgewogICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpIHsKICAgICAgICAg
aWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0
ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNo
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFz
aERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0gaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0
YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5
QnVmZmVyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUu
aXNFbXB0eSgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRU
YWdPcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2Nh
cGVkRW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2Mp
KSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZl
ckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwog
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAg
ICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2Mp
OwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUp
IHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2Vy
KGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAg
ICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJD
aGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVk
U3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpIHsKICAgICAgICAgaWYgKGlz
QVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChj
Yyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2li
bGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVu
ZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKQpAQCAtNzU4LDI5OSArNjczLDI5OSBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnVmZmVy
Q2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKICAg
ICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09O
U1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0
U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFy
dFN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpIHx8IGNjID09
ICcvJyB8fCBjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAg
ICAgICAgICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkK
LSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUp
OworICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZFN0YXRlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJVXBwZXIo
Y2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90
ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFF
c2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVz
Y2FwZWRTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShT
Y3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAg
ICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExl
c3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpIHsKKyAg
ICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKSB7CiAg
ICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWREYXNoRGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAg
ICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwog
ICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBidWZmZXJD
aGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNj
YXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNp
Z25TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRM
ZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAg
ICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xl
YXIoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBl
RW5kU3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpIHsKICAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+
JykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIGlmICh0
ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7
CisgICAgICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
cHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlM
b3dlcihjYykpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShCZWZvcmVBdHRyaWJ1
dGVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZU5hbWVT
dGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlm
IChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkg
ewogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1
bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93
ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFy
a2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdc
JycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZU5hbWVTdGF0ZSkg
eworICAgIEhUTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7CiAgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRB
dHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUo
c291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz0nKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3Jl
QXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3Jl
QXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJh
Y3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmICht
X3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykgewogICAgICAgICAgICAgbV90
b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1M
VG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSVVw
cGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQogICAg
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0
ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyQXR0cmli
dXRlTmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICBl
bHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3Rh
cnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQotICAgICAgICAgICAgQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFT
dGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRv
a2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1
UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YWRk
TmV3QXR0cmlidXRlKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUo
c291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwnKQogICAgICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0
ZSgpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVm
b3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0
cmlidXRlVmFsdWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5B
dHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSArIDEpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVVucXVvdGVk
U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1
bWVkKCkgKyAxKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVR
dW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVT
aW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0g
J2AnKQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkp
OwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRl
VmFsdWVEb3VibGVRdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRl
VmFsdWVEb3VibGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyInKSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0
ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFs
dWVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1
dGVWYWx1ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnJicpIHsKICAg
ICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnIic7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVW
YWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0
ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEF0
dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEF0
dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICdcJycp
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRy
aWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRl
ckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcm
JykgewogICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICdcJyc7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5B
dHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVy
T2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNj
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90
ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1
ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnJicpIHsKICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnPic7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFs
dWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNl
SW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVW
YWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBS
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERh
dGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8
IGNjID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCiAgICAg
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVl
VW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFs
dWVVbnF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVl
U3RhdGUpIHsKICAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CiAgICAg
ICAgIFZlY3RvcjxVQ2hhciwgMTY+IGRlY29kZWRFbnRpdHk7CiAgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IGNvbnN1bWVIVE1MRW50aXR5KHNvdXJjZSwgZGVjb2RlZEVudGl0eSwgbm90RW5vdWdoQ2hh
cmFjdGVycywgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlcik7CkBAIC0xMDY5LDY4ICs5ODQs
NjggQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBl
eHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0aGUgcHJldmlvdXMKICAgICAgICAgLy8gc3RhdGUg
Y2FuIGJlIGRldGVybWluZWQgYnkgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlci4KICAgICAg
ICAgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyInKQotICAgICAgICAgICAg
U1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9TV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAg
IGVsc2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJykKLSAgICAgICAg
ICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+JykKLSAgICAg
ICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9TV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUp
IHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSkg
ewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9
PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBl
bHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09O
U1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3Rh
dGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFU
RShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRTZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9SRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUp
IHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJvZ3VzQ29tbWVudFN0YXRlKSB7CiAgICAgICAgIG1f
dG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICBSRUNPTlNVTUVfSU4oQ29udGludWVCb2d1
c0NvbW1lbnRTdGF0ZSk7CisgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKENvbnRpbnVlQm9ndXND
b21tZW50U3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUo
Q29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQ29udGlu
dWVCb2d1c0NvbW1lbnRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5T
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUp
IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAo
Ii0tIikpOwogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmlu
ZywgKCJkb2N0eXBlIikpOwogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY2Rh
dGFTdHJpbmcsICgiW0NEQVRBWyIpKTsKQEAgLTExNDAsMTk5ICsxMDU1LDE5OSBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwog
ICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CiAgICAgICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7Ci0gICAgICAgICAgICAgICAgU1dJVENIX1RP
KENvbW1lbnRTdGFydFN0YXRlKTsKKyAgICAgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhDb21t
ZW50U3RhcnRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
dmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0Qn
IHx8IGNjID09ICdkJykgewogICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRS
ZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShkb2N0eXBlU3RyaW5n
KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
ewogICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291
cmNlLCAiZG9jdHlwZSIpOwotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhET0NUWVBFU3RhdGUp
OworICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKERPQ1RZUEVTdGF0ZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1snICYmIHNob3VsZEFsbG93Q0RBVEEoKSkg
ewogICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0g
c291cmNlLmxvb2tBaGVhZChjZGF0YVN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICBhZHZhbmNlU3Ry
aW5nQW5kQVNTRVJUKHNvdXJjZSwgIltDREFUQVsiKTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hf
VE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKENE
QVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICByZXR1cm4g
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgfQogICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgICAg
IEhUTUxfUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydFN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShDb21tZW50U3RhcnRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhcnREYXNoU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0RGFzaFN0
YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50U3RhcnREYXNoU3RhdGUpIHsKICAg
ICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDb21tZW50RW5kU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkgewogICAgICAgICBp
ZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAn
IScpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZEJhbmdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVu
dEVuZEJhbmdTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5nU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKENvbW1lbnRFbmRCYW5nU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudCgnIScpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwog
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN0YXRlKSB7Cisg
ICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5p
emVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVO
YW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1l
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9D
VFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCZWZvcmVET0NU
WVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAg
QkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBF
TmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgpOwogICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBF
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRl
KTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUo
RE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0
ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykp
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5h
bWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFm
dGVyRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBF
TmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAg
ICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIGlmIChjYyA9
PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKICAgICAgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzeXN0ZW1TdHJpbmcsICgic3lzdGVtIikpOwpAQCAt
MTM0MCwzMDEgKzEyNTUsMzAxIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIFNl
Z21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJ
Z25vcmluZ0Nhc2UocHVibGljU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5j
ZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAg
ICAgICAgICAgICAgU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdv
cmRTdGF0ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1MnIHx8IGNjID09ICdzJykgewogICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6
TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lz
dGVtU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VS
VElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKLSAgICAgICAgICAgICAgICAgICAgU1dJ
VENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CisgICAgICAgICAgICAgICAg
ICAgIEhUTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91
Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hh
cmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhC
b2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAot
ICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKSB7CiAgICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhC
ZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJs
ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVz
cGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVk
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBE
YXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90
ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJE
b3VibGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29u
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNj
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVy
U2luZ2xlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRP
ZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1f
dG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29u
c3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmds
ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0
YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVy
U3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNB
bmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZp
ZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2lu
Z2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUp
IHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRl
bnRpZmllcnNTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVu
dGlmaWVyc1N0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZXR3ZWVuRE9DVFlQ
RVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewog
ICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90
ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykg
ewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmco
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJT
dGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgewor
ICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKSB7CiAg
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1J
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9y
ZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBpZiAoY2MgPT0gJyInKSB7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRp
ZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1
b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRl
bnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZv
cmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwg
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBI
VE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVv
dGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
RG91YmxlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICciJykKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25z
dW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNv
bnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1
b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnXCcnKQotICAgICAgICAg
ICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBt
X3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNv
bnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
Y29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVy
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5n
bGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0
YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RB
VEUoQm9ndXNET0NUWVBFU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQ
RVN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0
YXRlKTsKLSAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOworICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvblN0YXRlKSB7CiAgICAgICAg
IGlmIChjYyA9PSAnXScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENEQVRBU2VjdGlvblJpZ2h0
U3F1YXJlQnJhY2tldFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDREFUQVNl
Y3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICBSRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVC
cmFja2V0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvblJpZ2h0U3F1
YXJlQnJhY2tldFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnXScpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKENEQVRBU2VjdGlvbkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDREFUQVNlY3Rpb25Eb3VibGVSaWdodFNxdWFyZUJy
YWNrZXRTdGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KCddJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQ0RBVEFTZWN0aW9uU3RhdGUpOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uRG91YmxlUmlnaHRTcXVhcmVC
cmFja2V0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvbkRvdWJsZVJp
Z2h0U3F1YXJlQnJhY2tldFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
J10nKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignXScpOwotICAgICAgICAgICAgUkVD
T05TVU1FX0lOKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1F
X0lOKENEQVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUo
KQpAQCAtMTY0OCwxOCArMTU2MywxOCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTFRva2Vu
aXplcjo6dXBkYXRlU3RhdGVGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgaWYgKHRhZ05hbWUgPT0gdGV4dGFyZWFUYWcgfHwgdGFnTmFtZSA9PSB0
aXRsZVRhZykKLSAgICAgICAgc2V0U3RhdGUoUkNEQVRBU3RhdGUpOworICAgICAgICBzZXRTdGF0
ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlKTsKICAgICBlbHNlIGlmICh0YWdOYW1l
ID09IHBsYWludGV4dFRhZykKLSAgICAgICAgc2V0U3RhdGUoUExBSU5URVhUU3RhdGUpOworICAg
ICAgICBzZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKICAgICBl
bHNlIGlmICh0YWdOYW1lID09IHNjcmlwdFRhZykKLSAgICAgICAgc2V0U3RhdGUoU2NyaXB0RGF0
YVN0YXRlKTsKKyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRh
U3RhdGUpOwogICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gc3R5bGVUYWcKICAgICAgICAgfHwgdGFn
TmFtZSA9PSBpZnJhbWVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSB4bXBUYWcKICAgICAgICAg
fHwgKHRhZ05hbWUgPT0gbm9lbWJlZFRhZyAmJiBIVE1MVHJlZUJ1aWxkZXI6OnBsdWdpbnNFbmFi
bGVkKGZyYW1lKSkKICAgICAgICAgfHwgdGFnTmFtZSA9PSBub2ZyYW1lc1RhZwogICAgICAgICB8
fCAodGFnTmFtZSA9PSBub3NjcmlwdFRhZyAmJiBIVE1MVHJlZUJ1aWxkZXI6OnNjcmlwdEVuYWJs
ZWQoZnJhbWUpKSkKLSAgICAgICAgc2V0U3RhdGUoUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgc2V0
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwogfQogCiBpbmxpbmUgYm9v
bCBIVE1MVG9rZW5pemVyOjp0ZW1wb3JhcnlCdWZmZXJJcyhjb25zdCBTdHJpbmcmIGV4cGVjdGVk
U3RyaW5nKQpAQCAtMTY3OCwyMSArMTU5Myw5IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6
OmlzQXBwcm9wcmlhdGVFbmRUYWcoKQogICAgIHJldHVybiBtX2J1ZmZlcmVkRW5kVGFnTmFtZSA9
PSBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTFRva2VuaXpl
cjo6YnVmZmVyQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICBBU1NFUlQoY2hhcmFj
dGVyICE9IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpOwotICAgIG1f
dG9rZW4tPmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICBtX3Rva2VuLT5hcHBlbmRUb0No
YXJhY3RlcihjaGFyYWN0ZXIpOwotfQotCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpwYXJz
ZUVycm9yKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1pbmxpbmUgYm9vbCBIVE1M
VG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpCi17Ci0gICAgcmV0dXJuIG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOwotfQotCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKaW5kZXggZmE0NWNiMjQzMTEx
NThlOWRmZmY5NGViN2I1NDJiYTgwZGIxM2ZjZS4uNDlhZjYwMTQ0YjlhNmViMzQ3YWI4MmJiODdj
NzdmYzY3NmU3OWY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuaApAQCAtMjcsMjAgKzI3LDE1IEBACiAjaWZuZGVmIEhUTUxUb2tlbml6ZXJfaAogI2RlZmlu
ZSBIVE1MVG9rZW5pemVyX2gKIAorI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgorI2luY2x1ZGUgIk1h
cmt1cFRva2VuaXplckJhc2UuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7Ci1j
bGFzcyBIVE1MVG9rZW47CiAKLWNsYXNzIEhUTUxUb2tlbml6ZXIgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEhUTUxUb2tlbml6ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNz
IEhUTUxUb2tlbml6ZXJTdGF0ZSB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAg
IERhdGFTdGF0ZSwKQEAgLTExOSw3ICsxMTQsMTIgQEAgcHVibGljOgogICAgICAgICBDREFUQVNl
Y3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSwKICAgICAgICAgQ0RBVEFTZWN0aW9uRG91Ymxl
UmlnaHRTcXVhcmVCcmFja2V0U3RhdGUsCiAgICAgfTsKK307CiAKK2NsYXNzIEhUTUxUb2tlbml6
ZXIgOiBwdWJsaWMgTWFya3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhUTUxUb2tlbml6ZXJT
dGF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbml6ZXIpOworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+IGNyZWF0ZShib29sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgSFRNTFRva2VuaXplcih1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykpOyB9
CiAgICAgfkhUTUxUb2tlbml6ZXIoKTsKIApAQCAtMTMwLDEyICsxMzAsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmlyc3QpLgogICAgIGJvb2wgbmV4dFRva2VuKFNlZ21l
bnRlZFN0cmluZyYsIEhUTUxUb2tlbiYpOwogCi0gICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KLSAgICBpbnQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyBy
ZXR1cm4gMTsgfSAvLyBNYXRjaGVzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIGJlaGF2aW9y
LgotCi0gICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9Ci0gICAgdm9p
ZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KLQogICAgIC8vIFVw
ZGF0ZXMgdGhlIHRva2VuaXplcidzIHN0YXRlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGFnIG5h
bWUuIFRoaXMgaXMKICAgICAvLyBhbiBhcHByb3hpbWF0aW9uIG9mIGhvdyB0aGUgdHJlZSBidWls
ZGVyIHdvdWxkIHVwZGF0ZSB0aGUgdG9rZW5pemVyJ3MKICAgICAvLyBzdGF0ZS4gVGhpcyBtZXRo
b2QgaXMgdXNlZnVsIGZvciBhcHByb3hpbWF0aW5nIEhUTUwgdG9rZW5pemF0aW9uLiBUbwpAQCAt
MTYyLDExMiArMTU2LDI2IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEFsbG93Q0RBVEEoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZEFsbG93Q0RBVEE7IH0KICAgICB2b2lkIHNldFNob3VsZEFs
bG93Q0RBVEEoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZEFsbG93Q0RBVEEgPSB2YWx1ZTsgfQogCi0g
ICAgYm9vbCBzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICFtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50Ci0gICAgICAgICAgICAmJiAo
bV9zdGF0ZSA9PSBEYXRhU3RhdGUKLSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlID09IFJDREFU
QVN0YXRlCi0gICAgICAgICAgICAgICAgfHwgbV9zdGF0ZSA9PSBSQVdURVhUU3RhdGUKLSAgICAg
ICAgICAgICAgICB8fCBtX3N0YXRlID09IFBMQUlOVEVYVFN0YXRlKTsKLSAgICB9Ci0KIHByaXZh
dGU6Ci0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCi0gICAgY2xhc3MgSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcik7Ci0gICAgcHVibGljOgotICAgICAgICBJbnB1dFN0cmVhbVByZXByb2Nl
c3NvcihIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIpCi0gICAgICAgICAgICA6IG1fdG9rZW5pemVy
KHRva2VuaXplcikKLSAgICAgICAgICAgICwgbV9uZXh0SW5wdXRDaGFyYWN0ZXIoJ1wwJykKLSAg
ICAgICAgICAgICwgbV9za2lwTmV4dE5ld0xpbmUoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIFVDaGFyIG5leHRJbnB1dENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bmV4dElucHV0Q2hhcmFjdGVyOyB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHdlIHN1
Y2NlZWRlZCBpbiBwZWVraW5nIGF0IHRoZSBuZXh0IGNoYXJhY3Rlci4KLSAgICAgICAgLy8gVGhl
IG9ubHkgd2F5IHdlIGNhbiBmYWlsIHRvIHBlZWsgaXMgaWYgdGhlcmUgYXJlIG5vIG1vcmUKLSAg
ICAgICAgLy8gY2hhcmFjdGVycyBpbiB8c291cmNlfCAoYWZ0ZXIgY29sbGFwc2luZyBcclxuLCBl
dGMpLgotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGVlayhTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgaW50JiBsaW5lTnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgIFBlZWtBZ2FpbjoKLSAg
ICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJjZTsKLQotICAgICAgICAgICAg
Ly8gRXZlcnkgYnJhbmNoIGluIHRoaXMgZnVuY3Rpb24gaXMgZXhwZW5zaXZlLCBzbyB3ZSBoYXZl
IGEKLSAgICAgICAgICAgIC8vIGZhc3QtcmVqZWN0IGJyYW5jaCBmb3IgY2hhcmFjdGVycyB0aGF0
IGRvbid0IHJlcXVpcmUgc3BlY2lhbAotICAgICAgICAgICAgLy8gaGFuZGxpbmcuIFBsZWFzZSBy
dW4gdGhlIHBhcnNlciBiZW5jaG1hcmsgd2hlbmV2ZXIgeW91IHRvdWNoCi0gICAgICAgICAgICAv
LyB0aGlzIGZ1bmN0aW9uLiBJdCdzIHZlcnkgaG90LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIHNwZWNpYWxDaGFyYWN0ZXJNYXNrID0gJ1xuJyB8ICdccicgfCAnXDAnOwotICAgICAg
ICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyICYgfnNwZWNpYWxDaGFyYWN0ZXJNYXNrKSB7
Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1fbmV4
dElucHV0Q2hhcmFjdGVyID09ICdcbicgJiYgbV9za2lwTmV4dE5ld0xpbmUpIHsKLSAgICAgICAg
ICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNvdXJj
ZS5hZHZhbmNlUGFzdE5ld2xpbmUobGluZU51bWJlcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNv
dXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xyJykgewotICAgICAg
ICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gJ1xuJzsKLSAgICAgICAgICAgICAgICBt
X3NraXBOZXh0TmV3TGluZSA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoZSBzcGVjIGluZGljYXRlcyB0aGF0IHRoZSBzdXJyb2dhdGUgcGFpciByYW5nZSBhcyB3
ZWxsIGFzCi0gICAgICAgICAgICAgICAgLy8gYSBudW1iZXIgb2Ygc3BlY2lmaWMgY2hhcmFjdGVy
IHZhbHVlcyBhcmUgcGFyc2UgZXJyb3JzIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQKLSAgICAgICAg
ICAgICAgICAvLyBieSB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXZSBzdXNwZWN0IHRoaXMg
aXMgYSBwcm9ibGVtIHdpdGggdGhlIHNwZWMgYXMgZG9pbmcKLSAgICAgICAgICAgICAgICAvLyB0
aGF0IGZpbHRlcmluZyBicmVha3Mgc3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcgYW5kIGNhdXNlcyB1
cyBub3QgdG8gbWF0Y2ggTWluZWZpZWxkLgotICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1
dENoYXJhY3RlciA9PSAnXDAnICYmICFzaG91bGRUcmVhdE51bGxBc0VuZE9mRmlsZU1hcmtlcihz
b3VyY2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuaXplci0+c2hvdWxkU2tp
cE51bGxDaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZh
bmNlUGFzdE5vbk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gUGVla0FnYWluOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gMHhGRkZEOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGFyZSBtb3Jl
IGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgYWZ0ZXIgYWR2YW5jaW5nLgotICAgICAgICBib29sIGFk
dmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGludCYgbGluZU51bWJlcikKLSAgICAgICAg
ewotICAgICAgICAgICAgc291cmNlLmFkdmFuY2UobGluZU51bWJlcik7Ci0gICAgICAgICAgICBp
ZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICByZXR1cm4gcGVlayhzb3VyY2UsIGxpbmVOdW1iZXIpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGVuZE9mRmlsZU1hcmtlcjsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIGJvb2wgc2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJrZXIoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzb3Vy
Y2UuaXNDbG9zZWQoKSAmJiBzb3VyY2UubGVuZ3RoKCkgPT0gMTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEhUTUxUb2tlbml6ZXIqIG1fdG9rZW5pemVyOwotCi0gICAgICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI25leHQtaW5wdXQtY2hhcmFj
dGVyCi0gICAgICAgIFVDaGFyIG1fbmV4dElucHV0Q2hhcmFjdGVyOwotICAgICAgICBib29sIG1f
c2tpcE5leHROZXdMaW5lOwotICAgIH07Ci0KICAgICBIVE1MVG9rZW5pemVyKGJvb2wgdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MpOwogCiAgICAgaW5saW5lIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdt
ZW50ZWRTdHJpbmcmKTsKIAogICAgIGlubGluZSB2b2lkIHBhcnNlRXJyb3IoKTsKLSAgICBpbmxp
bmUgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOwotICAgIGlubGluZSB2b2lkIGJ1ZmZlckNv
ZGVQb2ludCh1bnNpZ25lZCk7CisgICAgCisgICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlc3VtZUlu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHN0YXRl
KQorICAgIHsKKyAgICAgICAgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpOworICAgICAgICByZXR1
cm4gTWFya3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhUTUxUb2tlbml6ZXJTdGF0ZT46OmVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIHN0YXRlKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIGJv
b2wgZW1pdEFuZFJlY29uc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW5p
emVyU3RhdGU6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgc2F2ZUVuZFRhZ05hbWVJZk5l
ZWRlZCgpOworICAgICAgICByZXR1cm4gTWFya3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhU
TUxUb2tlbml6ZXJTdGF0ZT46OmVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIHN0YXRlKTsKKyAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVzdW1lSW4oU2VnbWVudGVkU3RyaW5nJiwg
U3RhdGUpOwotICAgIGlubGluZSBib29sIGVtaXRBbmRSZWNvbnN1bWVJbihTZWdtZW50ZWRTdHJp
bmcmLCBTdGF0ZSk7Ci0gICAgaW5saW5lIGJvb2wgZW1pdEVuZE9mRmlsZShTZWdtZW50ZWRTdHJp
bmcmKTsKLSAgICBpbmxpbmUgYm9vbCBmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJp
bmcmLCBTdGF0ZSk7CisgICAgaW5saW5lIGJvb2wgZmx1c2hFbWl0QW5kUmVzdW1lSW4oU2VnbWVu
dGVkU3RyaW5nJiwgSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSk7CiAKICAgICAvLyBSZXR1cm4g
d2hldGhlciB3ZSBuZWVkIHRvIGVtaXQgYSBjaGFyYWN0ZXIgdG9rZW4gYmVmb3JlIGRlYWxpbmcg
d2l0aAogICAgIC8vIHRoZSBidWZmZXJlZCBlbmQgdGFnLgpAQCAtMjc4LDIyICsxODYsMTcgQEAg
cHJpdmF0ZToKICAgICAvLyBrbm93IHdoZXRoZXIgdGhleSByZXByZXNlbnQgZW5kIHRhZ3Mgb3Ig
UkNEQVRBLCBldGMuIFRoZXNlCiAgICAgLy8gZnVuY3Rpb25zIGhlbHAgbWFuYWdlIHRoZXNlIHN0
YXRlLgogICAgIGlubGluZSB2b2lkIGFkZFRvUG9zc2libGVFbmRUYWcoVUNoYXIgY2MpOwotICAg
IGlubGluZSB2b2lkIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKTsKLSAgICBpbmxpbmUgYm9vbCBp
c0FwcHJvcHJpYXRlRW5kVGFnKCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBoYXZlQnVmZmVyZWRDaGFy
YWN0ZXJUb2tlbigpOwogCi0gICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBpbmxpbmUgdm9pZCBzYXZl
RW5kVGFnTmFtZUlmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBl
KCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBpZiAobV90b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKKyAgICAgICAgICAgIG1fYXBw
cm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOworICAgIH0KKyAgICBpbmxpbmUg
Ym9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBtX2Fw
cHJvcHJpYXRlRW5kVGFnTmFtZTsKIAotICAgIC8vIG1fdG9rZW4gaXMgb3duZWQgYnkgdGhlIGNh
bGxlci4gSWYgbmV4dFRva2VuIGlzIG5vdCBvbiB0aGUgc3RhY2ssCi0gICAgLy8gdGhpcyBtZW1i
ZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVtb3J5LgotICAgIEhUTUxUb2tl
biogbV90b2tlbjsKLSAgICBpbnQgbV9saW5lTnVtYmVyOwotCi0gICAgYm9vbCBtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3Rpbmc7Ci0gICAgYm9vbCBtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxh
Y2VtZW50OwogICAgIGJvb2wgbV9zaG91bGRBbGxvd0NEQVRBOwogCiAgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGVtcG9yYXJ5LWJ1ZmZl
cgpAQCAtMzAzLDEyICsyMDYsNiBAQCBwcml2YXRlOgogICAgIC8vIHRva2VuIChlLmcuLCB3aGVu
IGxleGluZyBzY3JpcHQpLiBXZSBidWZmZXIgdGhlIG5hbWUgb2YgdGhlIGVuZCB0YWcKICAgICAv
LyB0b2tlbiBoZXJlIHNvIHdlIHJlbWVtYmVyIGl0IG5leHQgdGltZSB3ZSByZS1lbnRlciB0aGUg
dG9rZW5pemVyLgogICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fYnVmZmVyZWRFbmRUYWdOYW1lOwot
Ci0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJhY3RlcgotICAgIFVDaGFyIG1fYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXI7Ci0KLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KLSAgICBJ
bnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yOwogICAgIAog
ICAgIGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBiN2ViY2U3OTU0MmU1Y2U0
NTVhZTcyZDUxOTZlNDQ0NGIwZDYxYTcyLi4wM2EyNzMyYjRmZjdjM2ZjNGI5MzhkNjM5NWNlMWY3
NGJmMzdmYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBwbGFpbnRleHRUYWcpIHsKICAgICAgICAgcHJvY2Vzc0Zha2VQRW5kVGFnSWZQ
SW5CdXR0b25TY29wZSgpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4p
OwotICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlBMQUlOVEVYVFN0YXRlKTsKKyAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0
ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJ1dHRvblRhZykgewpAQCAtOTM4LDcgKzkz
OCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRleHRhcmVhVGFn
KSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgICAgIG1f
cGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyh0cnVl
KTsKLSAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVy
OjpSQ0RBVEFTdGF0ZSk7CisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUo
SFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIG1fb3JpZ2luYWxJbnNl
cnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxz
ZTsKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZXh0TW9kZSk7CkBAIC0yMjMwLDggKzIyMzAs
OCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgLy8gc2VsZi1jbG9zaW5nIHNjcmlwdCB0YWcgd2FzIGVuY291
bnRlcmVkIGFuZCBwcmUtSFRNTDUgcGFyc2VyCiAgICAgICAgICAgICAvLyBxdWlya3MgYXJlIGVu
YWJsZWQuIFdlIG11c3Qgc2V0IHRoZSB0b2tlbml6ZXIncyBzdGF0ZSB0bwogICAgICAgICAgICAg
Ly8gRGF0YVN0YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2VuaXplciBkaWRuJ3QgaGF2ZSBhIGNo
YW5jZSB0by4KLSAgICAgICAgICAgIEFTU0VSVChtX3BhcnNlci0+dG9rZW5pemVyKCktPnN0YXRl
KCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlIHx8IG1fdXNlUHJlSFRNTDVQYXJzZXJRdWly
a3MpOwotICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICAgICAgQVNTRVJUKG1fcGFyc2VyLT50b2tlbml6
ZXIoKS0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSB8fCBtX3VzZVBy
ZUhUTUw1UGFyc2VyUXVpcmtzKTsKKyAgICAgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7CkBA
IC0yNzg1LDcgKzI3ODUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNS
Q0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0
SFRNTEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUo
SFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOworICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CiAgICAgbV9vcmlnaW5h
bEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAgICAgc2V0SW5zZXJ0aW9uTW9kZShU
ZXh0TW9kZSk7CiB9CkBAIC0yNzk0LDcgKzI3OTQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsK
ICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAg
ICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBtX3BhcnNlci0+dG9rZW5p
emVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CisgICAgbV9wYXJz
ZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0
ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAgICAg
c2V0SW5zZXJ0aW9uTW9kZShUZXh0TW9kZSk7CiB9CkBAIC0yODAzLDcgKzI4MDMsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRTY3JpcHRFbGVtZW50KHRva2VuKTsKLSAgICBtX3Bh
cnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0
ZSk7CisgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3Rh
dGU6OlNjcmlwdERhdGFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2lu
c2VydGlvbk1vZGU7CiAKICAgICBUZXh0UG9zaXRpb24wIHBvc2l0aW9uID0gbV9wYXJzZXItPnRl
eHRQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4
dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggNjNiNTE2MDIxYTQyNDlmMzVjYjZkYTdmZTRhYWYyYzMyZjM4
YWNlNi4uZWQ1NTQzZWM1MzY1M2UxYzk3ODhiNmZlYWQ1MGUwZmQyYjJjMzFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIFRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50UGFyc2VyKEhUTUxE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIGZh
bHNlKQogICAgICwgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudChmYWxzZSkKIHsKLSAgICB0
b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOworICAg
IHRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRl
KTsKIH0KIAogVGV4dERvY3VtZW50UGFyc2VyOjp+VGV4dERvY3VtZW50UGFyc2VyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcApp
bmRleCBkN2U2ZTNkZmM2ZDUzNzYwNDNjYTFhY2FiNzJmOWM1ZmEwMmYxYjM5Li4zNDNiMjNjMjkw
ODJkMzQ3NDI2MDk1ODg1NmNjOTdjYWI4OGRlZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFRleHRWaWV3U291cmNlUGFyc2VyOjpUZXh0Vmlld1NvdXJj
ZVBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxWaWV3
U291cmNlUGFyc2VyKGRvY3VtZW50KQogewotICAgIHRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1M
VG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogfQogCiBUZXh0Vmlld1NvdXJjZVBh
cnNlcjo6flRleHRWaWV3U291cmNlUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L01hcmt1cFRva2VuQmFzZS5oCmluZGV4IGJkODNiMjNiZGU5M2RmZTU5ZGQ5Y2JhYmFkODQ3YzMz
MDM4ZTcxM2QuLjU0YmYyNmViN2ZiYWRjMzE5ZTA5YzczNmJhMGE0NTJlODY5N2JiYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaApAQCAtNTcsNyArNTcs
NyBAQCBjbGFzcyBNYXJrdXBUb2tlbkJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1h
cmt1cFRva2VuQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlU2V0OjpUeXBlIFR5cGU7CisgICAgdHlwZWRlZiBUeXBl
U2V0IFR5cGU7CiAKICAgICBjbGFzcyBSYW5nZSB7CiAgICAgcHVibGljOgpAQCAtMjM5LDcgKzIz
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZh
bHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwogICAgIH0KIAotICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNv
bnN0CiAgICAgewpAQCAtMzY2LDcgKzM2Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyB3YW50IHRv
IGVuZCB1cCB3aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgdHdvIGNsYXNzZXMu
CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKIAotICAgIFR5cGUgbV90eXBlOwor
ICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgbV90eXBlOwogICAgIFJhbmdlIG1fcmFuZ2U7IC8vIEFs
d2F5cyBzdGFydHMgYXQgemVyby4KICAgICBpbnQgbV9iYXNlT2Zmc2V0OwogICAgIERhdGFWZWN0
b3IgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXpl
ckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZDg5OTUyYmEwNDMxM2FiODNkZWVmMTAzYzM2MTEzYmU5OWMz
MWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJCYXNlLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYXJrdXBUb2tlbml6
ZXJCYXNlX2gKKyNkZWZpbmUgTWFya3VwVG9rZW5pemVyQmFzZV9oCisKKyNpbmNsdWRlICJTZWdt
ZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBOZXZlciB1
c2UgdGhpcyB0eXBlIGZvciBhIHZhcmlhYmxlLCBhcyBpdCBjb250YWlucyBzZXZlcmFsIG5vbi12
aXJ0dWFsIGZ1bmN0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIFRva2VuLCB0eXBlbmFtZSBTdGF0
ZT4KK2NsYXNzIE1hcmt1cFRva2VuaXplckJhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1hcmt1cFRva2VuaXplckJhc2UpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHZpcnR1YWwgfk1hcmt1cFRva2VuaXplckJhc2UoKSB7IH0KKworICAgIGludCBs
aW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgaW50IGNvbHVt
bk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gTWF0Y2hlcyBMZWdhY3lIVE1MRG9jdW1l
bnRQYXJzZXIuaCBiZWhhdmlvci4KKworICAgIHR5cGVuYW1lIFN0YXRlOjpTdGF0ZSBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIHNldFN0YXRlKHR5cGVuYW1lIFN0
YXRlOjpTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KKworICAgIGJvb2wgZm9yY2VO
dWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlTnVsbENoYXJh
Y3RlclJlcGxhY2VtZW50OyB9CisgICAgdm9pZCBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNl
bWVudChib29sIHZhbHVlKSB7IG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgPSB2YWx1
ZTsgfQorCisgICAgLy8gVGhpcyBtZXRob2QgbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiBhIHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uIHdoZW4gc3ViY2xhc3NpbmcgdGhpcyB0ZW1wbGF0ZQorICAgIGlu
bGluZSBib29sIHNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0OworCitwcm90ZWN0ZWQ6
CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgY2xhc3MgSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcik7CisgICAgcHVibGljOgorICAgICAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cihNYXJrdXBUb2tlbml6ZXJCYXNlPFRva2VuLCBTdGF0ZT4qIHRva2VuaXplcikKKyAgICAgICAg
ICAgIDogbV90b2tlbml6ZXIodG9rZW5pemVyKQorICAgICAgICAgICAgLCBtX25leHRJbnB1dENo
YXJhY3RlcignXDAnKQorICAgICAgICAgICAgLCBtX3NraXBOZXh0TmV3TGluZShmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVUNoYXIgbmV4dElucHV0Q2hhcmFjdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7IH0KKworICAgICAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgd2Ugc3VjY2VlZGVkIGluIHBlZWtpbmcgYXQgdGhlIG5leHQgY2hhcmFjdGVy
LgorICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGZhaWwgdG8gcGVlayBpcyBpZiB0aGVy
ZSBhcmUgbm8gbW9yZQorICAgICAgICAvLyBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IChhZnRlciBj
b2xsYXBzaW5nIFxyXG4sIGV0YykuCisgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwZWVrKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1iZXIpCisgICAgICAgIHsKKyAgICAg
ICAgUGVla0FnYWluOgorICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNl
OworCisgICAgICAgICAgICAvLyBFdmVyeSBicmFuY2ggaW4gdGhpcyBmdW5jdGlvbiBpcyBleHBl
bnNpdmUsIHNvIHdlIGhhdmUgYQorICAgICAgICAgICAgLy8gZmFzdC1yZWplY3QgYnJhbmNoIGZv
ciBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBzcGVjaWFsCisgICAgICAgICAgICAvLyBo
YW5kbGluZy4gUGxlYXNlIHJ1biB0aGUgcGFyc2VyIGJlbmNobWFyayB3aGVuZXZlciB5b3UgdG91
Y2gKKyAgICAgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24uIEl0J3MgdmVyeSBob3QuCisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgc3BlY2lhbENoYXJhY3Rlck1hc2sgPSAnXG4nIHwgJ1xy
JyB8ICdcMCc7CisgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgJiB+c3BlY2lh
bENoYXJhY3Rlck1hc2spIHsKKyAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xuJyAmJiBtX3NraXBOZXh0TmV3
TGluZSkgeworICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0TmV3bGluZShsaW5lTnVtYmVyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJj
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9
PSAnXHInKSB7CisgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAnXG4nOwor
ICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgdGhlIHN1cnJvZ2F0
ZSBwYWlyIHJhbmdlIGFzIHdlbGwgYXMKKyAgICAgICAgICAgICAgICAvLyBhIG51bWJlciBvZiBz
cGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBlcnJvcnMgYW5kIHNob3VsZCBiZSBy
ZXBsYWNlZAorICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIu
IFdlIHN1c3BlY3QgdGhpcyBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3BlYyBhcyBkb2luZworICAg
ICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVyaW5nIGJyZWFrcyBzdXJyb2dhdGUgcGFpciBoYW5k
bGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBtYXRjaCBNaW5lZmllbGQuCisgICAgICAgICAgICAg
ICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcgJiYgIXNob3VsZFRyZWF0TnVsbEFz
RW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fdG9r
ZW5pemVyLT5zaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBQZWVrQWdhaW47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFy
YWN0ZXIgPSAweEZGRkQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm5zIHdoZXRo
ZXIgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8c291cmNlfCBhZnRlciBhZHZhbmNpbmcu
CisgICAgICAgIGJvb2wgYWR2YW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgaW50JiBsaW5l
TnVtYmVyKQorICAgICAgICB7CisgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZShsaW5lTnVtYmVy
KTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBwZWVrKHNvdXJjZSwgbGluZU51bWJlcik7
CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZW5kT2ZGaWxlTWFya2Vy
ID0gMDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgc2hvdWxkVHJlYXROdWxsQXNFbmRP
ZkZpbGVNYXJrZXIoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAmJiBzb3VyY2UubGVuZ3RoKCkgPT0g
MTsKKyAgICAgICAgfQorCisgICAgICAgIE1hcmt1cFRva2VuaXplckJhc2U8VG9rZW4sIFN0YXRl
PiogbV90b2tlbml6ZXI7CisKKyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1jaGFyYWN0ZXIKKyAgICAgICAgVUNo
YXIgbV9uZXh0SW5wdXRDaGFyYWN0ZXI7CisgICAgICAgIGJvb2wgbV9za2lwTmV4dE5ld0xpbmU7
CisgICAgfTsKKworICAgIE1hcmt1cFRva2VuaXplckJhc2UoKSA6IG1faW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3IodGhpcykgeyByZXNldCgpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBidWZmZXJDaGFy
YWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3RlciAh
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKTsKKyAgICAgICAgbV90
b2tlbi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIGJ1ZmZlckNv
ZGVQb2ludCh1bnNpZ25lZCk7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBjYW4gZ2V0IGhpZGRlbiBp
biBzdWJjbGFzc2VzCisgICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCB0eXBlbmFtZSBTdGF0ZTo6U3RhdGUgc3RhdGUpCisgICAgeworICAgICAg
ICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIG1ldGhvZCBj
YW4gZ2V0IGhpZGRlbiBpbiBzdWJjbGFzc2VzCisgICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlY29u
c3VtZUluKFNlZ21lbnRlZFN0cmluZyYsIHR5cGVuYW1lIFN0YXRlOjpTdGF0ZSBzdGF0ZSkKKyAg
ICB7CisgICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaW5saW5lIGJvb2wgZW1pdEVuZE9mRmlsZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSkKKyAgICB7CisgICAgICAgIGlmIChoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RGF0YVN0YXRl
OworICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOworICAgICAgICBtX3Rva2Vu
LT5jbGVhcigpOworICAgICAgICBtX3Rva2VuLT5tYWtlRW5kT2ZGaWxlKCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpEYXRhU3RhdGU7CisgICAgICAgIG1fdG9rZW4gPSAwOworICAgICAgICBt
X2xpbmVOdW1iZXIgPSAwOworICAgIH0KKworICAgIGlubGluZSBib29sIGhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0g
VG9rZW46OlR5cGU6OkNoYXJhY3RlcjsKKyAgICB9CisgICAgCisgICAgdHlwZW5hbWUgU3RhdGU6
OlN0YXRlIG1fc3RhdGU7CisKKyAgICAvLyBtX3Rva2VuIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIu
IElmIG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0YWNrLAorICAgIC8vIHRoaXMgbWVtYmVyIG1p
Z2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBUb2tlbiogbV90b2tl
bjsKKyAgICBpbnQgbV9saW5lTnVtYmVyOworCisgICAgYm9vbCBtX3NraXBMZWFkaW5nTmV3TGlu
ZUZvckxpc3Rpbmc7CisgICAgYm9vbCBtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50Owor
CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJhY3RlcgorICAgIFVDaGFyIG1fYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXI7CisKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KKyAgICBJ
bnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yOworfTsKKwor
fQorCisjZW5kaWYgLy8gTWFya3VwVG9rZW5pemVyQmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjllMzEzMTU3N2ZiODdjZjNmN2Y1MDZiMjE1YThjNDE5YzEwMzUwNmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGlu
ZU1ldGhvZHMuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3Jj
aCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFya3VwVG9rZW5pemVySW5s
aW5lTWV0aG9kc19oCisjZGVmaW5lIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHNfaAorCisj
aW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5s
aW5lIGJvb2wgaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKFVDaGFyIGNjKQoreworICAgIHJldHVybiBj
YyA9PSAnICcgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQyc7
Cit9CisKK2lubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFjdGVycykKK3sK
KyAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKKyAgICAgICAgc291cmNlLmFkdmFuY2VB
bmRBU1NFUlRJZ25vcmluZ0Nhc2UoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKK30KKworaW5saW5l
IHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29u
c3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQoreworICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFy
YWN0ZXJzKQorICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgqZXhwZWN0ZWRDaGFyYWN0
ZXJzKyspOworfQorCisjaWYgQ09NUElMRVIoTVNWQykKKy8vIFdlIG5lZWQgdG8gZGlzYWJsZSB0
aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydAor
Ly8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRoZSBzdGF0ZSBtYWNo
aW5lLgorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIpCisjZW5kaWYKKworI2RlZmluZSBC
RUdJTl9TVEFURShwcmVmaXgsIHN0YXRlTmFtZSkgY2FzZSBwcmVmaXg6OnN0YXRlTmFtZTogc3Rh
dGVOYW1lOgorI2RlZmluZSBFTkRfU1RBVEUoKSBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgYnJlYWs7
CisKKy8vIFdlIHVzZSB0aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAicmVjb25z
dW1lIHRoZSBjdXJyZW50IGlucHV0CisvLyBjaGFyYWN0ZXIgaW4gdGhlIDxtdW1ibGU+IHN0YXRl
LiIKKyNkZWZpbmUgUkVDT05TVU1FX0lOKHByZWZpeCwgc3RhdGVOYW1lKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9z
dGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworLy8g
V2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJjb25zdW1lIHRoZSBu
ZXh0IGlucHV0CisvLyBjaGFyYWN0ZXIgLi4uIGFuZCBzd2l0Y2ggdG8gdGhlIDxtdW1ibGU+IHN0
YXRlLiIKKyNkZWZpbmUgQURWQU5DRV9UTyhwcmVmaXgsIHN0YXRlTmFtZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
bV9zdGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmFkdmFu
Y2Uoc291cmNlLCBtX2xpbmVOdW1iZXIpKSAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBoYXZl
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3Rlcigp
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworLy8gU29tZXRpbWVzIHRoZXJlJ3MgbW9yZSBjb21wbGljYXRlZCBsb2dpYyBpbiB0aGUg
c3BlYyB0aGF0IHNlcGFyYXRlcyB3aGVuCisvLyB3ZSBjb25zdW1lIHRoZSBuZXh0IGlucHV0IGNo
YXJhY3RlciBhbmQgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBwYXJ0aWN1bGFyCisvLyBzdGF0ZS4gV2Ug
aGFuZGxlIHRob3NlIGNhc2VzIGJ5IGFkdmFuY2luZyB0aGUgc291cmNlIGRpcmVjdGx5IGFuZCB1
c2luZworLy8gdGhpcyBtYWNybyB0byBzd2l0Y2ggdG8gdGhlIGluZGljYXRlZCBzdGF0ZS4KKyNk
ZWZpbmUgU1dJVENIX1RPKHByZWZpeCwgc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9
IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJlcikpIFwKKyAgICAgICAgICAgIHJldHVybiBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3Rl
cigpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworfQorCisjZW5kaWYgLy8gTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kc19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101802</attachid>
            <date>2011-07-22 18:54:52 -0700</date>
            <delta_ts>2011-07-24 03:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65000-20110722185451.patch</filename>
            <type>text/plain</type>
            <size>122674</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMjc1Y2E3OWM5ZDc0NmRl
NDZhYjkxYjA0MzAwMGNiM2MyMTYzZGFhLi5iNTA0OTU4ZDE2Yjc2NTNiMTQxNjQ3OTljZDYyYWI0
M2NiMDdlNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDctMjIgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBIVE1MIHRva2Vu
aXplciBjb2RlIGluIHByZXBhcmF0aW9uIGZvciBhIG5ldyBYTUwgdG9rZW5pemVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTAwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6dG9rZW5pemVyU3Rh
dGVGb3JDb250ZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJz
ZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjppc0VuZFRhZ0J1ZmZlcmluZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6OjpzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuaXplcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6Zmx1c2hFbWl0QW5kUmVzdW1lSW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnVwZGF0
ZVN0YXRlRm9yKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjplbWl0QW5kUmVzdW1lSW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuaXplcjo6ZW1pdEFuZFJlY29uc3VtZUluKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbml6ZXI6OnNhdmVFbmRUYWdOYW1lSWZOZWVkZWQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0U3RhcnRUYWcp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBhcnNlcik6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFZpZXdTb3VyY2VQYXJzZXI6OlRleHRWaWV3U291cmNlUGFyc2VyKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWFy
a3VwVG9rZW5CYXNlOjp0eXBlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXpl
ckJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjp+
TWFya3VwVG9rZW5pemVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJC
YXNlOjpsaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6
OmNvbHVtbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpz
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpzZXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpmb3JjZU51bGxDaGFyYWN0
ZXJSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpz
ZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJr
dXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6SW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6SW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6Om5leHRJbnB1dENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVlayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6c2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6TWFya3VwVG9rZW5pemVy
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjpidWZmZXJDaGFy
YWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6ZW1pdEFuZFJl
c3VtZUluKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OmVtaXRBbmRS
ZWNvbnN1bWVJbik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBUb2tlbml6ZXJCYXNlOjplbWl0
RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OmhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGlu
ZU1ldGhvZHMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc1Rva2VuaXplcldoaXRlc3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2Fz
ZSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlU3RyaW5nQW5kQVNTRVJUKToKKwogMjAxMS0w
Ny0yMCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgQXR0ZW1wdCB0
byBmaXggdGhlIEdUSyBidWlsZCBhZnRlciBjaGFuZ2VzZXQgOTEzOTYgPGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzkxMzk2PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZTJlYzNlYzIxMDY3OGQ3M2I5OTU1MWIzZThiNjU2N2IxM2NjNTc1NS4uYWU3OWQ1ZDJmZTQ3
NGE3NDY3YTBiNTRlYmYxMTYwYzgxNzI0YzEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zODA3LDYgKzM4MDcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tl
bkJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNl
LmggXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0
aG9kcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2Vy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYjkxZjNmNDlkYzNlZTU2MWU2ZjI3OTNlYjE5ZTNjNzgyM2ZkMjU0
Ni4uOWVlZjllOTg0ZDFiMzIzMWExODJlODYxOTdkMjc5OWIyOWQ5MmY4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNjEyMiw2ICs2MTIyLDggQEAKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgnLAorICAgICAg
ICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oJywKKyAgICAgICAgICAgICd4
bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCcsCiAgICAgICAgICAgICAn
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggN2UwYmIyMGQxMDUwZmI0
ZGFiOWFmMTI1N2VhZjhhM2FiNGFjZDVjZS4uZDcwM2NmZjNmOWFkOGE2NjhiZTAxYTRhNmVlMzgw
Mzg5ZDI3MzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0OTgsNiArMjQ5OCw4IEBAIEhFQURFUlMg
Kz0gXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggXAogICAgIHdvcmtlcnMvV29y
a2VyVGhyZWFkLmggXAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggXAorICAgIHht
bC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKKyAgICB4bWwvcGFyc2VyL01hcmt1cFRv
a2VuaXplcklubGluZU1ldGhvZHMuaCBcCiAgICAgeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5oIFwKICAgICB4bWwvRE9NUGFyc2VyLmggXAogICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2
ZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDU0YzNiZmVlNTY4MmVmYjZmMjg2ZDZlYjYzNDViNDk1Yzk4NzJjNzkuLjQ5MDg0Y2E4NjNl
NjI5NGJkYzZiMDFkMGIyYzNmOGI5YmUwMWQyNjEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00MjYyMSw2ICs0MjYyMSwxNCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNl
clxNYXJrdXBUb2tlbml6ZXJCYXNlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuaXplcklubGluZU1l
dGhvZHMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHhtbFxwYXJzZXJcWE1MRG9jdW1lbnRQYXJzZXIuaCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkZGFhMWFhODgxMjU3YTQ3OWI0MDdiM2MxZDU3OTg0YTVkYTJmNTE0Li4yMTIwNzRm
ZTM2ZTYxMTAyYjNmOTlhZTczNWY5ZTczMWY1ODVkOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Niw2ICs1Niw4IEBACiAJ
CTAwQjkzMTg5MTNCQThEQkMwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODMx
M0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CiAJ
CTAwQjkzMThCMTNCQThEQzkwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTg1MTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCAqLzsgfTsKIAkJMDBC
OTMxOEMxM0JBOERDQzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTg2MTNCQTg2N0Yw
MDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggKi87IH07CisJCTAwQzYwRTNGMTNE
NzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEM2MEUzRTEzRDc2RDdFMDA5
MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oICovOyB9OworCQkwMEM2MEU0
MjEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDNjBFNDExM0Q3OTdBRTAwOTJBMjc1
IC8qIE1hcmt1cFRva2VuaXplckJhc2UuaCAqLzsgfTsKIAkJMDBDQTkzQjIxM0M2NjkxNjAwRjdG
RTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9j
dW1lbnRQYXJzZXIuaCAqLzsgfTsKIAkJMDBDQTkzQjUxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNl
ci5jcHAgKi87IH07CiAJCTAwRDA0NjRBMTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDBEMDQ2NDgxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlci5jcHAgKi87IH07CkBAIC02NDYyLDYgKzY0NjQsOCBAQAogCQkwMEI5MzE4MzEzQkE4
NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBY
TUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlclNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAwQzYwRTNFMTNENzZEN0UwMDky
QTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDBDNjBFNDExM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1cFRv
a2VuaXplckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwVG9r
ZW5pemVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMENBOTNCMTEzQzY2
OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV3WE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDBDQTkzQjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFy
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld1hNTERvY3Vt
ZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBEMDQ2NDgxM0M0
RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3OTEsNiArMTI3OTUsOCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLywKIAkJCQkwMEE2MjlDMDEzRDBCRUM3
MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8sCisJCQkJMDBDNjBFNDExM0Q3OTdBRTAw
OTJBMjc1IC8qIE1hcmt1cFRva2VuaXplckJhc2UuaCAqLywKKwkJCQkwMEM2MEUzRTEzRDc2RDdF
MDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oICovLAogCQkJCTAwQ0E5
M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8sCiAJCQkJ
MDBDQTkzQjExM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggKi8sCiAJ
CQkJMDBEMDQ2NDgxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
ci5jcHAgKi8sCkBAIC0yMjIyNiw2ICsyMjIzMiw4IEBACiAJCQkJOTMzMDlERjgwOTlFNjQ5MjAw
NTZFNTgxIC8qIG1hcmt1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyOEMzMTQxMjY4RTQzOTAw
NDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEE2MjlD
MTEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9k
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBDNjBFNDIxM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBQzEyREZC
OEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZBQkU3MkY3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDg1MGViY2JkZjBmM2UxM2JhZDI2YjdiNTg5NGZiYjkw
ZWRmMGNmNDkuLjI5YzZhM2NiMzc5ZTU0MTAyMDllOTI0MGI0MTc1ZmU5MWQ3M2E3MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApA
QCAtNDksMjcgKzQ5LDI3IEBAIG5hbWVzcGFjZSB7CiAKIC8vIFRoaXMgaXMgYSBkaXJlY3QgdHJh
bnNjcmlwdGlvbiBvZiBzdGVwIDQgZnJvbToKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1j
YXNlCi1IVE1MVG9rZW5pemVyOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50
KEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVycm9ycykKK0hUTUxUb2tlbml6
ZXJTdGF0ZTo6U3RhdGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiB7CiAgICAgaWYgKCFjb250ZXh0RWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogCiAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgY29udGV4dFRhZyA9IGNvbnRleHRFbGVtZW50LT50YWdRTmFtZSgpOwogCiAgICAg
aWYgKGNvbnRleHRUYWcubWF0Y2hlcyh0aXRsZVRhZykgfHwgY29udGV4dFRhZy5tYXRjaGVzKHRl
eHRhcmVhVGFnKSkKLSAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlOwor
ICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZTsKICAgICBpZiAo
Y29udGV4dFRhZy5tYXRjaGVzKHN0eWxlVGFnKQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNo
ZXMoeG1wVGFnKQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoaWZyYW1lVGFnKQogICAg
ICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vZW1iZWRUYWcpICYmIEhUTUxUcmVlQnVpbGRl
cjo6cGx1Z2luc0VuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQog
ICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2NyaXB0VGFnKSAmJiBIVE1MVHJlZUJ1
aWxkZXI6OnNjcmlwdEVuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkp
KQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMobm9mcmFtZXNUYWcpKQotICAgICAgICBy
ZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlIDogSFRNTFRv
a2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBI
VE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRTdGF0ZSA6IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExB
SU5URVhUU3RhdGU7CiAgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcpKQotICAg
ICAgICByZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRl
IDogSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgICAgIHJldHVybiByZXBvcnRF
cnJvcnMgPyBIVE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFTdGF0ZSA6IEhUTUxUb2tlbml6
ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGU7CiAgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhwbGFp
bnRleHRUYWcpKQotICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7
Ci0gICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKyAgICAgICAgcmV0dXJuIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGU7CisgICAgcmV0dXJuIEhUTUxUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlOwogfQogCiB9IC8vIG5hbWVzcGFjZQpAQCAtMjg4LDcgKzI4OCw3
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9k
ZSBtb2RlKQogICAgICAgICBtX3BhcnNlclNjaGVkdWxlci0+c2NoZWR1bGVGb3JSZXN1bWUoKTsK
IAogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG9r
ZW5pemVyLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIEFT
U0VSVChtX3Rva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewogICAgICAgICAgICAgbV9wcmVs
b2FkU2Nhbm5lciA9IGFkb3B0UHRyKG5ldyBIVE1MUHJlbG9hZFNjYW5uZXIoZG9jdW1lbnQoKSkp
OwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJy
ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcApp
bmRleCA2ZDU3ZWVhZTFkODkwZGRkMzFmM2ZjMzczYTRmNTA4NzkxMjZjYjcwLi5kZmQ3NmM2M2Yy
ODVhOGI5N2UwZjZjMWI4MGY1NjRiMGI5NzA2MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhU
TUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIk1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC00Niw4ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY29uc3QgVUNoYXIgSFRNTFRv
a2VuaXplcjo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlciA9IDA7Ci0K
IG5hbWVzcGFjZSB7CiAKIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKQEAgLTU3
LDIzICs1Niw2IEBAIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKICAgICByZXR1
cm4gY2MgKyBsb3dlckNhc2VPZmZzZXQ7CiB9CiAKLWlubGluZSBib29sIGlzVG9rZW5pemVyV2hp
dGVzcGFjZShVQ2hhciBjYykKLXsKLSAgICByZXR1cm4gY2MgPT0gJyAnIHx8IGNjID09ICdceDBB
JyB8fCBjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEMnOwotfQotCi1pbmxpbmUgdm9pZCBhZHZh
bmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBj
b25zdCBjaGFyKiBleHBlY3RlZENoYXJhY3RlcnMpCi17Ci0gICAgd2hpbGUgKCpleHBlY3RlZENo
YXJhY3RlcnMpCi0gICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKCpl
eHBlY3RlZENoYXJhY3RlcnMrKyk7Ci19Ci0KLWlubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRB
U1NFUlQoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFj
dGVycykKLXsKLSAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKLSAgICAgICAgc291cmNl
LmFkdmFuY2VBbmRBU1NFUlQoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKLX0KLQogaW5saW5lIGJv
b2wgdmVjdG9yRXF1YWxzU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgMzI+JiB2ZWN0b3IsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmICh2ZWN0b3Iuc2l6ZSgpICE9IHN0cmluZy5s
ZW5ndGgoKSkKQEAgLTg0LDE3ICs2NiwxNyBAQCBpbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJp
bmcoY29uc3QgVmVjdG9yPFVDaGFyLCAzMj4mIHZlY3RvciwgY29uc3QgU3RyaW5nJiBzdAogICAg
IHJldHVybiAhbWVtY21wKHN0cmluZ0RhdGEsIHZlY3RvckRhdGEsIHZlY3Rvci5zaXplKCkgKiBz
aXplb2YoVUNoYXIpKTsKIH0KIAotaW5saW5lIGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShI
VE1MVG9rZW5pemVyOjpTdGF0ZSBzdGF0ZSkKK2lubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5n
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSBzdGF0ZSkKIHsKICAgICBzd2l0Y2ggKHN0
YXRlKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5pemVyOjpSQ0RBVEFFbmRUYWdPcGVuU3RhdGU6Ci0g
ICAgY2FzZSBIVE1MVG9rZW5pemVyOjpSQ0RBVEFFbmRUYWdOYW1lU3RhdGU6Ci0gICAgY2FzZSBI
VE1MVG9rZW5pemVyOjpSQVdURVhURW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgSFRNTFRva2Vu
aXplcjo6UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZToKLSAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlNj
cmlwdERhdGFFbmRUYWdPcGVuU3RhdGU6Ci0gICAgY2FzZSBIVE1MVG9rZW5pemVyOjpTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlOgotICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdPcGVuU3RhdGU6Ci0gICAgY2FzZSBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRh
RXNjYXBlZEVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNE
QVRBRW5kVGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFF
bmRUYWdOYW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRFbmRU
YWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRFbmRUYWdO
YW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFFbmRUYWdP
cGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFFbmRUYWdO
YW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRh
RXNjYXBlZEVuZFRhZ05hbWVTdGF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyLDEwICs4NCwxNCBAQCBpbmxpbmUgYm9v
bCBpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKEhUTUxUb2tlbml6ZXI6OlN0YXRlIHN0YXRlKQogfQog
CiB9CisgICAgCisjZGVmaW5lIEhUTUxfQkVHSU5fU1RBVEUoc3RhdGVOYW1lKSBCRUdJTl9TVEFU
RShIVE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRNTF9SRUNPTlNVTUVf
SU4oc3RhdGVOYW1lKSBSRUNPTlNVTUVfSU4oSFRNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUp
CisjZGVmaW5lIEhUTUxfQURWQU5DRV9UTyhzdGF0ZU5hbWUpIEFEVkFOQ0VfVE8oSFRNTFRva2Vu
aXplclN0YXRlLCBzdGF0ZU5hbWUpCisjZGVmaW5lIEhUTUxfU1dJVENIX1RPKHN0YXRlTmFtZSkg
U1dJVENIX1RPKEhUTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQogCiBIVE1MVG9rZW5pemVy
OjpIVE1MVG9rZW5pemVyKGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCi0gICAgOiBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yKHRoaXMpCi0gICAgLCBtX3VzZVByZUhUTUw1UGFyc2VyUXVp
cmtzKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQorICAgIDogbV91c2VQcmVIVE1MNVBhcnNlclF1
aXJrcyh1c2VQcmVIVE1MNVBhcnNlclF1aXJrcykKIHsKICAgICByZXNldCgpOwogfQpAQCAtMTE0
LDkgKzEwMCwyMCBAQCBIVE1MVG9rZW5pemVyOjp+SFRNTFRva2VuaXplcigpCiB7CiB9CiAKK3Rl
bXBsYXRlPD4KK2lubGluZSBib29sIE1hcmt1cFRva2VuaXplckJhc2U8SFRNTFRva2VuLCBIVE1M
VG9rZW5pemVyU3RhdGU+OjpzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdAoreworICAg
IHJldHVybiAhbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudAorICAgICAgICAmJiAobV9z
dGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZQorICAgICAgICAgICAgfHwgbV9z
dGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlCisgICAgICAgICAgICB8fCBt
X3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlCisgICAgICAgICAgICB8
fCBtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOworfQorCisK
IHZvaWQgSFRNTFRva2VuaXplcjo6cmVzZXQoKQogewotICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7
CisgICAgbV9zdGF0ZSA9IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlOwogICAgIG1fdG9r
ZW4gPSAwOwogICAgIG1fbGluZU51bWJlciA9IDA7CiAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVG
b3JMaXN0aW5nID0gZmFsc2U7CkBAIC0xNDMsODggKzE0MCw2IEBAIGlubGluZSBib29sIEhUTUxU
b2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLSNpZiBDT01QSUxFUihNU1ZDKQotLy8gV2UgbmVlZCB0byBkaXNhYmxl
IHRoZSAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBiZWNhdXNlIHdlIHdhbnQgdG8gYXNzZXJ0
Ci0vLyB0aGF0IHNvbWUgY29kZSBwb2ludHMgYXJlbid0IHJlYWNoZWQgaW4gdGhlIHN0YXRlIG1h
Y2hpbmUuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMikKLSNlbmRpZgotCi0jZGVmaW5l
IEJFR0lOX1NUQVRFKHN0YXRlTmFtZSkgY2FzZSBzdGF0ZU5hbWU6IHN0YXRlTmFtZToKLSNkZWZp
bmUgRU5EX1NUQVRFKCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOwotCi0vLyBXZSB1c2Ug
dGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgInJlY29uc3VtZSB0aGUgY3VycmVu
dCBpbnB1dAotLy8gY2hhcmFjdGVyIGluIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCi0jZGVmaW5lIFJF
Q09OU1VNRV9JTihzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5h
bWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLS8vIFdlIHVzZSB0aGlzIG1h
Y3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAiY29uc3VtZSB0aGUgbmV4dCBpbnB1dAotLy8g
Y2hhcmFjdGVyIC4uLiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCi0jZGVmaW5l
IEFEVkFOQ0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0
ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIGlmICghbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwgbV9s
aW5lTnVtYmVyKSkgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0gbV9p
bnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLS8vIFNvbWV0
aW1lcyB0aGVyZSdzIG1vcmUgY29tcGxpY2F0ZWQgbG9naWMgaW4gdGhlIHNwZWMgdGhhdCBzZXBh
cmF0ZXMgd2hlbgotLy8gd2UgY29uc3VtZSB0aGUgbmV4dCBpbnB1dCBjaGFyYWN0ZXIgYW5kIHdo
ZW4gd2Ugc3dpdGNoIHRvIGEgcGFydGljdWxhcgotLy8gc3RhdGUuIFdlIGhhbmRsZSB0aG9zZSBj
YXNlcyBieSBhZHZhbmNpbmcgdGhlIHNvdXJjZSBkaXJlY3RseSBhbmQgdXNpbmcKLS8vIHRoaXMg
bWFjcm8gdG8gc3dpdGNoIHRvIHRoZSBpbmRpY2F0ZWQgc3RhdGUuCi0jZGVmaW5lIFNXSVRDSF9U
TyhzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlm
IChzb3VyY2UuaXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291
cmNlLCBtX2xpbmVOdW1iZXIpKSBcCi0gICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hh
cmFjdGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNjID0g
bV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgICAgICAg
ICAgICBcCi0gICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLQotaW5s
aW5lIHZvaWQgSFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpCi17Ci0gICAg
QVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7
Ci0gICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCi0g
ICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwotfQotCi0v
LyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgIkVtaXQgdGhl
IGN1cnJlbnQgPG11bWJsZT4KLS8vIHRva2VuLiBTd2l0Y2ggdG8gdGhlIDxtdW1ibGU+IHN0YXRl
LiIgIFdlIHVzZSB0aGUgd29yZCAicmVzdW1lIiBpbnN0ZWFkIG9mCi0vLyBzd2l0Y2ggdG8gaW5k
aWNhdGUgdGhhdCB0aGlzIG1hY3JvIGFjdHVhbGx5IHJldHVybnMgYW5kIHRoYXQgd2UnbGwgZW5k
IHVwCi0vLyBpbiB0aGUgc3RhdGUgd2hlbiB3ZSAicmVzdW1lIiAoaS5lLiwgYXJlIGNhbGxlZCBh
Z2FpbikuCi1ib29sIEhUTUxUb2tlbml6ZXI6OmVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSwgU3RhdGUgc3RhdGUpCi17Ci0gICAgbV9zdGF0ZSA9IHN0YXRlOwotICAgIHNv
dXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7Ci0gICAgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBJZGVudGljYWwgdG8gZW1pdEFuZFJlc3VtZUlu
LCBleGNlcHQgZG9lcyBub3QgYWR2YW5jZS4KLWJvb2wgSFRNTFRva2VuaXplcjo6ZW1pdEFuZFJl
Y29uc3VtZUluKFNlZ21lbnRlZFN0cmluZyYsIFN0YXRlIHN0YXRlKQotewotICAgIG1fc3RhdGUg
PSBzdGF0ZTsKLSAgICBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLS8vIFVzZWQgdG8gZW1pdCB0aGUgRW5kT2ZGaWxlIHRva2VuLgotLy8gQ2hlY2sgaWYg
d2UgaGF2ZSBidWZmZXJlZCBjaGFyYWN0ZXJzIHRvIGVtaXQgZmlyc3QgYmVmb3JlIGVtaXR0aW5n
IHRoZSBFT0YuCi1ib29sIEhUTUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UpCi17Ci0gICAgaWYgKGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgc291cmNl
LmFkdmFuY2UobV9saW5lTnVtYmVyKTsKLSAgICBtX3Rva2VuLT5jbGVhcigpOwotICAgIG1fdG9r
ZW4tPm1ha2VFbmRPZkZpbGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBIVE1MVG9r
ZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewog
ICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8
fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwpAQCAt
MjM4LDcgKzE1Myw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIAogI2RlZmluZSBGTFVTSF9BTkRfQURWQU5DRV9UTyhz
dGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gSFRNTFRv
a2VuaXplclN0YXRlOjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICBpZiAoZmx1c2hCdWZmZXJlZEVuZFRhZyhzb3VyY2UpKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc291cmNl
LmlzRW1wdHkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApAQCAtMjQ4LDcgKzE2Myw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVu
ZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9
IHdoaWxlIChmYWxzZSkKIAotYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEVtaXRBbmRSZXN1bWVJ
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgU3RhdGUgc3RhdGUpCitib29sIEhUTUxUb2tlbml6
ZXI6OmZsdXNoRW1pdEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OlN0YXRlIHN0YXRlKQogewogICAgIG1fc3RhdGUgPSBzdGF0ZTsKICAgICBm
bHVzaEJ1ZmZlcmVkRW5kVGFnKHNvdXJjZSk7CkBAIC0yNjcsNyArMTgyLDcgQEAgYm9vbCBIVE1M
VG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgIC8vIFdlIHN0YXJ0ZWQgYW4gZW5kIHRhZyBkdXJpbmcgb3VyIGxhc3Qg
aXRlcmF0aW9uLgogICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFn
TmFtZSk7CiAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgIGlm
IChtX3N0YXRlID09IERhdGFTdGF0ZSkgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSkgewogICAgICAgICAgICAgLy8gV2UncmUgYmFjayBpbiB0
aGUgZGF0YSBzdGF0ZSwgc28gd2UgbXVzdCBiZSBkb25lIHdpdGggdGhlIHRhZy4KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yOTEsMjA1ICsyMDYsMjA1IEBAIGJvb2wg
SFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9r
ZW4mIHRva2VuKQogICAgIGlmIChtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcpIHsKICAg
ICAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7CiAgICAgICAgIGlm
IChjYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUpCi0g
ICAgICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwotICAgICAgICAgICAgaWYgKG1f
c3RhdGUgPT0gUkNEQVRBU3RhdGUpCi0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFT
dGF0ZSk7CisgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSkKKyAgICAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAg
ICAgICAgICAgIGlmIChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUp
CisgICAgICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKICAgICAgICAg
ICAgIC8vIFdoZW4gcGFyc2luZyB0ZXh0L3BsYWluIGRvY3VtZW50cywgd2UgcnVuIHRoZSB0b2tl
bml6ZXIgaW4gdGhlCiAgICAgICAgICAgICAvLyBQTEFJTlRFWFRTdGF0ZSBhbmQgaWdub3JlIG1f
c2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZy4KLSAgICAgICAgICAgIEFTU0VSVChtX3N0YXRl
ID09IFBMQUlOVEVYVFN0YXRlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IEhUTUxU
b2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gU291cmNlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyN0b2tlbmlzYXRpb24wCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgQkVHSU5fU1RB
VEUoRGF0YVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKICAgICAg
ICAgaWYgKGNjID09ICcmJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJl
bmNlSW5EYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJl
ZmVyZW5jZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAg
ICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
IHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2Vu
cyBxdWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXpp
bHkgaGVyZS4KICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhUYWdPcGVuU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4gZW1p
dEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRl
KSB7CiAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQogICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIFNXSVRDSF9UTyhEYXRh
U3RhdGUpOworICAgICAgICBIVE1MX1NXSVRDSF9UTyhEYXRhU3RhdGUpOwogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkNEQVRBU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKFJDREFUQVN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFU
QUxlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFM
ZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rl
cihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3Rh
dGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3Rh
dGUpIHsKICAgICAgICAgaWYgKCFwcm9jZXNzRW50aXR5KHNvdXJjZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgU1dJVENIX1RPKFJD
REFUQVN0YXRlKTsKKyAgICAgICAgSFRNTF9TV0lUQ0hfVE8oUkNEQVRBU3RhdGUpOwogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVFN0YXRlKSB7CisgICAg
SFRNTF9CRUdJTl9TVEFURShSQVdURVhUU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc8JykK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpOwogICAgICAg
ICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KQogICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRT
dGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKFNjcmlwdERhdGFTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0
YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVy
biBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShQTEFJTlRFWFRT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoUExBSU5URVhUU3RhdGUpIHsKICAgICAgICAg
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVY
VFN0YXRlKTsKKyAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoVGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnIScp
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRW5kVGFn
T3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwogICAgICAgICAgICAgLy8gVGhlIHNwZWMgY29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVy
IGJlZm9yZSBzd2l0Y2hpbmcKICAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0
YXRlLCBidXQgaXQncyBlYXNpZXIgdG8gaW1wbGVtZW50CiAgICAgICAgICAgICAvLyBpZiB3ZSBy
ZWNvbnN1bWUgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgotICAgICAgICAgICAgUkVDT05TVU1FX0lO
KEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJvZ3Vz
Q29tbWVudFN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFU
RShFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0
ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5FbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
VGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPmJlZ2luRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0Nv
bW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRT
dGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKFRhZ05hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoVGFnTmFtZVN0YXRlKSB7
CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09
ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVs
c2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb05hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFJDREFUQUxlc3NUaGFu
U2lnblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQ0RBVEFMZXNzVGhhblNpZ25TdGF0
ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlz
RW1wdHkoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ09wZW5TdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBl
cihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAg
ICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FT
Q0lJTG93ZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwogICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcvJyk7
Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9SRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNB
U0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNj
KTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQpAQCAtNDk5LDU1ICs0MTQsNTUgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCcv
Jyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1
ZmZlcik7CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
Ci0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09
ICcvJykgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAg
ICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhSQVdURVhURW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhSQVdURVhURW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJB
V1RFWFRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShS
QVdURVhURW5kVGFnT3BlblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQVdURVhURW5k
VGFnT3BlblN0YXRlKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhU
RW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7
CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAg
YWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRFbmRU
YWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFj
dGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVf
SU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5f
U1RBVEUoUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVy
KGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAg
ICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNB
U0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNj
KTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKQEAgLTU1Nyw1OSArNDcyLDU5IEBAIGJvb2wgSFRNTFRv
a2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1M
VG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwog
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIp
OwogICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVf
SU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShTY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICcvJykgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAg
ICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnIScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCchJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHRE
YXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRl
KTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0
RGF0YUVuZFRhZ09wZW5TdGF0ZSkgewogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewog
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJ
SUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsK
ICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KCcvJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdO
YW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdOYW1lU3Rh
dGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRU
YWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVu
ZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVu
ZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoaXNUb2tl
bml6ZXJXaGl0ZXNwYWNlKGNjKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCkBAIC02MTksMTM2ICs1MzQsMTM2IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Zmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmx1c2hFbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignLycpOwogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAg
ICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScp
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSkgewog
ICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERh
dGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUp
OwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVz
Y2FwZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRTdGF0
ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAg
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hT
dGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUp
IHsKICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hE
YXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBl
ZERhc2hEYXNoU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVk
RGFzaERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNj
YXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExl
c3NUaGFuU2lnblN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJl
ZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0FT
Q0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKICAgICAg
ICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5jbGVhcigpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJD
YXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVT
dGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkg
ewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJD
aGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRh
Z09wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRU
YWdPcGVuU3RhdGUpIHsKICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
aXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KGNjKTsKICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAg
ICAgICBidWZmZXJDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlw
dERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSkgeworICAg
IEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpIHsKICAg
ICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJD
YXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkg
ewogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAg
IGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQpAQCAtNzU4LDI5OSArNjczLDI5OSBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4n
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKCc8Jyk7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Jy8nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5
QnVmZmVyKTsKICAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVTdGFydFN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcihjYyk7CiAgICAgICAgICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxv
Y2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChp
c0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgewogICAgICAgICAgICAg
YnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVu
ZChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFy
dFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNj
YXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4o
U2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJ
Tl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9
PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNo
U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFz
aFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckNo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PCcpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWdu
U3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29y
OjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVf
SU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJ
Tl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSkgewogICAg
ICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
RGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAg
ICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJy8nKSB7
CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlRW5kU3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0
YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3Rh
dGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykgfHwgY2MgPT0gJy8n
IHx8IGNjID09ICc+JykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAg
ICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQotICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykp
IHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzQVNDSUlMb3dlcihjYykpIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7
CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZWRTdGF0ZSk7CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0
dHJpYnV0ZU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3Np
bmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNj
ID09ICc8JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBE
YXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJ
SVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyIn
IHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZD
aGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZU5hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0
ZU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7
CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICBt
X3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0
dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz0nKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1l
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5u
dW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykgewogICAg
ICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0
ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRy
aWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFt
ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnND
b25zdW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2Mg
PT0gJz0nKQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRl
TmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQotICAg
ICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmICht
X3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAg
bV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0
dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwn
KQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFk
ZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVOYW1l
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRl
TmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFs
dWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFs
dWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgbV90
b2tlbi0+YmVnaW5BdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3Vt
ZWQoKSArIDEpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1
b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURv
dWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFj
dGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVl
VW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihBdHRyaWJ1dGVW
YWx1ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAg
ICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkgKyAxKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0
cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAn
PScgfHwgY2MgPT0gJ2AnKQogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVy
c0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0
YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RB
VEUoQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RB
VEUoQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0g
JyInKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVt
YmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVy
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
QWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnJicpIHsKICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnIic7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFs
dWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNl
SW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVt
YmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVl
KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVR
dW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICdcJycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNv
dXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICcmJykgewogICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rl
ciA9ICdcJyc7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0
cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVy
UmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShz
b3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBSRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5n
bGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFs
dWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRB
dHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFy
YWN0ZXIgPSAnPic7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUlu
QXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ2hhcmFj
dGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPicpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJj
ZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFy
a2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5l
bmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0g
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
Y2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9
PSAnYCcpCiAgICAgICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
QXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVW
YWx1ZVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0
dHJpYnV0ZVZhbHVlU3RhdGUpIHsKICAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0g
ZmFsc2U7CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+IGRlY29kZWRFbnRpdHk7CiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IGNvbnN1bWVIVE1MRW50aXR5KHNvdXJjZSwgZGVjb2RlZEVudGl0eSwg
bm90RW5vdWdoQ2hhcmFjdGVycywgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlcik7CkBAIC0x
MDY5LDY4ICs5ODQsNjggQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIC8vIGtlZXBpbmcgdHJh
Y2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0aGUgcHJldmlvdXMKICAgICAg
ICAgLy8gc3RhdGUgY2FuIGJlIGRldGVybWluZWQgYnkgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3Rlci4KICAgICAgICAgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyInKQot
ICAgICAgICAgICAgU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9TV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0
ZSk7CiAgICAgICAgIGVsc2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wn
JykKLSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVk
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09
ICc+JykKLSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9TV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVl
UXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlVmFsdWVR
dW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICBl
bHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3Rh
cnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwogICAgICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8
JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCZWZvcmVBdHRy
aWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAg
ICBCRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lO
X1NUQVRFKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4n
KSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTZWxmQ2xvc2luZygpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQm9ndXND
b21tZW50U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJvZ3VzQ29tbWVudFN0YXRlKSB7
CiAgICAgICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICBSRUNPTlNVTUVfSU4o
Q29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKENv
bnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAg
QkVHSU5fU1RBVEUoQ29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5f
U1RBVEUoQ29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4n
KQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShNYXJrdXBEZWNs
YXJhdGlvbk9wZW5TdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRp
b25PcGVuU3RhdGUpIHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hE
YXNoU3RyaW5nLCAoIi0tIikpOwogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
ZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikpOwogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY2RhdGFTdHJpbmcsICgiW0NEQVRBWyIpKTsKQEAgLTExNDAsMTk5ICsxMDU1LDE5
OSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFT
U0VSVCgnLScpOwogICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7
CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7Ci0gICAgICAgICAgICAg
ICAgU1dJVENIX1RPKENvbW1lbnRTdGFydFN0YXRlKTsKKyAgICAgICAgICAgICAgICBIVE1MX1NX
SVRDSF9UTyhDb21tZW50U3RhcnRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJ0QnIHx8IGNjID09ICdkJykgewogICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5n
OjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShk
b2N0eXBlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpEaWRNYXRjaCkgewogICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25v
cmluZ0Nhc2Uoc291cmNlLCAiZG9jdHlwZSIpOwotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhE
T0NUWVBFU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKERPQ1RZUEVTdGF0
ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5v
dEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1snICYmIHNob3VsZEFs
bG93Q0RBVEEoKSkgewogICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1
bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChjZGF0YVN0cmluZyk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAg
ICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIltDREFUQVsiKTsKLSAgICAgICAgICAg
ICAgICBTV0lUQ0hfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxf
U1dJVENIX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgfQogICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0
ZSk7CisgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydFN0YXRlKSB7
CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50U3RhcnRTdGF0ZSkgewogICAgICAgICBpZiAo
Y2MgPT0gJy0nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhcnREYXNoU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUp
OworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tl
bml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVu
dFN0YXJ0RGFzaFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50U3RhcnREYXNo
U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5k
U3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRT
dGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0
YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7
CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0g
Jy0nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShD
b21tZW50RW5kU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkg
ewogICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnIScpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudEVuZEJhbmdTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQ29tbWVudEVuZEJhbmdTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0n
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5nU3RhdGUpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5nU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09
ICctJykgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50
RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kRGFz
aFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZp
bGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQ
RVN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFU3RhdGUpIHsKICAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9y
ZURPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3Vt
ZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25z
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9J
TihCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhU
TUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9D
VFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQ
RU5hbWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9D
VFlQRSgpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZv
cmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJj
ZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NU
WVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAg
QkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9D
VFlQRU5hbWVTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQVND
SUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2Vy
Q2FzZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7
CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2Us
IERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJj
ZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQ
RU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJF
R0lOX1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUo
QWZ0ZXJET0NUWVBFTmFtZVN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3Bh
Y2UoY2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAg
ICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKICAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzeXN0ZW1TdHJpbmcsICgic3lz
dGVtIikpOwpAQCAtMTM0MCwzMDEgKzEyNTUsMzAxIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJj
ZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UocHVibGljU3RyaW5nKTsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAg
ICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMi
KTsKLSAgICAgICAgICAgICAgICAgICAgU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdv
cmRTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQ
RVB1YmxpY0tleXdvcmRTdGF0ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQg
PT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNjID09ICdzJykgewogICAgICAgICAgICAgICAgIFNlZ21l
bnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25v
cmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0
cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKLSAgICAgICAgICAg
ICAgICAgICAgU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CisgICAg
ICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRT
dGF0ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGF2
ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0
ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRl
KSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1
b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRl
bnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcn
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQ
dWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhE
T0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQ
RVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJl
Zm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJl
Zm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9
PSAnIicpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVy
RG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICdcJycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJyInKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJ
ZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICdcJycp
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0
ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRp
ZmllclN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1Ymxp
Y0lkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRl
bnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhE
T0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGlj
SWRlbnRpZmllclN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyU3RhdGUpIHsKICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
YykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVt
SWRlbnRpZmllcnNTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmV0d2VlbkRP
Q1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIERh
dGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50
aWZpZXJzU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJldHdlZW5ET0NUWVBFUHVibGlj
QW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSkgewogICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNB
bmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhC
ZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwogICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICciJykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJ1wnJykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRh
U3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdv
cmRTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29y
ZFN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0
cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRv
dWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnXCcnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0
YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3Vz
RE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lO
X1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKICAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9y
ZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBpZiAoY2Mg
PT0gJyInKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9F
bXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1f
dG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VR
dWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBE
YXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtz
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICciJykK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRl
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVt
SWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9CiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFU3lz
dGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnXCcn
KQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIERhdGFTdGF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0
ZW1JZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSkgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lz
dGVtSWRlbnRpZmllclN0YXRlKSB7CiAgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBEYXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJv
Z3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoQm9ndXNET0NUWVBFU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KEJvZ3VzRE9DVFlQRVN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgRGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgRGF0YVN0YXRlKTsKLSAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NU
WVBFU3RhdGUpOwogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ0RB
VEFTZWN0aW9uU3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvblN0YXRl
KSB7CiAgICAgICAgIGlmIChjYyA9PSAnXScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENEQVRB
U2VjdGlvblJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhDREFUQVNlY3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCi0gICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05T
VU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOwor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAg
fQogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9u
UmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2Vj
dGlvblJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnXScpCi0g
ICAgICAgICAgICBBRFZBTkNFX1RPKENEQVRBU2VjdGlvbkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tl
dFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDREFUQVNlY3Rpb25Eb3VibGVS
aWdodFNxdWFyZUJyYWNrZXRTdGF0ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKCddJyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQ0RBVEFTZWN0aW9u
U3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQ0RBVEFTZWN0aW9uU3RhdGUp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uRG91Ymxl
UmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2Vj
dGlvbkRvdWJsZVJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAn
PicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoJ10nKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignXScpOwotICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICAgICAgICAgIEhU
TUxfUkVDT05TVU1FX0lOKENEQVRBU2VjdGlvblN0YXRlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQpAQCAtMTY0OCwxOCArMTU2MywxOCBAQCBib29sIEhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHZv
aWQgSFRNTFRva2VuaXplcjo6dXBkYXRlU3RhdGVGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdO
YW1lLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKHRhZ05hbWUgPT0gdGV4dGFyZWFUYWcgfHwg
dGFnTmFtZSA9PSB0aXRsZVRhZykKLSAgICAgICAgc2V0U3RhdGUoUkNEQVRBU3RhdGUpOworICAg
ICAgICBzZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlKTsKICAgICBlbHNl
IGlmICh0YWdOYW1lID09IHBsYWludGV4dFRhZykKLSAgICAgICAgc2V0U3RhdGUoUExBSU5URVhU
U3RhdGUpOworICAgICAgICBzZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0
YXRlKTsKICAgICBlbHNlIGlmICh0YWdOYW1lID09IHNjcmlwdFRhZykKLSAgICAgICAgc2V0U3Rh
dGUoU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRl
OjpTY3JpcHREYXRhU3RhdGUpOwogICAgIGVsc2UgaWYgKHRhZ05hbWUgPT0gc3R5bGVUYWcKICAg
ICAgICAgfHwgdGFnTmFtZSA9PSBpZnJhbWVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSB4bXBU
YWcKICAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9lbWJlZFRhZyAmJiBIVE1MVHJlZUJ1aWxkZXI6
OnBsdWdpbnNFbmFibGVkKGZyYW1lKSkKICAgICAgICAgfHwgdGFnTmFtZSA9PSBub2ZyYW1lc1Rh
ZwogICAgICAgICB8fCAodGFnTmFtZSA9PSBub3NjcmlwdFRhZyAmJiBIVE1MVHJlZUJ1aWxkZXI6
OnNjcmlwdEVuYWJsZWQoZnJhbWUpKSkKLSAgICAgICAgc2V0U3RhdGUoUkFXVEVYVFN0YXRlKTsK
KyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwogfQog
CiBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjp0ZW1wb3JhcnlCdWZmZXJJcyhjb25zdCBTdHJp
bmcmIGV4cGVjdGVkU3RyaW5nKQpAQCAtMTY3OCwyMSArMTU5Myw5IEBAIGlubGluZSBib29sIEhU
TUxUb2tlbml6ZXI6OmlzQXBwcm9wcmlhdGVFbmRUYWcoKQogICAgIHJldHVybiBtX2J1ZmZlcmVk
RW5kVGFnTmFtZSA9PSBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKIH0KIAotaW5saW5lIHZvaWQg
SFRNTFRva2VuaXplcjo6YnVmZmVyQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICBB
U1NFUlQoY2hhcmFjdGVyICE9IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpOwotICAgIG1fdG9rZW4tPmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NoYXJhY3RlcihjaGFyYWN0ZXIpOwotfQotCiBpbmxpbmUgdm9pZCBIVE1MVG9r
ZW5pemVyOjpwYXJzZUVycm9yKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1pbmxp
bmUgYm9vbCBIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpCi17Ci0g
ICAgcmV0dXJuIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOwot
fQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKaW5kZXgg
ZmE0NWNiMjQzMTExNThlOWRmZmY5NGViN2I1NDJiYTgwZGIxM2ZjZS4uNDlhZjYwMTQ0YjlhNmVi
MzQ3YWI4MmJiODdjNzdmYzY3NmU3OWY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuaApAQCAtMjcsMjAgKzI3LDE1IEBACiAjaWZuZGVmIEhUTUxUb2tlbml6
ZXJfaAogI2RlZmluZSBIVE1MVG9rZW5pemVyX2gKIAorI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgor
I2luY2x1ZGUgIk1hcmt1cFRva2VuaXplckJhc2UuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBFbGVtZW50OwogY2xh
c3MgRnJhbWU7Ci1jbGFzcyBIVE1MVG9rZW47CiAKLWNsYXNzIEhUTUxUb2tlbml6ZXIgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbml6ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK2NsYXNzIEhUTUxUb2tlbml6ZXJTdGF0ZSB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0
ZSB7CiAgICAgICAgIERhdGFTdGF0ZSwKQEAgLTExOSw3ICsxMTQsMTIgQEAgcHVibGljOgogICAg
ICAgICBDREFUQVNlY3Rpb25SaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSwKICAgICAgICAgQ0RBVEFT
ZWN0aW9uRG91YmxlUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUsCiAgICAgfTsKK307CiAKK2NsYXNz
IEhUTUxUb2tlbml6ZXIgOiBwdWJsaWMgTWFya3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhU
TUxUb2tlbml6ZXJTdGF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbml6
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+IGNyZWF0ZShib29sIHVzZVByZUhUTUw1UGFyc2VyUXVp
cmtzKSB7IHJldHVybiBhZG9wdFB0cihuZXcgSFRNTFRva2VuaXplcih1c2VQcmVIVE1MNVBhcnNl
clF1aXJrcykpOyB9CiAgICAgfkhUTUxUb2tlbml6ZXIoKTsKIApAQCAtMTMwLDEyICsxMzAsNiBA
QCBwdWJsaWM6CiAgICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmlyc3QpLgogICAgIGJvb2wgbmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYsIEhUTUxUb2tlbiYpOwogCi0gICAgaW50IGxpbmVOdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KLSAgICBpbnQgY29sdW1uTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gMTsgfSAvLyBNYXRjaGVzIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
ci5oIGJlaGF2aW9yLgotCi0gICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
OyB9Ci0gICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0K
LQogICAgIC8vIFVwZGF0ZXMgdGhlIHRva2VuaXplcidzIHN0YXRlIGFjY29yZGluZyB0byB0aGUg
Z2l2ZW4gdGFnIG5hbWUuIFRoaXMgaXMKICAgICAvLyBhbiBhcHByb3hpbWF0aW9uIG9mIGhvdyB0
aGUgdHJlZSBidWlsZGVyIHdvdWxkIHVwZGF0ZSB0aGUgdG9rZW5pemVyJ3MKICAgICAvLyBzdGF0
ZS4gVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBhcHByb3hpbWF0aW5nIEhUTUwgdG9rZW5pemF0
aW9uLiBUbwpAQCAtMTYyLDExMiArMTU2LDI2IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEFs
bG93Q0RBVEEoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEFsbG93Q0RBVEE7IH0KICAgICB2b2lk
IHNldFNob3VsZEFsbG93Q0RBVEEoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZEFsbG93Q0RBVEEgPSB2
YWx1ZTsgfQogCi0gICAgYm9vbCBzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICFtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50Ci0gICAg
ICAgICAgICAmJiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUKLSAgICAgICAgICAgICAgICB8fCBtX3N0
YXRlID09IFJDREFUQVN0YXRlCi0gICAgICAgICAgICAgICAgfHwgbV9zdGF0ZSA9PSBSQVdURVhU
U3RhdGUKLSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlID09IFBMQUlOVEVYVFN0YXRlKTsKLSAg
ICB9Ci0KIHByaXZhdGU6Ci0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCi0gICAgY2xh
c3MgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcik7Ci0gICAgcHVibGljOgotICAgICAgICBJbnB1dFN0
cmVhbVByZXByb2Nlc3NvcihIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIpCi0gICAgICAgICAgICA6
IG1fdG9rZW5pemVyKHRva2VuaXplcikKLSAgICAgICAgICAgICwgbV9uZXh0SW5wdXRDaGFyYWN0
ZXIoJ1wwJykKLSAgICAgICAgICAgICwgbV9za2lwTmV4dE5ld0xpbmUoZmFsc2UpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIFVDaGFyIG5leHRJbnB1dENoYXJhY3RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dElucHV0Q2hhcmFjdGVyOyB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB3
aGV0aGVyIHdlIHN1Y2NlZWRlZCBpbiBwZWVraW5nIGF0IHRoZSBuZXh0IGNoYXJhY3Rlci4KLSAg
ICAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBmYWlsIHRvIHBlZWsgaXMgaWYgdGhlcmUgYXJl
IG5vIG1vcmUKLSAgICAgICAgLy8gY2hhcmFjdGVycyBpbiB8c291cmNlfCAoYWZ0ZXIgY29sbGFw
c2luZyBcclxuLCBldGMpLgotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGVlayhTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgaW50JiBsaW5lTnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgIFBl
ZWtBZ2FpbjoKLSAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJjZTsKLQot
ICAgICAgICAgICAgLy8gRXZlcnkgYnJhbmNoIGluIHRoaXMgZnVuY3Rpb24gaXMgZXhwZW5zaXZl
LCBzbyB3ZSBoYXZlIGEKLSAgICAgICAgICAgIC8vIGZhc3QtcmVqZWN0IGJyYW5jaCBmb3IgY2hh
cmFjdGVycyB0aGF0IGRvbid0IHJlcXVpcmUgc3BlY2lhbAotICAgICAgICAgICAgLy8gaGFuZGxp
bmcuIFBsZWFzZSBydW4gdGhlIHBhcnNlciBiZW5jaG1hcmsgd2hlbmV2ZXIgeW91IHRvdWNoCi0g
ICAgICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uLiBJdCdzIHZlcnkgaG90LgotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIHNwZWNpYWxDaGFyYWN0ZXJNYXNrID0gJ1xuJyB8ICdccicgfCAn
XDAnOwotICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyICYgfnNwZWNpYWxDaGFy
YWN0ZXJNYXNrKSB7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcbicgJiYgbV9za2lwTmV4dE5ld0xpbmUp
IHsKLSAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5ld2xpbmUobGluZU51bWJlcik7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xy
JykgewotICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gJ1xuJzsKLSAgICAg
ICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZSBzcGVjIGluZGljYXRlcyB0aGF0IHRoZSBzdXJyb2dhdGUgcGFp
ciByYW5nZSBhcyB3ZWxsIGFzCi0gICAgICAgICAgICAgICAgLy8gYSBudW1iZXIgb2Ygc3BlY2lm
aWMgY2hhcmFjdGVyIHZhbHVlcyBhcmUgcGFyc2UgZXJyb3JzIGFuZCBzaG91bGQgYmUgcmVwbGFj
ZWQKLSAgICAgICAgICAgICAgICAvLyBieSB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXZSBz
dXNwZWN0IHRoaXMgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHNwZWMgYXMgZG9pbmcKLSAgICAgICAg
ICAgICAgICAvLyB0aGF0IGZpbHRlcmluZyBicmVha3Mgc3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcg
YW5kIGNhdXNlcyB1cyBub3QgdG8gbWF0Y2ggTWluZWZpZWxkLgotICAgICAgICAgICAgICAgIGlm
IChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXDAnICYmICFzaG91bGRUcmVhdE51bGxBc0VuZE9m
RmlsZU1hcmtlcihzb3VyY2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuaXpl
ci0+c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gUGVla0FnYWluOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVy
ID0gMHhGRkZEOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZXJlIGFyZSBtb3JlIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgYWZ0ZXIgYWR2YW5jaW5nLgotICAg
ICAgICBib29sIGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGludCYgbGluZU51bWJl
cikKLSAgICAgICAgewotICAgICAgICAgICAgc291cmNlLmFkdmFuY2UobGluZU51bWJlcik7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gcGVlayhzb3VyY2UsIGxpbmVOdW1iZXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGVuZE9mRmlsZU1hcmtlcjsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgc2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJr
ZXIoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAmJiBzb3VyY2UubGVuZ3RoKCkgPT0gMTsKLSAgICAg
ICAgfQotCi0gICAgICAgIEhUTUxUb2tlbml6ZXIqIG1fdG9rZW5pemVyOwotCi0gICAgICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI25leHQt
aW5wdXQtY2hhcmFjdGVyCi0gICAgICAgIFVDaGFyIG1fbmV4dElucHV0Q2hhcmFjdGVyOwotICAg
ICAgICBib29sIG1fc2tpcE5leHROZXdMaW5lOwotICAgIH07Ci0KICAgICBIVE1MVG9rZW5pemVy
KGJvb2wgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpOwogCiAgICAgaW5saW5lIGJvb2wgcHJvY2Vz
c0VudGl0eShTZWdtZW50ZWRTdHJpbmcmKTsKIAogICAgIGlubGluZSB2b2lkIHBhcnNlRXJyb3Io
KTsKLSAgICBpbmxpbmUgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOwotICAgIGlubGluZSB2
b2lkIGJ1ZmZlckNvZGVQb2ludCh1bnNpZ25lZCk7CisgICAgCisgICAgaW5saW5lIGJvb2wgZW1p
dEFuZFJlc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpOwor
ICAgICAgICByZXR1cm4gTWFya3VwVG9rZW5pemVyQmFzZTxIVE1MVG9rZW4sIEhUTUxUb2tlbml6
ZXJTdGF0ZT46OmVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIHN0YXRlKTsKKyAgICB9CisgICAgCisg
ICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlY29uc3VtZUluKFNlZ21lbnRlZFN0cmluZyYgc291cmNl
LCBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgc2F2ZUVu
ZFRhZ05hbWVJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gTWFya3VwVG9rZW5pemVyQmFzZTxI
VE1MVG9rZW4sIEhUTUxUb2tlbml6ZXJTdGF0ZT46OmVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2Us
IHN0YXRlKTsKKyAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVzdW1lSW4oU2VnbWVu
dGVkU3RyaW5nJiwgU3RhdGUpOwotICAgIGlubGluZSBib29sIGVtaXRBbmRSZWNvbnN1bWVJbihT
ZWdtZW50ZWRTdHJpbmcmLCBTdGF0ZSk7Ci0gICAgaW5saW5lIGJvb2wgZW1pdEVuZE9mRmlsZShT
ZWdtZW50ZWRTdHJpbmcmKTsKLSAgICBpbmxpbmUgYm9vbCBmbHVzaEVtaXRBbmRSZXN1bWVJbihT
ZWdtZW50ZWRTdHJpbmcmLCBTdGF0ZSk7CisgICAgaW5saW5lIGJvb2wgZmx1c2hFbWl0QW5kUmVz
dW1lSW4oU2VnbWVudGVkU3RyaW5nJiwgSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSk7CiAKICAg
ICAvLyBSZXR1cm4gd2hldGhlciB3ZSBuZWVkIHRvIGVtaXQgYSBjaGFyYWN0ZXIgdG9rZW4gYmVm
b3JlIGRlYWxpbmcgd2l0aAogICAgIC8vIHRoZSBidWZmZXJlZCBlbmQgdGFnLgpAQCAtMjc4LDIy
ICsxODYsMTcgQEAgcHJpdmF0ZToKICAgICAvLyBrbm93IHdoZXRoZXIgdGhleSByZXByZXNlbnQg
ZW5kIHRhZ3Mgb3IgUkNEQVRBLCBldGMuIFRoZXNlCiAgICAgLy8gZnVuY3Rpb25zIGhlbHAgbWFu
YWdlIHRoZXNlIHN0YXRlLgogICAgIGlubGluZSB2b2lkIGFkZFRvUG9zc2libGVFbmRUYWcoVUNo
YXIgY2MpOwotICAgIGlubGluZSB2b2lkIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKTsKLSAgICBp
bmxpbmUgYm9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7Ci0KLSAgICBpbmxpbmUgYm9vbCBoYXZl
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogCi0gICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBpbmxp
bmUgdm9pZCBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAg
ICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKKyAgICAg
ICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOworICAgIH0K
KyAgICBpbmxpbmUgYm9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7CiAKICAgICBWZWN0b3I8VUNo
YXIsIDMyPiBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKIAotICAgIC8vIG1fdG9rZW4gaXMgb3du
ZWQgYnkgdGhlIGNhbGxlci4gSWYgbmV4dFRva2VuIGlzIG5vdCBvbiB0aGUgc3RhY2ssCi0gICAg
Ly8gdGhpcyBtZW1iZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVtb3J5Lgot
ICAgIEhUTUxUb2tlbiogbV90b2tlbjsKLSAgICBpbnQgbV9saW5lTnVtYmVyOwotCi0gICAgYm9v
bCBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3Rpbmc7Ci0gICAgYm9vbCBtX2ZvcmNlTnVsbENo
YXJhY3RlclJlcGxhY2VtZW50OwogICAgIGJvb2wgbV9zaG91bGRBbGxvd0NEQVRBOwogCiAgICAg
Ly8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGVt
cG9yYXJ5LWJ1ZmZlcgpAQCAtMzAzLDEyICsyMDYsNiBAQCBwcml2YXRlOgogICAgIC8vIHRva2Vu
IChlLmcuLCB3aGVuIGxleGluZyBzY3JpcHQpLiBXZSBidWZmZXIgdGhlIG5hbWUgb2YgdGhlIGVu
ZCB0YWcKICAgICAvLyB0b2tlbiBoZXJlIHNvIHdlIHJlbWVtYmVyIGl0IG5leHQgdGltZSB3ZSBy
ZS1lbnRlciB0aGUgdG9rZW5pemVyLgogICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fYnVmZmVyZWRF
bmRUYWdOYW1lOwotCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJhY3RlcgotICAgIFVDaGFyIG1f
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7Ci0KLSAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1z
dHJlYW0KLSAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOwogICAgIAogICAgIGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBiN2Vi
Y2U3OTU0MmU1Y2U0NTVhZTcyZDUxOTZlNDQ0NGIwZDYxYTcyLi4wM2EyNzMyYjRmZjdjM2ZjNGI5
MzhkNjM5NWNlMWY3NGJmMzdmYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBwbGFpbnRleHRUYWcpIHsKICAgICAgICAgcHJvY2Vzc0Zh
a2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVs
ZW1lbnQodG9rZW4pOwotICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlKTsKKyAgICAgICAgbV9wYXJzZXItPnRva2VuaXpl
cigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJ1dHRvblRhZykgewpA
QCAtOTM4LDcgKzkzOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdG
b3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAodG9rZW4ubmFtZSgpID09
IHRleHRhcmVhVGFnKSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7
CiAgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U2tpcExlYWRpbmdOZXdMaW5lRm9y
TGlzdGluZyh0cnVlKTsKLSAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIo
KS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIG1f
b3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgICAgICBtX2ZyYW1l
c2V0T2sgPSBmYWxzZTsKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZXh0TW9kZSk7CkBAIC0y
MjMwLDggKzIyMzAsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgLy8gc2VsZi1jbG9zaW5nIHNjcmlwdCB0
YWcgd2FzIGVuY291bnRlcmVkIGFuZCBwcmUtSFRNTDUgcGFyc2VyCiAgICAgICAgICAgICAvLyBx
dWlya3MgYXJlIGVuYWJsZWQuIFdlIG11c3Qgc2V0IHRoZSB0b2tlbml6ZXIncyBzdGF0ZSB0bwog
ICAgICAgICAgICAgLy8gRGF0YVN0YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2VuaXplciBkaWRu
J3QgaGF2ZSBhIGNoYW5jZSB0by4KLSAgICAgICAgICAgIEFTU0VSVChtX3BhcnNlci0+dG9rZW5p
emVyKCktPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlIHx8IG1fdXNlUHJlSFRN
TDVQYXJzZXJRdWlya3MpOwotICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRT
dGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICAgICAgQVNTRVJUKG1fcGFy
c2VyLT50b2tlbml6ZXIoKS0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSB8fCBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKTsKKyAgICAgICAgICAgIG1fcGFyc2VyLT50
b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+cG9wKCk7CkBAIC0yNzg1LDcgKzI3ODUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAg
IEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBt
X3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIo
KS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOworICAgIG1fcGFyc2VyLT50
b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CiAg
ICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAgICAgc2V0SW5z
ZXJ0aW9uTW9kZShUZXh0TW9kZSk7CiB9CkBAIC0yNzk0LDcgKzI3OTQsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBtX3Bh
cnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7
CisgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6
OlJBV1RFWFRTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlv
bk1vZGU7CiAgICAgc2V0SW5zZXJ0aW9uTW9kZShUZXh0TW9kZSk7CiB9CkBAIC0yODAzLDcgKzI4
MDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRTY3JpcHRFbGVtZW50KHRva2Vu
KTsKLSAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNj
cmlwdERhdGFTdGF0ZSk7CisgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1M
VG9rZW5pemVyU3RhdGU6OlNjcmlwdERhdGFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlv
bk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAKICAgICBUZXh0UG9zaXRpb24wIHBvc2l0aW9uID0g
bV9wYXJzZXItPnRleHRQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNjNiNTE2MDIxYTQyNDlmMzVjYjZkYTdm
ZTRhYWYyYzMyZjM4YWNlNi4uZWQ1NTQzZWM1MzY1M2UxYzk3ODhiNmZlYWQ1MGUwZmQyYjJjMzFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50
UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRG9jdW1lbnRQYXJzZXIo
ZG9jdW1lbnQsIGZhbHNlKQogICAgICwgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudChmYWxz
ZSkKIHsKLSAgICB0b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhU
U3RhdGUpOworICAgIHRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBM
QUlOVEVYVFN0YXRlKTsKIH0KIAogVGV4dERvY3VtZW50UGFyc2VyOjp+VGV4dERvY3VtZW50UGFy
c2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291
cmNlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNl
UGFyc2VyLmNwcAppbmRleCBkN2U2ZTNkZmM2ZDUzNzYwNDNjYTFhY2FiNzJmOWM1ZmEwMmYxYjM5
Li4zNDNiMjNjMjkwODJkMzQ3NDI2MDk1ODg1NmNjOTdjYWI4OGRlZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFRleHRWaWV3U291cmNlUGFyc2VyOjpU
ZXh0Vmlld1NvdXJjZVBhcnNlcihIVE1MVmlld1NvdXJjZURvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IEhUTUxWaWV3U291cmNlUGFyc2VyKGRvY3VtZW50KQogewotICAgIHRva2VuaXplcigpLT5z
ZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgdG9rZW5pemVyKCkt
PnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogfQogCiBUZXh0
Vmlld1NvdXJjZVBhcnNlcjo6flRleHRWaWV3U291cmNlUGFyc2VyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IGJkODNiMjNiZGU5M2RmZTU5ZGQ5
Y2JhYmFkODQ3YzMzMDM4ZTcxM2QuLjU0YmYyNmViN2ZiYWRjMzE5ZTA5YzczNmJhMGE0NTJlODY5
N2JiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5C
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaApA
QCAtNTcsNyArNTcsNyBAQCBjbGFzcyBNYXJrdXBUb2tlbkJhc2UgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1hcmt1cFRva2VuQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlU2V0OjpUeXBlIFR5cGU7CisgICAg
dHlwZWRlZiBUeXBlU2V0IFR5cGU7CiAKICAgICBjbGFzcyBSYW5nZSB7CiAgICAgcHVibGljOgpA
QCAtMjM5LDcgKzIzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFs
dWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwogICAgIH0KIAot
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHR5cGVuYW1lIFR5
cGU6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgYm9vbCBzZWxm
Q2xvc2luZygpIGNvbnN0CiAgICAgewpAQCAtMzY2LDcgKzM2Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyB3YW50IHRvIGVuZCB1cCB3aXRoIGEgY2xlYW5lciBpbnRlcmZhY2UgYmV0d2VlbiB0aGUg
dHdvIGNsYXNzZXMuCiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY0hUTUxUb2tlbjsKIAotICAgIFR5
cGUgbV90eXBlOworICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgbV90eXBlOwogICAgIFJhbmdlIG1f
cmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KICAgICBpbnQgbV9iYXNlT2Zmc2V0Owog
ICAgIERhdGFWZWN0b3IgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01h
cmt1cFRva2VuaXplckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDg5OTUyYmEwNDMxM2FiODNkZWVmMTAz
YzM2MTEzYmU5OWMzMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
YXJrdXBUb2tlbml6ZXJCYXNlX2gKKyNkZWZpbmUgTWFya3VwVG9rZW5pemVyQmFzZV9oCisKKyNp
bmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvLyBOZXZlciB1c2UgdGhpcyB0eXBlIGZvciBhIHZhcmlhYmxlLCBhcyBpdCBjb250YWlucyBz
ZXZlcmFsIG5vbi12aXJ0dWFsIGZ1bmN0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIFRva2VuLCB0
eXBlbmFtZSBTdGF0ZT4KK2NsYXNzIE1hcmt1cFRva2VuaXplckJhc2UgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1hcmt1cFRva2VuaXplckJhc2UpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfk1hcmt1cFRva2VuaXplckJhc2UoKSB7IH0K
KworICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9Cisg
ICAgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gTWF0Y2hlcyBMZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuaCBiZWhhdmlvci4KKworICAgIHR5cGVuYW1lIFN0YXRlOjpT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIHNldFN0YXRl
KHR5cGVuYW1lIFN0YXRlOjpTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KKworICAg
IGJvb2wgZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50OyB9CisgICAgdm9pZCBzZXRGb3JjZU51bGxDaGFy
YWN0ZXJSZXBsYWNlbWVudChib29sIHZhbHVlKSB7IG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFj
ZW1lbnQgPSB2YWx1ZTsgfQorCisgICAgLy8gVGhpcyBtZXRob2QgbmVlZHMgdG8gYmUgZGVmaW5l
ZCBpbiBhIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdoZW4gc3ViY2xhc3NpbmcgdGhpcyB0ZW1w
bGF0ZQorICAgIGlubGluZSBib29sIHNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgY2xhc3Mg
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcik7CisgICAgcHVibGljOgorICAgICAgICBJbnB1dFN0cmVh
bVByZXByb2Nlc3NvcihNYXJrdXBUb2tlbml6ZXJCYXNlPFRva2VuLCBTdGF0ZT4qIHRva2VuaXpl
cikKKyAgICAgICAgICAgIDogbV90b2tlbml6ZXIodG9rZW5pemVyKQorICAgICAgICAgICAgLCBt
X25leHRJbnB1dENoYXJhY3RlcignXDAnKQorICAgICAgICAgICAgLCBtX3NraXBOZXh0TmV3TGlu
ZShmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVUNoYXIgbmV4dElucHV0
Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7IH0KKworICAg
ICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgd2Ugc3VjY2VlZGVkIGluIHBlZWtpbmcgYXQgdGhlIG5l
eHQgY2hhcmFjdGVyLgorICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGZhaWwgdG8gcGVl
ayBpcyBpZiB0aGVyZSBhcmUgbm8gbW9yZQorICAgICAgICAvLyBjaGFyYWN0ZXJzIGluIHxzb3Vy
Y2V8IChhZnRlciBjb2xsYXBzaW5nIFxyXG4sIGV0YykuCisgICAgICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBwZWVrKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVOdW1iZXIpCisgICAg
ICAgIHsKKyAgICAgICAgUGVla0FnYWluOgorICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0
ZXIgPSAqc291cmNlOworCisgICAgICAgICAgICAvLyBFdmVyeSBicmFuY2ggaW4gdGhpcyBmdW5j
dGlvbiBpcyBleHBlbnNpdmUsIHNvIHdlIGhhdmUgYQorICAgICAgICAgICAgLy8gZmFzdC1yZWpl
Y3QgYnJhbmNoIGZvciBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBzcGVjaWFsCisgICAg
ICAgICAgICAvLyBoYW5kbGluZy4gUGxlYXNlIHJ1biB0aGUgcGFyc2VyIGJlbmNobWFyayB3aGVu
ZXZlciB5b3UgdG91Y2gKKyAgICAgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24uIEl0J3MgdmVyeSBo
b3QuCisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgc3BlY2lhbENoYXJhY3Rlck1hc2sg
PSAnXG4nIHwgJ1xyJyB8ICdcMCc7CisgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0
ZXIgJiB+c3BlY2lhbENoYXJhY3Rlck1hc2spIHsKKyAgICAgICAgICAgICAgICBtX3NraXBOZXh0
TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xuJyAmJiBt
X3NraXBOZXh0TmV3TGluZSkgeworICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0TmV3bGluZShsaW5lTnVt
YmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFj
dGVyID0gKnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX25leHRJbnB1
dENoYXJhY3RlciA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0
ZXIgPSAnXG4nOworICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQg
dGhlIHN1cnJvZ2F0ZSBwYWlyIHJhbmdlIGFzIHdlbGwgYXMKKyAgICAgICAgICAgICAgICAvLyBh
IG51bWJlciBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBlcnJvcnMgYW5k
IHNob3VsZCBiZSByZXBsYWNlZAorICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSByZXBsYWNlbWVu
dCBjaGFyYWN0ZXIuIFdlIHN1c3BlY3QgdGhpcyBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3BlYyBh
cyBkb2luZworICAgICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVyaW5nIGJyZWFrcyBzdXJyb2dh
dGUgcGFpciBoYW5kbGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBtYXRjaCBNaW5lZmllbGQuCisg
ICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcgJiYgIXNob3Vs
ZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fdG9rZW5pemVyLT5zaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBQ
ZWVrQWdhaW47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV9u
ZXh0SW5wdXRDaGFyYWN0ZXIgPSAweEZGRkQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBS
ZXR1cm5zIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8c291cmNlfCBhZnRl
ciBhZHZhbmNpbmcuCisgICAgICAgIGJvb2wgYWR2YW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgaW50JiBsaW5lTnVtYmVyKQorICAgICAgICB7CisgICAgICAgICAgICBzb3VyY2UuYWR2YW5j
ZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBwZWVrKHNvdXJjZSwg
bGluZU51bWJlcik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZW5k
T2ZGaWxlTWFya2VyID0gMDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgc2hvdWxkVHJl
YXROdWxsQXNFbmRPZkZpbGVNYXJrZXIoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAmJiBzb3VyY2Uu
bGVuZ3RoKCkgPT0gMTsKKyAgICAgICAgfQorCisgICAgICAgIE1hcmt1cFRva2VuaXplckJhc2U8
VG9rZW4sIFN0YXRlPiogbV90b2tlbml6ZXI7CisKKyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1jaGFyYWN0ZXIK
KyAgICAgICAgVUNoYXIgbV9uZXh0SW5wdXRDaGFyYWN0ZXI7CisgICAgICAgIGJvb2wgbV9za2lw
TmV4dE5ld0xpbmU7CisgICAgfTsKKworICAgIE1hcmt1cFRva2VuaXplckJhc2UoKSA6IG1faW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IodGhpcykgeyByZXNldCgpOyB9CisKKyAgICBpbmxpbmUgdm9p
ZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNoYXJhY3RlciAhPSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKTsK
KyAgICAgICAgbV90b2tlbi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgIH0KKworICAgIGlubGluZSB2
b2lkIGJ1ZmZlckNvZGVQb2ludCh1bnNpZ25lZCk7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBjYW4g
Z2V0IGhpZGRlbiBpbiBzdWJjbGFzc2VzCisgICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlc3VtZUlu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCB0eXBlbmFtZSBTdGF0ZTo6U3RhdGUgc3RhdGUpCisg
ICAgeworICAgICAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1f
bGluZU51bWJlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBU
aGlzIG1ldGhvZCBjYW4gZ2V0IGhpZGRlbiBpbiBzdWJjbGFzc2VzCisgICAgaW5saW5lIGJvb2wg
ZW1pdEFuZFJlY29uc3VtZUluKFNlZ21lbnRlZFN0cmluZyYsIHR5cGVuYW1lIFN0YXRlOjpTdGF0
ZSBzdGF0ZSkKKyAgICB7CisgICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgaW5saW5lIGJvb2wgZW1pdEVuZE9mRmlsZShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGlmIChoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RGF0YVN0YXRlOworICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOworICAg
ICAgICBtX3Rva2VuLT5jbGVhcigpOworICAgICAgICBtX3Rva2VuLT5tYWtlRW5kT2ZGaWxlKCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgcmVzZXQoKQorICAgIHsK
KyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpEYXRhU3RhdGU7CisgICAgICAgIG1fdG9rZW4gPSAw
OworICAgICAgICBtX2xpbmVOdW1iZXIgPSAwOworICAgIH0KKworICAgIGlubGluZSBib29sIGhh
dmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2Vu
LT50eXBlKCkgPT0gVG9rZW46OlR5cGU6OkNoYXJhY3RlcjsKKyAgICB9CisgICAgCisgICAgdHlw
ZW5hbWUgU3RhdGU6OlN0YXRlIG1fc3RhdGU7CisKKyAgICAvLyBtX3Rva2VuIGlzIG93bmVkIGJ5
IHRoZSBjYWxsZXIuIElmIG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0YWNrLAorICAgIC8vIHRo
aXMgbWVtYmVyIG1pZ2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBU
b2tlbiogbV90b2tlbjsKKyAgICBpbnQgbV9saW5lTnVtYmVyOworCisgICAgYm9vbCBtX3NraXBM
ZWFkaW5nTmV3TGluZUZvckxpc3Rpbmc7CisgICAgYm9vbCBtX2ZvcmNlTnVsbENoYXJhY3RlclJl
cGxhY2VtZW50OworCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJhY3RlcgorICAgIFVDaGFyIG1f
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7CisKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1z
dHJlYW0KKyAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOworfTsKKworfQorCisjZW5kaWYgLy8gTWFya3VwVG9rZW5pemVyQmFzZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhv
ZHMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0
aG9kcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllMzEzMTU3N2ZiODdjZjNmN2Y1MDZiMjE1YThjNDE5YzEwMzUw
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRv
a2VuaXplcklubGluZU1ldGhvZHMuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFya3Vw
VG9rZW5pemVySW5saW5lTWV0aG9kc19oCisjZGVmaW5lIE1hcmt1cFRva2VuaXplcklubGluZU1l
dGhvZHNfaAorCisjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworaW5saW5lIGJvb2wgaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKFVDaGFyIGNjKQorewor
ICAgIHJldHVybiBjYyA9PSAnICcgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQyc7Cit9CisKK2lubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25v
cmluZ0Nhc2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hh
cmFjdGVycykKK3sKKyAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKKyAgICAgICAgc291
cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsK
K30KKworaW5saW5lIHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgY29uc3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQoreworICAgIHdoaWxlICgq
ZXhwZWN0ZWRDaGFyYWN0ZXJzKQorICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgqZXhw
ZWN0ZWRDaGFyYWN0ZXJzKyspOworfQorCisjaWYgQ09NUElMRVIoTVNWQykKKy8vIFdlIG5lZWQg
dG8gZGlzYWJsZSB0aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50
IHRvIGFzc2VydAorLy8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRo
ZSBzdGF0ZSBtYWNoaW5lLgorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIpCisjZW5kaWYK
KworI2RlZmluZSBCRUdJTl9TVEFURShwcmVmaXgsIHN0YXRlTmFtZSkgY2FzZSBwcmVmaXg6OnN0
YXRlTmFtZTogc3RhdGVOYW1lOgorI2RlZmluZSBFTkRfU1RBVEUoKSBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgYnJlYWs7CisKKy8vIFdlIHVzZSB0aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMg
c2F5cyAicmVjb25zdW1lIHRoZSBjdXJyZW50IGlucHV0CisvLyBjaGFyYWN0ZXIgaW4gdGhlIDxt
dW1ibGU+IHN0YXRlLiIKKyNkZWZpbmUgUkVDT05TVU1FX0lOKHByZWZpeCwgc3RhdGVOYW1lKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgbV9zdGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworLy8gV2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJj
b25zdW1lIHRoZSBuZXh0IGlucHV0CisvLyBjaGFyYWN0ZXIgLi4uIGFuZCBzd2l0Y2ggdG8gdGhl
IDxtdW1ibGU+IHN0YXRlLiIKKyNkZWZpbmUgQURWQU5DRV9UTyhwcmVmaXgsIHN0YXRlTmFtZSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgbV9zdGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFtX2lucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yLmFkdmFuY2Uoc291cmNlLCBtX2xpbmVOdW1iZXIpKSAgICAgIFwKKyAgICAgICAgICAg
IHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1
dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworLy8gU29tZXRpbWVzIHRoZXJlJ3MgbW9yZSBjb21wbGljYXRlZCBs
b2dpYyBpbiB0aGUgc3BlYyB0aGF0IHNlcGFyYXRlcyB3aGVuCisvLyB3ZSBjb25zdW1lIHRoZSBu
ZXh0IGlucHV0IGNoYXJhY3RlciBhbmQgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBwYXJ0aWN1bGFyCisv
LyBzdGF0ZS4gV2UgaGFuZGxlIHRob3NlIGNhc2VzIGJ5IGFkdmFuY2luZyB0aGUgc291cmNlIGRp
cmVjdGx5IGFuZCB1c2luZworLy8gdGhpcyBtYWNybyB0byBzd2l0Y2ggdG8gdGhlIGluZGljYXRl
ZCBzdGF0ZS4KKyNkZWZpbmUgU1dJVENIX1RPKHByZWZpeCwgc3RhdGVOYW1lKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgbV9zdGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgIW1faW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJlcikpIFwKKyAgICAgICAg
ICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJ
bnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworfQorCisjZW5kaWYgLy8gTWFya3VwVG9rZW5pemVySW5saW5l
TWV0aG9kc19oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>