<?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>206332</bug_id>
          
          <creation_ts>2020-01-15 18:15:24 -0800</creation_ts>
          <short_desc>Use dataLogIf more regularly</short_desc>
          <delta_ts>2020-01-16 15:25:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607297</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-15 18:15:24 -0800</bug_when>
    <thetext>There is lots of code that reads
if(Options::foobar())
  dataLogLn(&quot;...&quot;)

There are a couple of benefits to replacing those by dataLogLnIf(Options::foobar(), &quot;...&quot;):
- Readability, by reducing the number of lines taken by logging
- Less lines appearing as not-taken in test coverage wrongly (wrongly because we probably don&apos;t care for the coverage of logging code)
- possibly a tiny perf benefit since dataLogIf correctly uses UNLIKELY.

This patch is a fairly trivial refactoring where I looked for that pattern and replaced it everywhere it appeared in JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607298</commentid>
    <comment_count>1</comment_count>
      <attachid>387883</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-15 18:18:49 -0800</bug_when>
    <thetext>Created attachment 387883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607308</commentid>
    <comment_count>2</comment_count>
      <attachid>387883</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-15 18:43:17 -0800</bug_when>
    <thetext>Comment on attachment 387883
Patch

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

r=me with nits.

&gt; Source/JavaScriptCore/ftl/FTLOSREntry.cpp:64
&gt; +        dataLogLnIf(Options::verboseOSR(),&quot;    OSR failed because we don&apos;t have an entrypoint for &quot;, bytecodeIndex, &quot;; ours is for &quot;, entryCode-&gt;bytecodeIndex());

Can you add a space here?

&gt; Source/JavaScriptCore/ftl/FTLOSREntry.cpp:71
&gt; +    dataLogLnIf(Options::verboseOSR(),&quot;    Values at entry: &quot;, values);

ditto.

&gt; Source/JavaScriptCore/ftl/FTLOSREntry.cpp:100
&gt; +        dataLogLnIf(Options::verboseOSR(),&quot;    OSR failed because stack growth failed.&quot;);

ditto.

&gt; Source/JavaScriptCore/ftl/FTLOSREntry.cpp:107
&gt; +    dataLogLnIf(Options::verboseOSR(),&quot;    Entry will succeed, going to address &quot;, RawPointer(result));

Ditto.

&gt; Source/WTF/ChangeLog:9
&gt; +        (WTF::dataLog): Marked NEVER_INLINE

Why never inline this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607674</commentid>
    <comment_count>3</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-16 14:40:29 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to Keith Miller from comment #2)
&gt; Comment on attachment 387883 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387883&amp;action=review
&gt; 
&gt; r=me with nits.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLOSREntry.cpp:64
&gt; &gt; +        dataLogLnIf(Options::verboseOSR(),&quot;    OSR failed because we don&apos;t have an entrypoint for &quot;, bytecodeIndex, &quot;; ours is for &quot;, entryCode-&gt;bytecodeIndex());
&gt; 
&gt; Can you add a space here?

Fixed, as well as the other ones.

&gt; &gt; Source/WTF/ChangeLog:9
&gt; &gt; +        (WTF::dataLog): Marked NEVER_INLINE
&gt; 
&gt; Why never inline this?

Because if logging is on the critical path for performance we have much bigger problems to be concerned about, and I don&apos;t want to have the compiler waste time trying to optimize the way we call logging code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607675</commentid>
    <comment_count>4</comment_count>
      <attachid>387962</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2020-01-16 14:40:48 -0800</bug_when>
    <thetext>Created attachment 387962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607701</commentid>
    <comment_count>5</comment_count>
      <attachid>387962</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 15:24:43 -0800</bug_when>
    <thetext>Comment on attachment 387962
Patch

Clearing flags on attachment: 387962

Committed r254714: &lt;https://trac.webkit.org/changeset/254714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607702</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 15:24:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387883</attachid>
            <date>2020-01-15 18:18:49 -0800</date>
            <delta_ts>2020-01-16 14:40:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206332</filename>
            <type>text/plain</type>
            <size>101914</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJiZWU5Y2YyODQ4Li4wNmE1Njk2ZWVhYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQzIEBACisyMDIwLTAxLTE1ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGRhdGFMb2dJ
ZiBtb3JlIHJlZ3VsYXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlcmUgaXMgbG90cyBvZiBjb2RlIHRoYXQgcmVhZHMKKyAgICAgICAgICBpZihP
cHRpb25zOjpmb29iYXIoKSkKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLi4uIikKKworICAgICAg
ICBUaGVyZSBhcmUgYSBjb3VwbGUgb2YgYmVuZWZpdHMgdG8gcmVwbGFjaW5nIHRob3NlIGJ5IGRh
dGFMb2dMbklmKE9wdGlvbnM6OmZvb2JhcigpLCAiLi4uIik6CisgICAgICAgIC0gUmVhZGFiaWxp
dHksIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgbGluZXMgdGFrZW4gYnkgbG9nZ2luZworICAg
ICAgICAtIExlc3MgbGluZXMgYXBwZWFyaW5nIGFzIG5vdC10YWtlbiBpbiB0ZXN0IGNvdmVyYWdl
IHdyb25nbHkgKHdyb25nbHkgYmVjYXVzZSB3ZSBwcm9iYWJseSBkb24ndCBjYXJlIGZvciB0aGUg
Y292ZXJhZ2Ugb2YgbG9nZ2luZyBjb2RlKQorICAgICAgICAtIHBvc3NpYmx5IGEgdGlueSBwZXJm
IGJlbmVmaXQgc2luY2UgZGF0YUxvZ0lmIGNvcnJlY3RseSB1c2VzIFVOTElLRUxZLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIGZhaXJseSB0cml2aWFsIHJlZmFjdG9yaW5nIHdo
ZXJlIEkgbG9va2VkIGZvciB0aGF0IHBhdHRlcm4gYW5kIHJlcGxhY2VkIGl0IGV2ZXJ5d2hlcmUg
aXQgYXBwZWFyZWQgaW4gSlNDLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpvcHRpbWl6YXRpb25UaHJlc2hvbGRTY2FsaW5nRmFjdG9yKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkb250T3B0aW1pemVBbnl0aW1lU29vbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6b3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6b3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om9wdGltaXplU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yY2VPcHRpbWl6YXRp
b25TbG93UGF0aENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0T3B0
aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgICogYnl0ZWNvZGUvREZH
RXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjphZGQpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0ZBUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb2RlOjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb2RlOjpkb250T3B0aW1pemVBbnl0aW1lU29vbik6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29kZTo6b3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6
b3B0aW1pemVTb29uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpmb3JjZU9wdGltaXph
dGlvblNsb3dQYXRoQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpz
ZXRPU1JFbnRyeUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpKdW1wUmVwbGFjZW1lbnQ6OmZpcmUpOgorICAgICAgICAqIGRm
Zy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2s6OmNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hyb25vdXNseSk6CisgICAgICAgIChK
U0M6OkRGRzo6VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlk
Q29tcGxldGUpOgorICAgICAgICAqIGRmZy9ERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTEZvck9TUkVudHJ5
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpERkc6OlRvRlRMRm9yT1NSRW50cnlEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUpOgorICAgICAgICAq
IGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBs
ZXRlQWxsUmVhZHlQbGFuc0ZvclZNKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogaGVhcC9IZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzd2VlcFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpIZWFwOjpj
b2xsZWN0Tm93KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cnVuQmVnaW5QaGFzZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OnJ1bkZpeHBvaW50UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpydW5S
ZWxvb3BQaGFzZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCk6CisgICAgICAgICogaGVh
cC9NYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFj
a01lcmdpbmdDb25zdHJhaW50OjpwcmVwYXJlVG9FeGVjdXRlSW1wbCk6CisgICAgICAgICogaGVh
cC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludC5jcHA6
CisgICAgICAgIChKU0M6Ok1hcmtpbmdDb25zdHJhaW50OjpwcmVwYXJlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a2luZ0NvbnN0cmFpbnRTZXQ6OmV4ZWN1dGVDb252ZXJnZW5jZSk6CisgICAgICAgIChKU0M6Ok1h
cmtpbmdDb25zdHJhaW50U2V0OjpleGVjdXRlQ29udmVyZ2VuY2VJbXBsKToKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmV4ZWN1dGVBbGwpOgorICAgICAgICAqIGhlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWlu
dFNvbHZlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAg
ICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayk6CisgICAgICAgIChKU0M6
OlNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6
OmRpZFJhY2UpOgorICAgICAgICAqIGhlYXAvU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoSlNDOjpTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlcjo6YmVnaW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RvY2hhc3RpY1NwYWNlVGlt
ZU11dGF0b3JTY2hlZHVsZXI6OmRpZEV4ZWN1dGVDb25zdHJhaW50cyk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVEV4
Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmljVW53aW5kKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hyb25vdXNseSk6
CisgICAgICAgIChKU0M6OkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21w
aWxhdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBqaXQvSklUV29ya2xpc3QuY3BwOgorICAg
ICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6UGxhbjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
Q2FsbE5vZGU6OnVubGluayk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp1bmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rVmlydHVhbEZvcik6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29t
cGlsZUFuZFNldEhldXJpc3RpY3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgor
ICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBh
cnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjph
bmFseXplKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpyZXNvbHZlU3luYyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpm
ZXRjaCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAg
IChKU0M6Om1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0
RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0NvbXBpbGVy
VGltaW5nU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpDb21waWxlclRpbWluZ1Njb3BlOjpDb21w
aWxlclRpbWluZ1Njb3BlKToKKyAgICAgICAgKEpTQzo6Q29tcGlsZXJUaW1pbmdTY29wZTo6fkNv
bXBpbGVyVGltaW5nU2NvcGUpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZSk6
CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6aml0Q29t
cGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuOjpjb21waWxlKToKKwogMjAyMC0wMS0xNSAgQ2FpdGxpbiBQb3R0ZXIg
PGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHB1Ymxp
YyBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDMzZDJiZWVkMjAy
Li5mNTg1MmQ5YmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0zMDAsNyArMzAw
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKIAogdm9pZCBwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRv
ciwgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGlu
dCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OmR1
bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkKKyAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkKICAgICAg
ICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRDb2RlQmxvY2s+OjpkdW1wQmxvY2so
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIFdURjo6ZGF0YUZpbGUoKSk7CiAKICAgICBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGJ5dGVjb2RlR2VuZXJhdG9yLCBjb2RlQmxvY2ssIGlu
c3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggOTE4ZTFkMjEzNGEuLjQ3
MmE4ZDExNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KGNvZGVCbG9jaywgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKSwgbV9ncmFwaCk7CiAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5
dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBC
eXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKSkKICAgICAgICAgZHVtcFJlc3VsdHMoY29kZUJsb2Nr
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcAppbmRleCA2ZjE0NzhiNGM1NC4uZDI5ZjYwZTk0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAgICAgaWYgKGlzTGlua2VkKCkp
IHsKICAgICAgICAgaWYgKHN0dWIoKSkgewogICAgICAgICAgICAgaWYgKCFzdHViKCktPnZpc2l0
V2Vhayh2bSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICJB
dCAiLCBtX2NvZGVPcmlnaW4sICIsICIsIFJhd1BvaW50ZXIodGhpcyksICI6IGNsZWFyaW5nIGNh
bGwgc3R1YiB0byAiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdER1bXAoc3R1YigpLT52
YXJpYW50cygpKSwgIiwgc3R1YiByb3V0aW5lICIsIFJhd1BvaW50ZXIoc3R1YigpKSwKQEAgLTIy
MCwxNCArMjIwLDE0IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fY2FsbGVl
T3JDb2RlQmxvY2suZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAoaXNEaXJlY3QoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNhbGwgdG8g
IiwgUmF3UG9pbnRlcihjb2RlQmxvY2soKSksICIgKCIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwb2ludGVyRHVtcChjb2RlQmxvY2soKSksICIpLlxuIik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlKCktPnR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcmluZyBjYWxsIHRvICIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihjYWxsZWUoKSksICIgKCIsCkBAIC0yMzYsMTQg
KzIzNiwxNCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBoYW5kbGVTcGVjaWZpY0NhbGxlZShz
dGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlKCkpKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgdG8gIiwgUmF3UG9p
bnRlcihjYWxsZWUoKSksICIuXG4iKTsKICAgICAgICAgICAgICAgICAgICAgbV9jbGVhcmVkQnlH
QyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
dW5saW5rKHZtKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0RpcmVjdCgpICYmICF2bS5oZWFwLmlz
TWFya2VkKG1fbGFzdFNlZW5DYWxsZWVPckV4ZWN1dGFibGUuZ2V0KCkpKSB7Ci0gICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAg
ICAgICAgICAgICAgICAgICJDbGVhcmluZyBjYWxsIHRvICIsIFJhd1BvaW50ZXIoZXhlY3V0YWJs
ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIHRoZSBleGVjdXRhYmxlIGlzIGRl
YWQuXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggM2YzMmZlODdlNGMuLmFhZWZhZDJhNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIxOSw4ICsxMjE5LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5p
c01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0
eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKICAgICAgICAgICAgIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShtZXRhZGF0YSk7CiAgICAgICAgIH0pOwogCkBAIC0xMjI4LDggKzEyMjcsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CiAg
ICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7
CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmlu
ZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuIik7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVj
dHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAg
fSk7CkBAIC0xMjQyLDggKzEyNDAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElu
bGluZUNhY2hlcygpCiAgICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2bS5o
ZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJ
RCkpKQogICAgICAgICAgICAgICAgICYmICghY2hhaW4gfHwgdm0uaGVhcC5pc01hcmtlZChjaGFp
bikpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHB1
dCB0cmFuc2l0aW9uLlxuIik7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJi
b3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbi4iKTsKICAgICAgICAgICAg
IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9v
ZmZzZXQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7CkBA
IC0xMjkyLDggKzEyODksNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNh
Y2hlcygpCiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN5bWJvbFRhYmxlPiYgc3ltYm9s
VGFibGUgPSBtZXRhZGF0YS5tX3N5bWJvbFRhYmxlOwogICAgICAgICAgICAgaWYgKCFzeW1ib2xU
YWJsZSB8fCB2bS5oZWFwLmlzTWFya2VkKHN5bWJvbFRhYmxlLmdldCgpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBkZWFkIHN5bWJvbFRhYmxlICVwLlxuIiwg
c3ltYm9sVGFibGUuZ2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLCAiQ2xlYXJpbmcgZGVhZCBzeW1ib2xUYWJsZSAiLCBSYXdQb2ludGVyKHN5bWJv
bFRhYmxlLmdldCgpKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5jbGVhcigpOwogICAgICAg
ICB9KTsKIApAQCAtMTMwNSw4ICsxMzAxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJ
bnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+
JiBzdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZTsKICAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlIHx8IHZtLmhlYXAuaXNNYXJrZWQoc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBzY29wZSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1
cmUgJXAuXG4iLCBzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcgc2NvcGUgYWNjZXNzIHdpdGggc3RydWN0dXJl
ICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUu
Y2xlYXIoKTsKICAgICAgICAgfTsKIApAQCAtMTMyMSw4ICsxMzE2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgYXV0byYgaW5zdHJ1
Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5hdChzdGQ6OmdldDwxPihwYWlyLmtleSkpOwogICAgICAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAg
ICAgICBpZiAob3Bjb2RlID09IG9wX2dldF9ieV9pZCkgewotICAgICAgICAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVh
cmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nl
c3MuIik7CiAgICAgICAgICAgICAgICAgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKGluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWQ+KCkubWV0YWRhdGEodGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMzQxLDggKzEzMzUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcygpCiAKICAgICBmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oWyZdKExM
SW50Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pIHsKICAgICAgICAgaWYgKGNhbGxMaW5rSW5m
by5pc0xpbmtlZCgpICYmICF2bS5oZWFwLmlzTWFya2VkKGNhbGxMaW5rSW5mby5jYWxsZWUoKSkp
IHsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAg
ICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICIsICp0aGlzLCAiXG4iKTsKKyAg
ICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExM
SW50IGNhbGwgZnJvbSAiLCAqdGhpcyk7CiAgICAgICAgICAgICBjYWxsTGlua0luZm8udW5saW5r
KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZSgp
ICYmICF2bS5oZWFwLmlzTWFya2VkKGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZSgpKSkKQEAg
LTIxNzgsOCArMjE3MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSkKIHsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9
IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZUNhbGxMaW5rKCkpCi0gICAgICAgIGRhdGFMb2coIk5vdGljaW5nIGNhbGwgbGluayBmcm9tICIs
IHBvaW50ZXJEdW1wKGNhbGxlckNvZGVCbG9jayksICIgdG8gIiwgKnRoaXMsICJcbiIpOworICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpLCAiTm90aWNpbmcgY2FsbCBs
aW5rIGZyb20gIiwgcG9pbnRlckR1bXAoY2FsbGVyQ29kZUJsb2NrKSwgIiB0byAiLCAqdGhpcyk7
CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKCFtX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCkKQEAgLTIxODcsOCArMjE3OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWlu
Z0NhbGwoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkKICAgICAKICAgICBpZiAoIWNhbGxlckNvZGVC
bG9jaykgewogICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBuYXRpdmUuXG4iKTsKKyAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCksICIgICAgQ2xlYXJpbmcgU0FC
SSBiZWNhdXNlIGNhbGxlciBpcyBuYXRpdmUuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyMDMsOCArMjE5NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwo
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkKICAgICAKICAgICBpZiAoIURGRzo6aXNTbWFsbEVub3Vn
aFRvSW5saW5lQ29kZUludG8oY2FsbGVyQ29kZUJsb2NrKSkgewogICAgICAgICBtX3Nob3VsZEFs
d2F5c0JlSW5saW5lZCA9IGZhbHNlOwotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxM
aW5rKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNh
bGxlciBpcyB0b28gbGFyZ2UuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZUNhbGxMaW5rKCksICIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyB0b28g
bGFyZ2UuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMTQsMTUgKzIyMDQsMTMg
QEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKQogICAgICAgICAvLyBlbnN1cmVzIHRoYXQgYSBmdW5jdGlvbiBpcyBTQUJJIG9ubHkgaWYg
aXQgaXMgY2FsbGVkIG5vIG1vcmUgZnJlcXVlbnRseSB0aGFuCiAgICAgICAgIC8vIGFueSBvZiBp
dHMgY2FsbGVycy4KICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpKQotICAgICAgICAgICAgZGF0YUxv
ZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSBjYWxsZXIgaXMgaW4gTExJbnQuXG4iKTsKKyAg
ICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCksICIgICAgQ2xlYXJp
bmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBpbiBMTEludC4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNhbGxlckNvZGVC
bG9jay0+aml0VHlwZSgpKSkgewogICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZh
bHNlOwotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiY2F1c2UgY2FsbGVyIHdhcyBhbHJlYWR5IG9w
dGltaXplZC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlQ2FsbExp
bmsoKSwgIiAgICBDbGVhcmluZyBTQUJJIGJjYXVzZSBjYWxsZXIgd2FzIGFscmVhZHkgb3B0aW1p
emVkLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjIzMSw4ICsyMjE5LDcg
QEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKQogICAgICAgICAvLyBvcHRpbWl6ZWQgYW55dGltZSBzb29uLiBGb3IgZXZhbCBjb2RlIHRo
aXMgaXMgcGFydGljdWxhcmx5IHRydWUgc2luY2Ugd2UKICAgICAgICAgLy8gZGVsYXkgZXZhbCBv
cHRpbWl6YXRpb24gYnkgYSAqbG90Ki4KICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygpKQotICAgICAg
ICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSBjYWxsZXIgaXMgbm90IGEg
ZnVuY3Rpb24uXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZUNhbGxM
aW5rKCksICIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBub3QgYSBmdW5jdGlv
bi4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI0MSw4ICsyMjI4LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZyYW1lKQog
ICAgIHZtKCkudG9wQ2FsbEZyYW1lLT5pdGVyYXRlKHZtKCksIGZ1bmN0b3IpOwogCiAgICAgaWYg
KGZ1bmN0b3IuZGlkUmVjdXJzZSgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2Fs
bExpbmsoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2Ug
cmVjdXJzaW9uIHdhcyBkZXRlY3RlZC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25z
Ojp2ZXJib3NlQ2FsbExpbmsoKSwgIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgcmVjdXJzaW9u
IHdhcyBkZXRlY3RlZC4iKTsKICAgICAgICAgbV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNTUsOCArMjI0MSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkKICAgICBp
ZiAoY2FuQ29tcGlsZShjYWxsZXJDb2RlQmxvY2stPmNhcGFiaWxpdHlMZXZlbFN0YXRlKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygp
KQotICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHRoZSBjYWxsZXIg
aXMgbm90IGEgREZHIGNhbmRpZGF0ZS5cbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VDYWxsTGluaygpLCAiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSB0aGUgY2FsbGVyIGlz
IG5vdCBhIERGRyBjYW5kaWRhdGUuIik7CiAgICAgCiAgICAgbV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKICNlbmRpZgpAQCAtMjQwNCwxMiArMjM4OSw5IEBAIGRvdWJsZSBDb2RlQmxv
Y2s6Om9wdGltaXphdGlvblRocmVzaG9sZFNjYWxpbmdGYWN0b3IoKQogICAgIAogICAgIHJlc3Vs
dCAqPSBjb2RlVHlwZVRocmVzaG9sZE11bHRpcGxpZXIoKTsKICAgICAKLSAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAqdGhpcywg
IjogYnl0ZWNvZGUgY29zdCBpcyAiLCBieXRlY29kZUNvc3QsCi0gICAgICAgICAgICAiLCBzY2Fs
aW5nIGV4ZWN1dGlvbiBjb3VudGVyIGJ5ICIsIHJlc3VsdCwgIiAqICIsIGNvZGVUeXBlVGhyZXNo
b2xkTXVsdGlwbGllcigpLAotICAgICAgICAgICAgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgKnRoaXMsICI6IGJ5dGVjb2RlIGNv
c3QgaXMgIiwgYnl0ZWNvZGVDb3N0LAorICAgICAgICAiLCBzY2FsaW5nIGV4ZWN1dGlvbiBjb3Vu
dGVyIGJ5ICIsIHJlc3VsdCwgIiAqICIsIGNvZGVUeXBlVGhyZXNob2xkTXVsdGlwbGllcigpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNDk4LDIyICsyNDgwLDE5IEBAIGF1dG8gQ29k
ZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERG
Rzo6T1NSRXhpdFN0YXRlCiAKIHZvaWQgQ29kZUJsb2NrOjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KCkKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCp0
aGlzLCAiOiBPcHRpbWl6aW5nIG5leHQgaW52b2NhdGlvbi5cbiIpOworICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKnRoaXMsICI6IE9wdGltaXppbmcgbmV4dCBpbnZvY2F0
aW9uLiIpOwogICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKDAsIHRoaXMp
OwogfQogCiB2b2lkIENvZGVCbG9jazo6ZG9udE9wdGltaXplQW55dGltZVNvb24oKQogewotICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coKnRoaXMsICI6IE5v
dCBvcHRpbWl6aW5nIGFueXRpbWUgc29vbi5cbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSwgKnRoaXMsICI6IE5vdCBvcHRpbWl6aW5nIGFueXRpbWUgc29vbi4iKTsK
ICAgICBtX2ppdEV4ZWN1dGVDb3VudGVyLmRlZmVySW5kZWZpbml0ZWx5KCk7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjpvcHRpbWl6ZUFmdGVyV2FybVVwKCkKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBPcHRpbWl6aW5nIGFmdGVyIHdh
cm0tdXAuXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICp0aGlz
LCAiOiBPcHRpbWl6aW5nIGFmdGVyIHdhcm0tdXAuIik7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgbV9qaXRFeGVjdXRlQ291bnRlci5zZXROZXdUaHJlc2hvbGQoCiAgICAgICAgIGFkanVzdGVk
Q291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKSks
IHRoaXMpOwpAQCAtMjUyMiw4ICsyNTAxLDcgQEAgdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplQWZ0
ZXJXYXJtVXAoKQogCiB2b2lkIENvZGVCbG9jazo6b3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKQog
ewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coKnRoaXMs
ICI6IE9wdGltaXppbmcgYWZ0ZXIgbG9uZyB3YXJtLXVwLlxuIik7CisgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6dmVyYm9zZU9TUigpLCAqdGhpcywgIjogT3B0aW1pemluZyBhZnRlciBsb25nIHdh
cm0tdXAuIik7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgbV9qaXRFeGVjdXRlQ291bnRlci5z
ZXROZXdUaHJlc2hvbGQoCiAgICAgICAgIGFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkpLCB0aGlzKTsKQEAgLTI1MzIsOCAr
MjUxMCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpvcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpCiAKIHZv
aWQgQ29kZUJsb2NrOjpvcHRpbWl6ZVNvb24oKQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpCi0gICAgICAgIGRhdGFMb2coKnRoaXMsICI6IE9wdGltaXppbmcgc29vbi5cbiIpOwor
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKnRoaXMsICI6IE9wdGltaXpp
bmcgc29vbi4iKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBtX2ppdEV4ZWN1dGVDb3VudGVy
LnNldE5ld1RocmVzaG9sZCgKICAgICAgICAgYWRqdXN0ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6
dGhyZXNob2xkRm9yT3B0aW1pemVTb29uKCkpLCB0aGlzKTsKQEAgLTI1NDIsOCArMjUxOSw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpvcHRpbWl6ZVNvb24oKQogCiB2b2lkIENvZGVCbG9jazo6Zm9yY2VP
cHRpbWl6YXRpb25TbG93UGF0aENvbmN1cnJlbnRseSgpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqdGhpcywgIjogRm9yY2luZyBzbG93IHBhdGgg
Y29uY3VycmVudGx5LlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAqdGhpcywgIjogRm9yY2luZyBzbG93IHBhdGggY29uY3VycmVudGx5LiIpOwogICAgIG1faml0
RXhlY3V0ZUNvdW50ZXIuZm9yY2VTbG93UGF0aENvbmN1cnJlbnRseSgpOwogfQogCkBAIC0yNTUy
LDcgKzI1MjgsNyBAQCB2b2lkIENvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFz
ZWRPbkNvbXBpbGF0aW9uUmVzdWx0KENvbXBpbGF0aW9uUmVzdQogewogICAgIEpJVFR5cGUgdHlw
ZSA9IGppdFR5cGUoKTsKICAgICBpZiAodHlwZSAhPSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgewot
ICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBleHBlY3RlZCB0byBoYXZlIGJhc2VsaW5lIGNvZGUg
YnV0IGhhdmUgIiwgdHlwZSwgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbigqdGhpcywgIjogZXhw
ZWN0ZWQgdG8gaGF2ZSBiYXNlbGluZSBjb2RlIGJ1dCBoYXZlICIsIHR5cGUpOwogICAgICAgICBD
UkFTSF9XSVRIX0lORk8oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaml0Q29kZSgpLmdldCgpKSwg
c3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSkpOwogICAgIH0KICAgICAKQEAgLTI3NTYsOCArMjcz
Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9ucygpCiAKIGJvb2wgQ29k
ZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkKLSAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgb3B0aW1pemluZyAiLCAqdGhpcywg
Ii4uLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ29uc2lk
ZXJpbmcgb3B0aW1pemluZyAiLCAqdGhpcywgIi4uLiIpOwogCiAgICAgaWYgKG1fb3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyID49IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IGE4MmY5MmRmZDU5Li4yNTUxMzcyOTY1OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CkBAIC01MCw4ICs1MCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVy
LCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogCiAgICAgQ09ERUJMT0NLX0xPR19FVkVO
VChvd25lciwgImZyZXF1ZW50RXhpdCIsIChzaXRlKSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VFeGl0UHJvZmlsZSgpKQotICAgICAgICBkYXRhTG9nKHBvaW50ZXJEdW1wKG93bmVy
KSwgIjogQWRkaW5nIGV4aXQgc2l0ZTogIiwgc2l0ZSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6dmVyYm9zZUV4aXRQcm9maWxlKCksIHBvaW50ZXJEdW1wKG93bmVyKSwgIjogQWRk
aW5nIGV4aXQgc2l0ZTogIiwgc2l0ZSk7CiAKICAgICBFeGl0UHJvZmlsZSYgcHJvZmlsZSA9IG93
bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5leGl0UHJvZmlsZSgpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3ZWZmYWQw
N2YyMi4uOWZmYzU1NTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03NDIxLDcgKzc0MjEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICBkZWZlcnJlZFNvdXJjZUR1bXAuYXBw
ZW5kKERlZmVycmVkU291cmNlRHVtcChjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKSk7CiAg
ICAgfQogCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0REZHVGltZSgpKSB7CisgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0REZHVGltZSgpKSkgewogICAgICAg
ICBkYXRhTG9nKCJQYXJzaW5nICIsICpjb2RlQmxvY2spOwogICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKCkpIHsKICAgICAgICAgICAgIGRhdGFMb2coCkBAIC03NDM1LDcgKzc0MzUsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgCiAgICAgVmVjdG9yPElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIDMyPiBqdW1wVGFyZ2V0czsKICAgICBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOwotICAgIGlmIChPcHRpb25z
OjpkdW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkpIHsKICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRz
OiAiKTsKICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwganVtcFRhcmdldHMuc2l6ZSgpOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCmluZGV4IGEyNDAxNDkyMTM4Li5mOWI0NTk3NDliMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKQEAgLTI2OCw3ICsyNjgs
NyBAQCBwcml2YXRlOgogICAgIEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3Rh
dGU+IG1faW50ZXJwcmV0ZXI7CiAgICAgQmxvY2tTZXQgbV9ibG9ja3NXaXRoT1NSOwogICAgIAot
ICAgIGJvb2wgbV92ZXJib3NlOworICAgIGNvbnN0IGJvb2wgbV92ZXJib3NlOwogICAgIAogICAg
IGJvb2wgbV9jaGFuZ2VkOwogICAgIHVuc2lnbmVkIG1fY291bnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcAppbmRleCA5YjIxZGYzYjVjZi4uMmRlOWYxYTE5OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMTI4LDI0ICsxMjgs
MjEgQEAgYm9vbCBKSVRDb2RlOjpjaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZChD
b2RlQmxvY2sqIGNvZGVCbG9jaykKIHZvaWQgSklUQ29kZTo6b3B0aW1pemVOZXh0SW52b2NhdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6REZHSklUKTsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQot
ICAgICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IEZUTC1vcHRpbWl6aW5nIG5leHQgaW52b2Nh
dGlvbi5cbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVC
bG9jaywgIjogRlRMLW9wdGltaXppbmcgbmV4dCBpbnZvY2F0aW9uLiIpOwogICAgIHRpZXJVcENv
dW50ZXIuc2V0TmV3VGhyZXNob2xkKDAsIGNvZGVCbG9jayk7CiB9CiAKIHZvaWQgSklUQ29kZTo6
ZG9udE9wdGltaXplQW55dGltZVNvb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQVNT
RVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7Ci0gICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBOb3Qg
RlRMLW9wdGltaXppbmcgYW55dGltZSBzb29uLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLCAqY29kZUJsb2NrLCAiOiBOb3QgRlRMLW9wdGltaXppbmcgYW55dGlt
ZSBzb29uLiIpOwogICAgIHRpZXJVcENvdW50ZXIuZGVmZXJJbmRlZmluaXRlbHkoKTsKIH0KIAog
dm9pZCBKSVRDb2RlOjpvcHRpbWl6ZUFmdGVyV2FybVVwKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwot
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coKmNvZGVCbG9j
aywgIjogRlRMLW9wdGltaXppbmcgYWZ0ZXIgd2FybS11cC5cbiIpOworICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVCbG9jaywgIjogRlRMLW9wdGltaXppbmcgYWZ0
ZXIgd2FybS11cC4iKTsKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gY29kZUJsb2NrLT5iYXNl
bGluZVZlcnNpb24oKTsKICAgICB0aWVyVXBDb3VudGVyLnNldE5ld1RocmVzaG9sZCgKICAgICAg
ICAgYmFzZWxpbmUtPmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvckZU
TE9wdGltaXplQWZ0ZXJXYXJtVXAoKSksCkBAIC0xNTUsOCArMTUyLDcgQEAgdm9pZCBKSVRDb2Rl
OjpvcHRpbWl6ZUFmdGVyV2FybVVwKENvZGVCbG9jayogY29kZUJsb2NrKQogdm9pZCBKSVRDb2Rl
OjpvcHRpbWl6ZVNvb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVC
bG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7Ci0gICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBGVEwtb3B0aW1pemlu
ZyBzb29uLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAqY29k
ZUJsb2NrLCAiOiBGVEwtb3B0aW1pemluZyBzb29uLiIpOwogICAgIENvZGVCbG9jayogYmFzZWxp
bmUgPSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpOwogICAgIHRpZXJVcENvdW50ZXIuc2V0
TmV3VGhyZXNob2xkKAogICAgICAgICBiYXNlbGluZS0+YWRqdXN0ZWRDb3VudGVyVmFsdWUoT3B0
aW9uczo6dGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uKCkpLApAQCAtMTY2LDggKzE2Miw3IEBA
IHZvaWQgSklUQ29kZTo6b3B0aW1pemVTb29uKENvZGVCbG9jayogY29kZUJsb2NrKQogdm9pZCBK
SVRDb2RlOjpmb3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVudGx5KENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBl
OjpERkdKSVQpOwotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFM
b2coKmNvZGVCbG9jaywgIjogRm9yY2luZyBzbG93IHBhdGggY29uY3VycmVudGx5IGZvciBGVEwg
ZW50cnkuXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpjb2Rl
QmxvY2ssICI6IEZvcmNpbmcgc2xvdyBwYXRoIGNvbmN1cnJlbnRseSBmb3IgRlRMIGVudHJ5LiIp
OwogICAgIHRpZXJVcENvdW50ZXIuZm9yY2VTbG93UGF0aENvbmN1cnJlbnRseSgpOwogfQogCkBA
IC0yMDQsOCArMTk5LDggQEAgdm9pZCBKSVRDb2RlOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRC
YXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoCiB2b2lkIEpJVENvZGU6OnNldE9TUkVudHJ5QmxvY2so
Vk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBDb2RlQmxvY2sqIG9zckVudHJ5QmxvY2spCiB7
CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRhTG9nKFJhd1Bv
aW50ZXIodGhpcyksICI6IFNldHRpbmcgT1NSIGVudHJ5IGJsb2NrIHRvICIsIFJhd1BvaW50ZXIo
b3NyRW50cnlCbG9jayksICJcbiIpOwotICAgICAgICBkYXRhTG9nKCJPU1IgZW50cmllcyB3aWxs
IGdvIHRvICIsIG9zckVudHJ5QmxvY2stPmppdENvZGUoKS0+ZnRsRm9yT1NSRW50cnkoKS0+YWRk
cmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2dMbihSYXdQb2ludGVyKHRoaXMpLCAiOiBTZXR0aW5nIE9TUiBlbnRyeSBibG9jayB0byAiLCBS
YXdQb2ludGVyKG9zckVudHJ5QmxvY2spKTsKKyAgICAgICAgZGF0YUxvZ0xuKCJPU1IgZW50cmll
cyB3aWxsIGdvIHRvICIsIG9zckVudHJ5QmxvY2stPmppdENvZGUoKS0+ZnRsRm9yT1NSRW50cnko
KS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKSk7CiAgICAgfQogICAgIG1f
b3NyRW50cnlCbG9jay5zZXQodm0sIG93bmVyLCBvc3JFbnRyeUJsb2NrKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAppbmRleCAxZWJm
Njk0Y2U0Yy4uOWQzOTk0Yzk0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0p1bXBSZXBsYWNlbWVudC5jcHAKQEAgLTM2LDggKzM2LDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiB2b2lkIEp1bXBSZXBsYWNlbWVudDo6ZmlyZSgpCiB7Ci0gICAg
aWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiRmlyaW5n
IGp1bXAgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludCBmcm9tICVwLCB0byAlcC5cbiIsIG1fc291cmNl
LmRhdGFMb2NhdGlvbigpLCBtX2Rlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKKyAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwKKyAgICAgICAgIkZpcmluZyBqdW1w
IHJlcGxhY2VtZW50IHdhdGNocG9pbnQgZnJvbSAiLCBSYXdQb2ludGVyKG1fc291cmNlLmRhdGFM
b2NhdGlvbigpKSwKKyAgICAgICAgIiB0byAiLCBSYXdQb2ludGVyKG1fZGVzdGluYXRpb24uZGF0
YUxvY2F0aW9uKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKG1fc291
cmNlLCBtX2Rlc3RpbmF0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmNwcAppbmRleCA0NDk3MzA4MzljOS4uYTIwZDdkMzIwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCkBAIC0xMDMsMTEgKzEwMyw5IEBAIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkgewotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIkRGRyBPU1IgaW4gIiwgKmNvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKSwgIiAtPiAiLCAqY29kZUJsb2NrLAotICAgICAgICAgICAgIiBm
cm9tICIsIGJ5dGVjb2RlSW5kZXgsICJcbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRp
b25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICJERkcgT1NSIGluICIsICpjb2RlQmxvY2stPmFs
dGVybmF0aXZlKCksICIgLT4gIiwgKmNvZGVCbG9jaywKKyAgICAgICAgIiBmcm9tICIsIGJ5dGVj
b2RlSW5kZXgpOwogICAgIAogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCkBAIC0x
MzQsOCArMTMyLDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28KICAgICAgICAgLy8gICBiZSBz
dXBlciByYXJlLiBGb3Igbm93LCBpZiBpdCBkb2VzIGhhcHBlbiwgaXQnbGwgY2F1c2Ugc29tZSBj
b21waWxhdGlvbgogICAgICAgICAvLyAgIHRocmFzaGluZy4KICAgICAgICAgCi0gICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGZh
aWxlZCBiZWNhdXNlIHRoZSB0YXJnZXQgY29kZSBibG9jayBpcyBub3QgREZHLlxuIik7CisgICAg
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1IgZmFpbGVkIGJl
Y2F1c2UgdGhlIHRhcmdldCBjb2RlIGJsb2NrIGlzIG5vdCBERkcuIik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTE0Myw4ICsxNDAsNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjbwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBqaXRDb2RlLT5vc3JFbnRyeURh
dGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghZW50cnkp
IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgIGRhdGFM
b2dGKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHRoZSBlbnRyeXBvaW50IHdhcyBvcHRpbWl6ZWQg
b3V0LlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAg
ICBPU1IgZmFpbGVkIGJlY2F1c2UgdGhlIGVudHJ5cG9pbnQgd2FzIG9wdGltaXplZCBvdXQuIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTE4MiwxMSArMTc4LDkg
QEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28KICAgICAgICAgICAgIHZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudChhcmd1bWVudCAtIDEpOwogICAgICAgICAKICAgICAgICAgaWYgKCFlbnRyeS0+
bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkudmFsaWRhdGVPU1JFbnRyeVZhbHVl
KHZhbHVlLCBGbHVzaGVkSlNWYWx1ZSkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAg
ICAiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAiLCBhcmd1bWVudCwgIiBpcyAiLCB2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiwgZW50cnktPm1fZXhwZWN0
ZWRWYWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpLCAiLlxuIik7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICAgICAg
ICAgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgIiwgYXJndW1lbnQsICIgaXMgIiwg
dmFsdWUsCisgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiwgZW50cnktPm1fZXhwZWN0ZWRW
YWx1ZXMuYXJndW1lbnQoYXJndW1lbnQpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjM3LDEzICsyMzEsMTEgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY28KICAgICAKICAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNv
bW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CiAgICAgaWYg
KFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrIC0gMSkub2Zmc2V0
KCldKSkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNrIGdyb3d0aCBmYWlsZWQuXG4i
KTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIE9TUiBm
YWlsZWQgYmVjYXVzZSBzdGFjayBncm93dGggZmFpbGVkLiIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAg
ICAgZGF0YUxvZ0YoIiAgICBPU1Igc2hvdWxkIHN1Y2NlZWQuXG4iKTsKKyAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NSIHNob3VsZCBzdWNjZWVkLiIpOwogCiAg
ICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb21taXR0ZWQgdG8gZW50ZXJpbmcuIFdlIHdpbGwg
ZG8gc29tZSB3b3JrIHRvIHNldCB0aGluZ3MgdXAsCiAgICAgLy8gYnV0IHdlIGFsc28gcmVseSBv
biBvdXIgY2FsbGVyIHJlY29nbml6aW5nIHRoYXQgd2hlbiB3ZSByZXR1cm4gYSBub24tbnVsbCBw
b2ludGVyLApAQCAtMjYyLDggKzI1NCw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYgdm0s
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAgICAg
CiAgICAgdm9pZCogdGFyZ2V0UEMgPSBlbnRyeS0+bV9tYWNoaW5lQ29kZS5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZSgpLT5jb250YWlu
cyhlbnRyeS0+bV9tYWNoaW5lQ29kZS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nRigiICAgIE9TUiB1
c2luZyB0YXJnZXQgUEMgJXAuXG4iLCB0YXJnZXRQQyk7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLCAiICAgIE9TUiB1c2luZyB0YXJnZXQgUEMgIiwgUmF3UG9pbnRlcih0
YXJnZXRQQykpOwogICAgIFJFTEVBU0VfQVNTRVJUKHRhcmdldFBDKTsKICAgICAqYml0d2lzZV9j
YXN0PHZvaWQqKj4oc2NyYXRjaCArIDEpID0gcmV0YWdDb2RlUHRyKHRhcmdldFBDLCBPU1JFbnRy
eVB0clRhZywgYml0d2lzZV9jYXN0PFB0clRhZz4oY2FsbEZyYW1lKSk7CiAKQEAgLTMyNCw4ICsz
MTUsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogICAgIAogICAgICpiaXR3aXNlX2Nhc3Q8
Q29kZUJsb2NrKio+KHBpdm90IC0gMSAtIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykgPSBjb2Rl
QmxvY2s7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0
YUxvZ0YoIiAgICBPU1IgcmV0dXJuaW5nIGRhdGEgYnVmZmVyICVwLlxuIiwgc2NyYXRjaCk7Cisg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIE9TUiByZXR1cm5pbmcg
ZGF0YSBidWZmZXIgIiwgUmF3UG9pbnRlcihzY3JhdGNoKSk7CiAgICAgcmV0dXJuIHNjcmF0Y2g7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDFiOGUy
NzhlNGQ1Li40MmNiNWU2NzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCkBAIC0xMTEwLDcgKzExMTAsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAg
aml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CiAKICAgICAvLyBQcm8tZm9ybWEgc3R1ZmYuCi0g
ICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkgeworICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpKSB7CiAgICAgICAgIFNwZWN1bGF0aW9uRmFpbHVy
ZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsK
ICAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CiAgICAgICAg
IGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAK
aW5kZXggYTk5NTk3ZjY2NDMuLmUyNWI2OGE2ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAKQEAgLTgwNyw3ICs4MDcsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2NvbWJpbmVkTGl2ZW5l
c3MgPSBDb21iaW5lZExpdmVuZXNzKG1fZ3JhcGgpOwogCiAgICAgICAgIENTdHJpbmcgZ3JhcGhC
ZWZvcmVTaW5raW5nOwotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZVZhbGlkYXRpb25GYWls
dXJlKCkgJiYgT3B0aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCkpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VWYWxpZGF0aW9uRmFpbHVyZSgpICYmIE9wdGlv
bnM6OnZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZSgpKSkgewogICAgICAgICAgICAgU3RyaW5nUHJp
bnRTdHJlYW0gb3V0OwogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKG91dCk7CiAgICAgICAgICAg
ICBncmFwaEJlZm9yZVNpbmtpbmcgPSBvdXQudG9DU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBiNTJhZjAzNjk1OC4uN2Q0NzM1OWEx
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
MzY4NCw4ICszNjg0LDcgQEAgdm9pZCB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2MKICAgICAKICAgICBzYW5p
dGl6ZVN0YWNrRm9yVk0oY29kZUJsb2NrLT52bSgpKTsKIAotICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZW9wdGlt
aXplXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpjb2RlQmxv
Y2ssICI6IEVudGVyZWQgcmVvcHRpbWl6ZSIpOwogICAgIC8vIFdlIG11c3QgYmUgY2FsbGVkIHdp
dGggdGhlIGJhc2VsaW5lIGNvZGUgYmxvY2suCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAKQEAgLTM2OTYsOCArMzY5NSw3IEBAIHZv
aWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxv
Y2sqIG9wdGltaXplZENvZGVCbG9jCiAgICAgLy8gc3VyZSBiZXQgdGhhdCB3ZSBkb24ndCBoYXZl
IGFueXRoaW5nIGVsc2UgbGVmdCB0byBkby4KICAgICBDb2RlQmxvY2sqIHJlcGxhY2VtZW50ID0g
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAgIGlmICghcmVwbGFjZW1lbnQgfHwgcmVwbGFj
ZW1lbnQgPT0gY29kZUJsb2NrKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
Ci0gICAgICAgICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IE5vdCByZW9wdGltaXppbmcgYmVj
YXVzZSB3ZSd2ZSBhbHJlYWR5IGJlZW4gamV0dGlzb25lZC5cbiIpOworICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpjb2RlQmxvY2ssICI6IE5vdCByZW9wdGltaXpp
bmcgYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IGJlZW4gamV0dGlzb25lZC4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKQEAgLTM3MjMsOCArMzcyMSw3IEBAIHZvaWQgdHJpZ2dlclJlb3B0
aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIG9wdGltaXplZENv
ZGVCbG9jCiAgICAgICAgICYmIG9wdGltaXplZENvZGVCbG9jay0+c2hvdWxkUmVvcHRpbWl6ZUZy
b21Mb29wTm93KCk7CiAgICAgCiAgICAgaWYgKCFkaWRFeGl0QUJ1bmNoICYmICFkaWRHZXRTdHVj
a0luTG9vcCkgewotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAg
ICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBOb3QgcmVvcHRpbWl6aW5nICIsICpvcHRpbWl6ZWRD
b2RlQmxvY2ssICIgYmVjYXVzZSBpdCBlaXRoZXIgZGlkbid0IGV4aXQgZW5vdWdoIG9yIGRpZG4n
dCBsb29wIGVub3VnaCBhZnRlciBleGl0LlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVCbG9jaywgIjogTm90IHJlb3B0aW1pemluZyAiLCAqb3B0
aW1pemVkQ29kZUJsb2NrLCAiIGJlY2F1c2UgaXQgZWl0aGVyIGRpZG4ndCBleGl0IGVub3VnaCBv
ciBkaWRuJ3QgbG9vcCBlbm91Z2ggYWZ0ZXIgZXhpdC4iKTsKICAgICAgICAgY29kZUJsb2NrLT5v
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc0
Miw4ICszNzM5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBpbGUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUpCiB7CiAgICAgaWYgKGNvZGVCbG9jay0+
YmFzZWxpbmVWZXJzaW9uKCktPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKSB7CiAgICAgICAgIENP
REVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiYWJvcnRGVExDb21waWxlIiwgKCkpOwotICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgZGF0YUxvZygiRGVm
ZXJyaW5nIEZUTC1vcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiBpbmRlZmluaXRlbHkg
YmVjYXVzZSB0aGVyZSB3YXMgYW4gRlRMIGZhaWx1cmUuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiRGVmZXJyaW5nIEZUTC1vcHRpbWl6YXRpb24gb2Yg
IiwgKmNvZGVCbG9jaywgIiBpbmRlZmluaXRlbHkgYmVjYXVzZSB0aGVyZSB3YXMgYW4gRlRMIGZh
aWx1cmUuIik7CiAgICAgICAgIGppdENvZGUtPmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKGNvZGVC
bG9jayk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNzUxLDggKzM3NDcsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRUcmlnZ2VyRlRMQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUQ29kZSogaml0Q29kZSkKICAgICBpZiAoIWNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVw
bGFjZW1lbnQoKQogICAgICAgICAmJiAhaml0Q29kZS0+Y2hlY2tJZk9wdGltaXphdGlvblRocmVz
aG9sZFJlYWNoZWQoY29kZUJsb2NrKSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiY291bnRlciA9ICIsIGppdENvZGUtPnRpZXJV
cENvdW50ZXIpKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAg
ICAgIGRhdGFMb2coIkNob29zaW5nIG5vdCB0byBGVEwtb3B0aW1pemUgIiwgKmNvZGVCbG9jaywg
IiB5ZXQuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2hvb3Npbmcgbm90IHRvIEZUTC1vcHRpbWl6ZSAiLCAqY29kZUJsb2NrLCAiIHlldC4iKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3OTQsOCAr
Mzc4OSw3IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUoVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSoKICAgICAgICAgQ09ERUJMT0NLX0xPR19F
VkVOVChjb2RlQmxvY2ssICJkZWxheUZUTENvbXBpbGUiLCAoImNvbXBpbGVkIGFuZCBmYWlsZWQi
KSk7CiAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBmaW5pc2hlZCBjb21waWxpbmcsIGJ1
dCBmYWlsZWQgc29tZWhvdzsgaW4gdGhhdCBjYXNlIHRoZQogICAgICAgICAvLyB0aHJlc2hvbGRz
IHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIg
d2FzIGNvbXBpbGVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50
LlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNvZGUg
YmxvY2sgIiwgKmNvZGVCbG9jaywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBh
biBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTM4MjcsMTEgKzM4MjEsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclRp
ZXJVcE5vdyhWTSogdm1Qb2ludGVyKQogICAgIAogICAgIEpJVENvZGUqIGppdENvZGUgPSBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkgewotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50
ZXJlZCB0cmlnZ2VyVGllclVwTm93IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAotICAgICAgICAg
ICAgaml0Q29kZS0+dGllclVwQ291bnRlciwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCB0
cmlnZ2VyVGllclVwTm93IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLCBqaXRDb2RlLT50aWVyVXBD
b3VudGVyKTsKIAogICAgIGlmIChzaG91bGRUcmlnZ2VyRlRMQ29tcGlsZShjb2RlQmxvY2ssIGpp
dENvZGUpKQogICAgICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxv
Y2ssIGppdENvZGUpOwpAQCAtMzkwNiw4ICszODk3LDcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENv
bW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBCeXRlY29kZUluZGV4IG9yaWdpbkJ5
dGUKICAgICAgICAgaWYgKGl0ZXIgIT0gaml0Q29kZS0+Ynl0ZWNvZGVJbmRleFRvU3RyZWFtSW5k
ZXguZW5kKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0cmVhbUluZGV4ID0gaXRlci0+dmFs
dWU7CiAgICAgICAgICAgICBpZiAoQ29kZUJsb2NrKiBlbnRyeUJsb2NrID0gaml0Q29kZS0+b3Ny
RW50cnlCbG9jaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiT1NSIGVudHJ5OiBGcm9tICIsIFJhd1Bv
aW50ZXIoaml0Q29kZSksICIgZ290IGVudHJ5IGJsb2NrICIsIFJhd1BvaW50ZXIoZW50cnlCbG9j
ayksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIk9TUiBlbnRyeTogRnJvbSAiLCBSYXdQb2ludGVyKGppdENvZGUpLCAiIGdvdCBlbnRy
eSBibG9jayAiLCBSYXdQb2ludGVyKGVudHJ5QmxvY2spKTsKICAgICAgICAgICAgICAgICBpZiAo
dm9pZCogYWRkcmVzcyA9IEZUTDo6cHJlcGFyZU9TUkVudHJ5KHZtLCBjYWxsRnJhbWUsIGNvZGVC
bG9jaywgZW50cnlCbG9jaywgb3JpZ2luQnl0ZWNvZGVJbmRleCwgc3RyZWFtSW5kZXgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoZW50cnlCbG9jaywgIm9zckVu
dHJ5IiwgKCJhdCAiLCBvcmlnaW5CeXRlY29kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXRhZ0NvZGVQdHI8Y2hhcio+KGFkZHJlc3MsIEpTRW50cnlQdHJUYWcsIGJpdHdp
c2VfY2FzdDxQdHJUYWc+KGNhbGxGcmFtZSkpOwpAQCAtMzkxOSw4ICszOTA5LDcgQEAgc3RhdGlj
IGNoYXIqIHRpZXJVcENvbW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBCeXRlY29k
ZUluZGV4IG9yaWdpbkJ5dGUKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBXb3JrbGlzdDo6Q29t
cGlsZWQpIHsKICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheUZU
TENvbXBpbGUiLCAoImNvbXBpbGVkIGFuZCBmYWlsZWQiKSk7CiAgICAgICAgIC8vIFRoaXMgbWVh
bnMgdGhhdCBjb21waWxhdGlvbiBmYWlsZWQgYW5kIHdlIGFscmVhZHkgc2V0IHRoZSB0aHJlc2hv
bGRzLgotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgZGF0
YUxvZygiQ29kZSBibG9jayAiLCAqY29kZUJsb2NrLCAiIHdhcyBjb21waWxlZCBidXQgaXQgZG9l
c24ndCBoYXZlIGFuIG9wdGltaXplZCByZXBsYWNlbWVudC5cbiIpOworICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIg
d2FzIGNvbXBpbGVkIGJ1dCBpdCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50
LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQwMDUsOCArMzk5NCw3
IEBAIHN0YXRpYyBjaGFyKiB0aWVyVXBDb21tb24oVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQnl0ZWNvZGVJbmRleCBvcmlnaW5CeXRlCiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IHdoZXJlIHdlIGFzayB0aGUgb3V0ZXIgdG8gbG9vcCB0byBpbW1lZGlhdGVseSBjb21waWxlIGl0
c2VsZiBpZiBwcm9ncmFtCiAgICAgICAgICAgICAgICAgLy8gY29udHJvbCByZWFjaGVzIGl0Lgot
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIklubmVyLWxvb3AgIiwgb3JpZ2luQnl0ZWNvZGVJbmRleCwgIiBpbiAi
LCAqY29kZUJsb2NrLCAiIHNldHRpbmcgcGFyZW50IGxvb3AgIiwgb3NyRW50cnlDYW5kaWRhdGUs
ICIncyB0cmlnZ2VyIGFuZCBiYWNraW5nIG9mZi5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIklubmVyLWxvb3AgIiwgb3JpZ2luQnl0ZWNv
ZGVJbmRleCwgIiBpbiAiLCAqY29kZUJsb2NrLCAiIHNldHRpbmcgcGFyZW50IGxvb3AgIiwgb3Ny
RW50cnlDYW5kaWRhdGUsICIncyB0cmlnZ2VyIGFuZCBiYWNraW5nIG9mZi4iKTsKICAgICAgICAg
ICAgICAgICBqaXRDb2RlLT50aWVyVXBFbnRyeVRyaWdnZXJzLnNldChvc3JFbnRyeUNhbmRpZGF0
ZSwgSklUQ29kZTo6VHJpZ2dlclJlYXNvbjo6U3RhcnRDb21waWxhdGlvbik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC00MDYwLDggKzQwNDgsNyBAQCBz
dGF0aWMgY2hhciogdGllclVwQ29tbW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEJ5
dGVjb2RlSW5kZXggb3JpZ2luQnl0ZQogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgZm9y
LWVudHJ5IGNvbXBpbGUgYWxyZWFkeSBzdWNjZWVkZWQuIEluIHRoYXQgY2FzZSBPU1IKICAgICAv
LyBlbnRyeSB3aWxsIHN1Y2NlZWQgdW5sZXNzIHdlIHJhbiBvdXQgb2Ygc3RhY2suIEl0J3Mgbm90
IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIGRvLgogICAgIC8vIFdlIHNpZ25hbCB0byB0cnkgYWdhaW4g
YWZ0ZXIgYSB3aGlsZSBpZiB0aGF0IGhhcHBlbnMuCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkKLSAgICAgICAgZGF0YUxvZygiSW1tZWRpYXRlIE9TUiBlbnRyeTogRnJvbSAiLCBSYXdQ
b2ludGVyKGppdENvZGUpLCAiIGdvdCBlbnRyeSBibG9jayAiLCBSYXdQb2ludGVyKGppdENvZGUt
Pm9zckVudHJ5QmxvY2soKSksICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSwgIkltbWVkaWF0ZSBPU1IgZW50cnk6IEZyb20gIiwgUmF3UG9pbnRlcihqaXRDb2Rl
KSwgIiBnb3QgZW50cnkgYmxvY2sgIiwgUmF3UG9pbnRlcihqaXRDb2RlLT5vc3JFbnRyeUJsb2Nr
KCkpKTsKIAogICAgIHZvaWQqIGFkZHJlc3MgPSBGVEw6OnByZXBhcmVPU1JFbnRyeSh2bSwgY2Fs
bEZyYW1lLCBjb2RlQmxvY2ssIGppdENvZGUtPm9zckVudHJ5QmxvY2soKSwgb3JpZ2luQnl0ZWNv
ZGVJbmRleCwgc3RyZWFtSW5kZXgpOwogICAgIGlmICghYWRkcmVzcykKQEAgLTQwODEsMTcgKzQw
NjgsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3dJbkxv
b3AoVk0qIHZtUG9pbnRlciwgdW5zaWduZWQgYnl0ZWMKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
dm0pOwogCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6OkRGR0pJVCkg
ewotICAgICAgICBkYXRhTG9nKCJVbmV4cGVjdGVkIGNvZGUgYmxvY2sgaW4gREZHLT5GVEwgdHJp
Z2dlciB0aWVyIHVwIG5vdyBpbiBsb29wOiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKKyAgICAgICAg
ZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGNvZGUgYmxvY2sgaW4gREZHLT5GVEwgdHJpZ2dlciB0aWVy
IHVwIG5vdyBpbiBsb29wOiAiLCAqY29kZUJsb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZygpOwogCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewot
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCB0cmln
Z2VyVGllclVwTm93SW5Mb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAotICAgICAgICAgICAg
aml0Q29kZS0+dGllclVwQ291bnRlciwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVCbG9jaywgIjogRW50ZXJlZCB0cmlnZ2VyVGllclVw
Tm93SW5Mb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLCBqaXRDb2RlLT50aWVyVXBDb3VudGVy
KTsKIAogICAgIGlmIChqaXRDb2RlLT50aWVyVXBJbkxvb3BIaWVyYXJjaHkuY29udGFpbnMoYnl0
ZWNvZGVJbmRleCkpCiAgICAgICAgIHRpZXJVcENvbW1vbih2bSwgY2FsbEZyYW1lLCBieXRlY29k
ZUluZGV4LCBmYWxzZSk7CkBAIC00MTIzLDExICs0MTA2LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlOb3coVk0qIHZtUG9pbnRlciwgdW5zaWduZWQgYnl0
ZWNvZGUKIAogICAgIEpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
KCk7CiAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAgIGRhdGFMb2co
Ci0gICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHRyaWdnZXJPU1JFbnRyeU5vdyB3
aXRoIGV4ZWN1dGVDb3VudGVyID0gIiwKLSAgICAgICAgICAgIGppdENvZGUtPnRpZXJVcENvdW50
ZXIsICJcbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICpjb2RlQmxvY2ssICI6IEVudGVyZWQgdHJpZ2dlck9TUkVudHJ5Tm93IHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAiLCBqaXRDb2RlLT50aWVyVXBDb3VudGVyKTsKIAogICAgIHJldHVybiB0aWVyVXBD
b21tb24odm0sIGNhbGxGcmFtZSwgYnl0ZWNvZGVJbmRleCwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBkODAwMDc5ZmVmMi4uOWQ2ZDEwMjU1ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBAIFBs
YW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAg
aWYgKFVOTElLRUxZKGNvbXB1dGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICBtX3RpbWVC
ZWZvcmVGVEwgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgCi0gICAgICAgIGlmIChP
cHRpb25zOjpiM0Fsd2F5c0ZhaWxzQmVmb3JlQ29tcGlsZSgpKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjpiM0Fsd2F5c0ZhaWxzQmVmb3JlQ29tcGlsZSgpKSkgewogICAgICAgICAg
ICAgRlRMOjpmYWlsKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiBGVExQYXRoOwogICAgICAg
ICB9CkBAIC01MDUsNyArNTA1LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBp
bGVJblRocmVhZEltcGwoKQogICAgICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNl
bGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIENhbmNlbFBhdGg7CiAgICAgICAgIAotICAgICAg
ICBpZiAoT3B0aW9uczo6YjNBbHdheXNGYWlsc0JlZm9yZUxpbmsoKSkgeworICAgICAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6YjNBbHdheXNGYWlsc0JlZm9yZUxpbmsoKSkpIHsKICAgICAgICAg
ICAgIEZUTDo6ZmFpbChzdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gRlRMUGF0aDsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCBjNjdlN2EwMDA4Yy4u
ZWFmMzUxNmQ1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC00OCwx
MSArNDgsOSBAQCBSZWY8VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IFRvRlRMRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUoKQogdm9pZCBUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5
KAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJs
b2NrKQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0YUxv
ZygKLSAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywg
IiAoZm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAotICAgICAgICAgICAgIikgZGlkIGJlY29t
ZSByZWFkeS5cbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksCisgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAo
Zm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAorICAgICAgICAiKSBkaWQgYmVjb21lIHJlYWR5
LiIpOwogICAgIAogICAgIHByb2ZpbGVkREZHQ29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5m
b3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVudGx5KAogICAgICAgICBwcm9maWxlZERG
R0NvZGVCbG9jayk7CkBAIC02MSwxOCArNTksMTQgQEAgdm9pZCBUb0ZUTERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5KAog
dm9pZCBUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21w
bGV0ZSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERGR0Nv
ZGVCbG9jaywgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0KQogewotICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICJPcHRpbWl6aW5n
IGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAoZm9yICIsIHByb2ZpbGVkREZHQ29kZUJs
b2NrLAotICAgICAgICAgICAgIikgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwotICAgIH0KKyAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICJPcHRpbWl6aW5n
IGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAoZm9yICIsIHByb2ZpbGVkREZHQ29kZUJs
b2NrLAorICAgICAgICAiKSByZXN1bHQ6ICIsIHJlc3VsdCk7CiAgICAgCiAgICAgaWYgKHByb2Zp
bGVkREZHQ29kZUJsb2NrLT5yZXBsYWNlbWVudCgpICE9IHByb2ZpbGVkREZHQ29kZUJsb2NrKSB7
Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2coCi0gICAgICAgICAgICAgICAgIkRyb3BwaW5nIEZUTCBjb2RlIGJsb2NrICIsIGNvZGVCbG9j
aywgIiBvbiB0aGUgZmxvb3IgYmVjYXVzZSB0aGUgIgotICAgICAgICAgICAgICAgICJERkcgY29k
ZSBibG9jayAiLCBwcm9maWxlZERGR0NvZGVCbG9jaywgIiB3YXMgamV0dGlzb25lZC5cbiIpOwot
ICAgICAgICB9CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAg
ICAgICAgICAgICJEcm9wcGluZyBGVEwgY29kZSBibG9jayAiLCBjb2RlQmxvY2ssICIgb24gdGhl
IGZsb29yIGJlY2F1c2UgdGhlICIKKyAgICAgICAgICAgICJERkcgY29kZSBibG9jayAiLCBwcm9m
aWxlZERGR0NvZGVCbG9jaywgIiB3YXMgamV0dGlzb25lZC4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9G
VExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suY3BwCmluZGV4IGE0Mjk0OWM4ZjFmLi4wMmFjNGYzZWY2MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRM
Rm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC01MiwxMSArNTIs
OSBAQCBSZWY8VG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz5Ub0ZU
TEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdAogdm9pZCBUb0ZUTEZvck9TUkVudHJ5RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9u
b3VzbHkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRERkdD
b2RlQmxvY2spCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBk
YXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVC
bG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0NvZGVCbG9jaywKLSAgICAgICAgICAgICIpIGRp
ZCBiZWNvbWUgcmVhZHkuXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLAorICAgICAgICAiT3B0aW1pemluZyBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJs
b2NrLCAiIChmb3IgIiwgKnByb2ZpbGVkREZHQ29kZUJsb2NrLAorICAgICAgICAiKSBkaWQgYmVj
b21lIHJlYWR5LiIpOwogCiAgICAgKm1fZm9yY2VkT1NSRW50cnlUcmlnZ2VyID0gSklUQ29kZTo6
VHJpZ2dlclJlYXNvbjo6Q29tcGlsYXRpb25Eb25lOwogfQpAQCAtNjQsMTEgKzYyLDkgQEAgdm9p
ZCBUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlv
bkRpZEJlY29tZVJlYWR5QXN5bmMKIHZvaWQgVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSgKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERGR0NvZGVCbG9jaywgQ29tcGlsYXRpb25SZXN1
bHQgcmVzdWx0KQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAg
ZGF0YUxvZygKLSAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsICpjb2Rl
QmxvY2ssICIgKGZvciAiLCAqcHJvZmlsZWRERkdDb2RlQmxvY2ssCi0gICAgICAgICAgICAiKSBy
ZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNv
ZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0NvZGVCbG9jaywKKyAgICAgICAgIikgcmVz
dWx0OiAiLCByZXN1bHQpOwogICAgIAogICAgIEpJVENvZGUqIGppdENvZGUgPSBwcm9maWxlZERG
R0NvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGUxNGViMmE4NTNkLi42NTk2NWFhYmVjNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTEwNSw4ICsx
MDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX3BsYW4tPm5vdGlmeUNvbXBpbGluZygp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBp
bGF0aW9uUXVldWUoKSkKLSAgICAgICAgICAgIGRhdGFMb2cobV93b3JrbGlzdCwgIjogQ29tcGls
aW5nICIsIG1fcGxhbi0+a2V5KCksICIgYXN5bmNocm9ub3VzbHlcbiIpOworICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpLCBtX3dvcmtsaXN0LCAi
OiBDb21waWxpbmcgIiwgbV9wbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseSIpOwogICAgICAg
ICAKICAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRoZSBHQyB0byBiZSBzYWZlcG9pbnRp
bmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCiAgICAgICAgIGlmIChtX3BsYW4tPnZtKCktPmhl
YXAud29ybGRJc1N0b3BwZWQoKSkgewpAQCAtMTQzLDggKzE0Miw3IEBAIHByb3RlY3RlZDoKICAg
ICAKICAgICB2b2lkIHRocmVhZERpZFN0YXJ0KCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKQotICAgICAgICAgICAgZGF0YUxv
ZyhtX3dvcmtsaXN0LCAiOiBUaHJlYWQgc3RhcnRlZFxuIik7CisgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCksIG1fd29ya2xpc3QsICI6IFRocmVh
ZCBzdGFydGVkIik7CiAgICAgICAgIAogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQog
ICAgICAgICAgICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVBy
aW9yaXR5KTsKQEAgLTE1Niw4ICsxNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICAv
LyBXZSdyZSBob2xkaW5nIHRoZSBXb3JrbGlzdDo6bV9sb2NrLCBzbyB3ZSBzaG91bGQgYmUgY2Fy
ZWZ1bCBub3QgdG8gZGVhZGxvY2suCiAgICAgICAgIAotICAgICAgICBpZiAoT3B0aW9uczo6dmVy
Ym9zZUNvbXBpbGF0aW9uUXVldWUoKSkKLSAgICAgICAgICAgIGRhdGFMb2cobV93b3JrbGlzdCwg
IjogVGhyZWFkIHdpbGwgc3RvcFxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VDb21waWxhdGlvblF1ZXVlKCksIG1fd29ya2xpc3QsICI6IFRocmVhZCB3aWxsIHN0b3Ai
KTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV9wbGFuKTsKICAgICAgICAgCkBAIC0zMzYs
OCArMzMzLDcgQEAgV29ya2xpc3Q6OlN0YXRlIFdvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYWR5UGxh
bnNGb3JWTShWTSYgdm0sIENvbXBpbGF0aW9uS2V5IHJlcXUKICAgICAgICAgUmVmUHRyPFBsYW4+
IHBsYW4gPSBteVJlYWR5UGxhbnMudGFrZUxhc3QoKTsKICAgICAgICAgQ29tcGlsYXRpb25LZXkg
Y3VycmVudEtleSA9IHBsYW4tPmtleSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCp0aGlzLCAi
OiBDb21wbGV0aW5nICIsIGN1cnJlbnRLZXksICJcbiIpOworICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpLCAqdGhpcywgIjogQ29tcGxldGluZyAi
LCBjdXJyZW50S2V5KTsKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSgpID09
IFBsYW46OlJlYWR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNw
cAppbmRleCA5MzMxNzcxMGY2ZC4uY2U5NTJkNWZlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRW50cnkuY3BwCkBAIC01MiwyNyArNTIsMjMgQEAgdm9pZCogcHJlcGFyZU9T
UkVudHJ5KAogICAgICAgICBkZmdDb2RlLT5jbGVhck9TUkVudHJ5QmxvY2tBbmRSZXNldFRocmVz
aG9sZHMoZGZnQ29kZUJsb2NrKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAotICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAg
ICAgICJGVEwgT1NSIGZyb20gIiwgKmRmZ0NvZGVCbG9jaywgIiB0byAiLCAqZW50cnlDb2RlQmxv
Y2ssICIgYXQgIiwKLSAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXgsICIuXG4iKTsKLSAgICB9CisK
KyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICJGVEwgT1NS
IGZyb20gIiwgKmRmZ0NvZGVCbG9jaywgIiB0byAiLCAqZW50cnlDb2RlQmxvY2ssICIgYXQgIiwK
KyAgICAgICAgYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXgpCiAg
ICAgICAgIGpzQ2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPnNldERpZFRyeVRv
RW50ZXJJbkxvb3AodHJ1ZSk7CiAKICAgICBpZiAoYnl0ZWNvZGVJbmRleCAhPSBlbnRyeUNvZGUt
PmJ5dGVjb2RlSW5kZXgoKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQot
ICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB3ZSBkb24ndCBoYXZl
IGFuIGVudHJ5cG9pbnQgZm9yICIsIGJ5dGVjb2RlSW5kZXgsICI7IG91cnMgaXMgZm9yICIsIGVu
dHJ5Q29kZS0+Ynl0ZWNvZGVJbmRleCgpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHdlIGRvbid0IGhhdmUg
YW4gZW50cnlwb2ludCBmb3IgIiwgYnl0ZWNvZGVJbmRleCwgIjsgb3VycyBpcyBmb3IgIiwgZW50
cnlDb2RlLT5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
CiAgICAgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IHZhbHVlczsKICAgICBkZmdDb2RlLT5y
ZWNvbnN0cnVjdChjYWxsRnJhbWUsIGRmZ0NvZGVCbG9jaywgQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSwgc3RyZWFtSW5kZXgsIHZhbHVlcyk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBhdCBlbnRyeTogIiwgdmFsdWVz
LCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksIiAgICBWYWx1
ZXMgYXQgZW50cnk6ICIsIHZhbHVlcyk7CiAgICAgCiAgICAgZm9yIChpbnQgYXJndW1lbnQgPSB2
YWx1ZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgYXJndW1lbnQtLTspIHsKICAgICAgICAgSlNWYWx1
ZSB2YWx1ZU9uU3RhY2sgPSBjYWxsRnJhbWUtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
YXJndW1lbnQpLm9mZnNldCgpKS5hc2FuVW5zYWZlSlNWYWx1ZSgpOwpAQCAtMTAxLDE2ICs5Nywx
NCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgCiAgICAgaW50IHN0YWNrRnJhbWVTaXpl
ID0gZW50cnlDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja0ZyYW1lU2l6
ZSAtIDEpLm9mZnNldCgpXSkpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNrIGdyb3d0
aCBmYWlsZWQuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHN0YWNrIGdyb3d0aCBmYWlsZWQuIik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKICAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhlbnRy
eUNvZGVCbG9jayk7CiAgICAgCiAgICAgdm9pZCogcmVzdWx0ID0gZW50cnlDb2RlLT5hZGRyZXNz
Rm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygiICAgIEVudHJ5IHdp
bGwgc3VjY2VlZCwgZ29pbmcgdG8gYWRkcmVzcyAiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIp
OworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwiICAgIEVudHJ5IHdpbGwg
c3VjY2VlZCwgZ29pbmcgdG8gYWRkcmVzcyAiLCBSYXdQb2ludGVyKHJlc3VsdCkpOwogICAgIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDY3NTQwZDkwN2ZkLi5lM2U4MzZlYjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIEhlYXA6OmR1bXBIZWFwU3RhdGlzdGljc0F0Vk1E
ZXN0cnVjdGlvbigpCiB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBN
b25vdG9uaWNUaW1lIGJlZm9yZTsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgeworICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBiZWZvcmUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyks
ICI+OiBzaHV0ZG93biAiKTsKICAgICB9CkBAIC00MTQsMTcgKzQxNCwxNSBAQCB2b2lkIEhlYXA6
Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAgICAgfQogICAgICAgICBtX2NvbGxlY3RDb250
aW51b3VzbHlUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgfQotICAgIAotICAgIGlm
IChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCIxIik7CisKKyAgICBkYXRhTG9n
SWYoT3B0aW9uczo6bG9nR0MoKSwgIjEiKTsKICAgICAKICAgICAvLyBQcmV2ZW50IG5ldyBjb2xs
ZWN0aW9ucyBmcm9tIGJlaW5nIHN0YXJ0ZWQuIFRoaXMgaXMgcHJvYmFibHkgbm90IGV2ZW4gbmVj
ZXNzYXJ5LCBzaW5jZSB3ZSdyZSBub3QKICAgICAvLyBnb2luZyB0byBjYWxsIGludG8gYW55dGhp
bmcgdGhhdCBzdGFydHMgY29sbGVjdGlvbnMuIFN0aWxsLCB0aGlzIG1ha2VzIHRoZSBhbGdvcml0
aG0gbW9yZQogICAgIC8vIG9idmlvdXNseSBzb3VuZC4KICAgICBtX2lzU2FmZVRvQ29sbGVjdCA9
IGZhbHNlOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9n
KCIyIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIyIik7CiAKICAgICBib29s
IGlzQ29sbGVjdGluZzsKICAgICB7CkBAIC00MzMsOCArNDMxLDcgQEAgdm9pZCBIZWFwOjpsYXN0
Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgICAgIGlzQ29sbGVjdGluZyA9IG1fbGFzdFNlcnZlZFRp
Y2tldCA8IG1fbGFzdEdyYW50ZWRUaWNrZXQ7CiAgICAgfQogICAgIGlmIChpc0NvbGxlY3Rpbmcp
IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIu
Li5dXG4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIuLi5dXG4iKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBjdXJyZW50IGNvbGxlY3Rpb24gdG8g
ZmluaXNoLgogICAgICAgICB3YWl0Rm9yQ29sbGVjdG9yKApAQCAtNDQzLDExICs0NDAsOSBAQCB2
b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAgICAgICAgICAgICByZXR1cm4g
bV9sYXN0U2VydmVkVGlja2V0ID09IG1fbGFzdEdyYW50ZWRUaWNrZXQ7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICAgICAg
ZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiBzaHV0ZG93biAiKTsKKyAgICAg
ICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJbR0M8IiwgUmF3UG9pbnRlcih0aGlzKSwg
Ij46IHNodXRkb3duICIpOwogICAgIH0KLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAg
ICAgZGF0YUxvZygiMyIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiMyIpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fbGFzdFNlcnZlZFRpY2tldCA9PSBtX2xhc3RHcmFudGVkVGlja2V0KTsKQEAgLTQ2
MiwxNCArNDU3LDEyIEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogICAgICAg
ICAgICAgbV90aHJlYWRDb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogICAgIH0KIAotICAg
IGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCI0Iik7CisgICAgZGF0YUxv
Z0lmKE9wdGlvbnM6OmxvZ0dDKCksICI0Iik7CiAgICAgCiAgICAgaWYgKCFzdG9wcGVkKQogICAg
ICAgICBtX3RocmVhZC0+am9pbigpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQot
ICAgICAgICBkYXRhTG9nKCI1ICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAi
NSAiKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wSGVhcFN0YXRpc3RpY3NBdFZN
RGVzdHJ1Y3Rpb24oKSkpCiAgICAgICAgIGR1bXBIZWFwU3RhdGlzdGljc0F0Vk1EZXN0cnVjdGlv
bigpOwpAQCAtNDgzLDggKzQ3Niw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUo
KQogICAgIAogICAgIG1fb2JqZWN0U3BhY2UuZnJlZU1lbW9yeSgpOwogICAgIAotICAgIGlmIChP
cHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKChNb25vdG9uaWNUaW1lOjpub3coKSAt
IGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICJtc11cbiIpOworICAgIGRhdGFMb2dJZihPcHRpb25z
Ojpsb2dHQygpLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBiZWZvcmUpLm1pbGxpc2Vjb25kcygp
LCAibXNdXG4iKTsKIH0KIAogdm9pZCBIZWFwOjpyZWxlYXNlRGVsYXllZFJlbGVhc2VkT2JqZWN0
cygpCkBAIC0xMDUwLDEzICsxMDQyLDEzIEBAIHZvaWQgSGVhcDo6YWRkVG9SZW1lbWJlcmVkU2V0
KGNvbnN0IEpTQ2VsbCogY29uc3RDZWxsKQogdm9pZCBIZWFwOjpzd2VlcFN5bmNocm9ub3VzbHko
KQogewogICAgIE1vbm90b25pY1RpbWUgYmVmb3JlIHsgfTsKLSAgICBpZiAoT3B0aW9uczo6bG9n
R0MoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBk
YXRhTG9nKCJGdWxsIHN3ZWVwOiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgImtiICIpOwogICAgICAg
ICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICB9CiAgICAgbV9vYmplY3RTcGFj
ZS5zd2VlcEJsb2NrcygpOwogICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7Ci0gICAgaWYgKE9w
dGlvbnM6OmxvZ0dDKCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6bG9nR0MoKSkpIHsK
ICAgICAgICAgTW9ub3RvbmljVGltZSBhZnRlciA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAg
ICAgICBkYXRhTG9nKCI9PiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgImtiLCAiLCAoYWZ0ZXIgLSBi
ZWZvcmUpLm1pbGxpc2Vjb25kcygpLCAibXMiKTsKICAgICB9CkBAIC0xMDk2LDExICsxMDg4LDkg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeW5jaHJvbm91c25lc3Ms
IEdDUmVxdWVzdCByZXF1ZXN0KQogICAgICAgICAKICAgICAgICAgYm9vbCBhbHJlYWR5U3dlcHRJ
bkNvbGxlY3RTeW5jID0gc2hvdWxkU3dlZXBTeW5jaHJvbm91c2x5KCk7CiAgICAgICAgIGlmICgh
YWxyZWFkeVN3ZXB0SW5Db2xsZWN0U3luYykgewotICAgICAgICAgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyks
ICI+OiAiKTsKKyAgICAgICAgICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiW0dDPCIs
IFJhd1BvaW50ZXIodGhpcyksICI+OiAiKTsKICAgICAgICAgICAgIHN3ZWVwU3luY2hyb25vdXNs
eSgpOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICAgICAg
ZGF0YUxvZygiXVxuIik7CisgICAgICAgICAgICBkYXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwg
Il1cbiIpOwogICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0U3BhY2UuYXNzZXJ0Tm9VbnN3ZXB0
KCk7CiAgICAgICAgIApAQCAtMTI2NCw4ICsxMjU0LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVh
cDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOwogICAgIH0KICAgICAgICAgCi0gICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIltHQzwiLCBSYXdQb2ludGVyKHRoaXMpLCAi
PjogU1RBUlQgIiwgZ2NDb25kdWN0b3JTaG9ydE5hbWUoY29ubiksICIgIiwgY2FwYWNpdHkoKSAv
IDEwMjQsICJrYiAiKTsKKyAgICBkYXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgIltHQzwiLCBS
YXdQb2ludGVyKHRoaXMpLCAiPjogU1RBUlQgIiwgZ2NDb25kdWN0b3JTaG9ydE5hbWUoY29ubiks
ICIgIiwgY2FwYWNpdHkoKSAvIDEwMjQsICJrYiAiKTsKIAogICAgIG1fYmVmb3JlR0MgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKIApAQCAtMTI3Myw3ICsxMjYyLDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICB2bSgpLnJh
bmRvbSgpLnNldFNlZWQoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7CiAKICAgICBp
ZiAobV9jb2xsZWN0aW9uU2NvcGUpIHsKLSAgICAgICAgZGF0YUxvZygiQ29sbGVjdGlvbiBzY29w
ZSBhbHJlYWR5IHNldCBkdXJpbmcgR0M6ICIsICptX2NvbGxlY3Rpb25TY29wZSwgIlxuIik7Cisg
ICAgICAgIGRhdGFMb2dMbigiQ29sbGVjdGlvbiBzY29wZSBhbHJlYWR5IHNldCBkdXJpbmcgR0M6
ICIsICptX2NvbGxlY3Rpb25TY29wZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogICAgIApAQCAtMTMzNCw3ICsxMzIzLDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIG1fY29uc3RyYWlu
dFNldC0+ZGlkU3RhcnRNYXJraW5nKCk7CiAgICAgCiAgICAgbV9zY2hlZHVsZXItPmJlZ2luQ29s
bGVjdGlvbigpOwotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQorICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpsb2dHQygpKSkKICAgICAgICAgbV9zY2hlZHVsZXItPmxvZygpOwogICAgIAogICAg
IC8vIEFmdGVyIHRoaXMsIHdlIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBmYWxsIHRocm91Z2ggYWxs
IG9mIHRoZSAic2xvdFZpc2l0b3IuaXNFbXB0eSgpIgpAQCAtMTM2Miw3ICsxMzUxLDcgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRml4cG9pbnRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQog
ICAgIAogICAgIFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvciA9ICptX2NvbGxlY3RvclNsb3RWaXNp
dG9yOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmxvZ0dDKCkpKSB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgY2hhciosIHNpemVf
dD4gdmlzaXRNYXA7CiAgICAgICAgIGZvckVhY2hTbG90VmlzaXRvcigKICAgICAgICAgICAgIFsm
XSAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKSB7CkBAIC0xNDA2LDggKzEzOTUsNyBAQCBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpydW5GaXhwb2ludFBoYXNlKEdDQ29uZHVjdG9yIGNvbm4pCiAg
ICAgICAgIG1fc2NoZWR1bGVyLT5kaWRFeGVjdXRlQ29uc3RyYWludHMoKTsKICAgICB9CiAgICAg
ICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKHNsb3RWaXNp
dG9yLmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJrU3RhY2st
PnNpemUoKSArIHNsb3RWaXNpdG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXplKCksICIgIik7Cisg
ICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksIHNsb3RWaXNpdG9yLmNvbGxlY3Rvck1hcmtT
dGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJrU3RhY2stPnNpemUoKSArIHNsb3RWaXNp
dG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXplKCksICIgIik7CiAgICAgICAgIAogICAgIHsKICAg
ICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNpdG9yKTsKQEAgLTE0MzMs
NyArMTQyMSw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkZpeHBvaW50UGhhc2UoR0ND
b25kdWN0b3IgY29ubikKIAogICAgIG1fc2NoZWR1bGVyLT53aWxsUmVzdW1lKCk7CiAgICAgICAg
IAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OmxvZ0dDKCkpKSB7CiAgICAgICAgIGRvdWJsZSB0aGlzUGF1c2VNUyA9IChNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fc3RvcFRpbWUpLm1pbGxpc2Vjb25kcygpOwogICAgICAgICBkYXRhTG9nKCJw
PSIsIHRoaXNQYXVzZU1TLCAibXMgKG1heCAiLCBtYXhQYXVzZU1TKHRoaXNQYXVzZU1TKSwgIiku
Li5dXG4iKTsKICAgICB9CkBAIC0xNDc3LDEyICsxNDY1LDExIEBAIE5FVkVSX0lOTElORSBib29s
IEhlYXA6OnJ1bkNvbmN1cnJlbnRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogCiBORVZFUl9JTkxJ
TkUgYm9vbCBIZWFwOjpydW5SZWxvb3BQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogewotICAgIGlm
IChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCJbR0M8IiwgUmF3UG9pbnRlcih0
aGlzKSwgIj46ICIsIGdjQ29uZHVjdG9yU2hvcnROYW1lKGNvbm4pLCAiICIpOworICAgIGRhdGFM
b2dJZihPcHRpb25zOjpsb2dHQygpLCAiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiAiLCBn
Y0NvbmR1Y3RvclNob3J0TmFtZShjb25uKSwgIiAiKTsKICAgICAKICAgICBtX3NjaGVkdWxlci0+
ZGlkU3RvcCgpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQorICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjpsb2dHQygpKSkKICAgICAgICAgbV9zY2hlZHVsZXItPmxvZygpOwogICAg
IAogICAgIHJldHVybiBjaGFuZ2VQaGFzZShjb25uLCBDb2xsZWN0b3JQaGFzZTo6Rml4cG9pbnQp
OwpAQCAtMTU0OSw3ICsxNTM2LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhh
c2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAgbV9vYmplY3RTcGFjZS5kdW1wQml0cygpOwog
ICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgeworICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBkb3VibGUgdGhpc1BhdXNlTVMgPSAobV9h
ZnRlckdDIC0gbV9zdG9wVGltZSkubWlsbGlzZWNvbmRzKCk7CiAgICAgICAgIGRhdGFMb2coInA9
IiwgdGhpc1BhdXNlTVMsICJtcyAobWF4ICIsIG1heFBhdXNlTVModGhpc1BhdXNlTVMpLCAiKSwg
Y3ljbGUgIiwgKG1fYWZ0ZXJHQyAtIG1fYmVmb3JlR0MpLm1pbGxpc2Vjb25kcygpLCAibXMgRU5E
XVxuIik7CiAgICAgfQpAQCAtMTU2Miw4ICsxNTQ5LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVh
cDo6cnVuRW5kUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICB9CiAgICAgUGFya2luZ0xvdDo6
dW5wYXJrQWxsKCZtX3dvcmxkU3RhdGUpOwogCi0gICAgaWYgKGZhbHNlKQotICAgICAgICBkYXRh
TG9nKCJHQyBFTkQhXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpsb2dHQygpLCAiR0Mg
RU5EISIpOwogCiAgICAgc2V0TmVlZEZpbmFsaXplKCk7CiAKQEAgLTIwOTAsNyArMjA3Niw3IEBA
IHZvaWQgSGVhcDo6bm90aWZ5VGhyZWFkU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKQog
dm9pZCBIZWFwOjpmaW5hbGl6ZSgpCiB7CiAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7Ci0gICAg
aWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6bG9nR0Mo
KSkpIHsKICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgIGRh
dGFMb2coIltHQzwiLCBSYXdQb2ludGVyKHRoaXMpLCAiPjogZmluYWxpemUgIik7CiAgICAgfQpA
QCAtMjExMyw3ICsyMDk5LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZSgpCiAgICAgaWYgKHNob3Vs
ZFN3ZWVwU3luY2hyb25vdXNseSgpKQogICAgICAgICBzd2VlcFN5bmNocm9ub3VzbHkoKTsKIAot
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6Omxv
Z0dDKCkpKSB7CiAgICAgICAgIE1vbm90b25pY1RpbWUgYWZ0ZXIgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICAgICAgZGF0YUxvZygoYWZ0ZXIgLSBiZWZvcmUpLm1pbGxpc2Vjb25kcygpLCAi
bXNdXG4iKTsKICAgICB9CkBAIC0yMTc3LDIyICsyMTYzLDE1IEBAIHZvaWQgSGVhcDo6c3VzcGVu
ZENvbXBpbGVyVGhyZWFkcygpCiAKIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCiB7
Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIj0+ICIpOworICAg
IGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiPT4gIik7CiAgICAgCiAgICAgaWYgKHNob3Vs
ZERvRnVsbENvbGxlY3Rpb24oKSkgewogICAgICAgICBtX2NvbGxlY3Rpb25TY29wZSA9IENvbGxl
Y3Rpb25TY29wZTo6RnVsbDsKICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gZmFs
c2U7Ci0gICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICAgICAgZGF0YUxvZygi
RnVsbENvbGxlY3Rpb24sICIpOwotICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAgICBkYXRh
TG9nKCJGdWxsIGNvbGxlY3Rpb24hXG4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6Omxv
Z0dDKCksICJGdWxsQ29sbGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9jb2xs
ZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47Ci0gICAgICAgIGlmIChPcHRpb25z
Ojpsb2dHQygpKQotICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIpOwotICAg
ICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCJFZGVuIGNvbGxlY3Rpb24hXG4i
KTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJFZGVuQ29sbGVjdGlvbiwg
Iik7CiAgICAgfQogICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAmJiBtX2NvbGxlY3Rpb25TY29w
ZS52YWx1ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICBtX3NpemVCZWZv
cmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZTsKQEAgLTIzNTEsOCArMjMzMCw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpCiAgICAgICAgIGRhdGFMb2coInNpemVBZnRlckxhc3RDb2xsZWN0ID0g
IiwgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCwgIlxuIik7CiAgICAgbV9ieXRlc0FsbG9jYXRlZFRo
aXNDeWNsZSA9IDA7CiAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxv
ZygiPT4gIiwgY3VycmVudEhlYXBTaXplIC8gMTAyNCwgImtiLCAiKTsKKyAgICBkYXRhTG9nSWYo
T3B0aW9uczo6bG9nR0MoKSwgIj0+ICIsIGN1cnJlbnRIZWFwU2l6ZSAvIDEwMjQsICJrYiwgIik7
CiB9CiAKIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbigpCkBAIC0yODkxLDcgKzI4Njks
NyBAQCB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJr
aW5nQ29uc3RyYWludD4gY29uc3RyYWludCkKIHZvaWQgSGVhcDo6bm90aWZ5SXNTYWZlVG9Db2xs
ZWN0KCkKIHsKICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKLSAgICBpZiAoT3B0aW9uczo6bG9n
R0MoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBi
ZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJh
d1BvaW50ZXIodGhpcyksICI+OiBzdGFydGluZyAiKTsKICAgICB9CkBAIC0yOTMxLDggKzI5MDks
NyBAQCB2b2lkIEhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpCiAgICAgICAgICAgICB9KTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2co
KE1vbm90b25pY1RpbWU6Om5vdygpIC0gYmVmb3JlKS5taWxsaXNlY29uZHMoKSwgIm1zXVxuIik7
CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICJtc11cbiIpOwogfQogCiB2b2lkIEhlYXA6OnByZXZl
bnRDb2xsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFja01lcmdpbmdDb25zdHJhaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmNwcAppbmRleCAwMWExZmRhOTU0NC4uMDViNTQ2
ZDM2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja01l
cmdpbmdDb25zdHJhaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2tNZXJnaW5nQ29uc3RyYWludC5jcHAKQEAgLTUzLDggKzUzLDcgQEAgdm9pZCBNYXJrU3Rh
Y2tNZXJnaW5nQ29uc3RyYWludDo6cHJlcGFyZVRvRXhlY3V0ZUltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBTbG8KICAgICBzaXplX3Qgc2l6ZSA9IG1faGVhcC5tX211dGF0b3JNYXJrU3RhY2st
PnNpemUoKSArIG1faGVhcC5tX3JhY2VNYXJrU3RhY2stPnNpemUoKTsKICAgICB2aXNpdG9yLmFk
ZFRvVmlzaXRDb3VudChzaXplKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAg
ICAgICAgZGF0YUxvZygiKCIsIHNpemUsICIpIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6Omxv
Z0dDKCksICIoIiwgc2l6ZSwgIikiKTsKIH0KIAogdm9pZCBNYXJrU3RhY2tNZXJnaW5nQ29uc3Ry
YWludDo6ZXhlY3V0ZUltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggMTQ5Y2U4ZGEzOGEuLmU4MGIwNGNlMDcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC00NSwx
NSArNDUsMTQgQEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAgICAgICAg
W10gewogICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFZlY3RvcjxzaXplX3Q+KCk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkgeworICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpKSkgewogICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrIHNpemU6ICIsIE1hcmtlZEJsb2NrOjpibG9ja1Np
emUsICJcbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvb3RlciBzaXplOiAiLCBzaXpl
b2YoTWFya2VkQmxvY2s6OkZvb3RlciksICJcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhdXRvIGFkZCA9IFsmXSAoc2l6ZV90IHNpemVDbGFzcykgewogICAg
ICAgICAgICAgICAgIHNpemVDbGFzcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRC
bG9jazo6YXRvbVNpemU+KHNpemVDbGFzcyk7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OmR1bXBTaXplQ2xhc3NlcygpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcg
SlNDIE1hcmtlZFNwYWNlIHNpemUgY2xhc3M6ICIsIHNpemVDbGFzcywgIlxuIik7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2VzKCksICJBZGRpbmcg
SlNDIE1hcmtlZFNwYWNlIHNpemUgY2xhc3M6ICIsIHNpemVDbGFzcyk7CiAgICAgICAgICAgICAg
ICAgLy8gUGVyZm9ybSBzb21lIHZhbGlkYXRpb24gYXMgd2UgZ28uCiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShzaXplQ2xhc3MgJSBNYXJrZWRTcGFjZTo6c2l6ZVN0ZXApKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LT5pc0VtcHR5KCkpCkBAIC03MywxOSArNzIsMTQgQEAg
Y29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAgICAgICAgICAgIC8vIHRoZSB3
YXN0ZWQgc3BhY2UgYXQgdGhlIHRhaWwgZW5kIG9mIGEgTWFya2VkQmxvY2spIHdoaWxlIHByb2Nl
ZWRpbmcgcm91Z2hseSBpbiBhbiBleHBvbmVudGlhbAogICAgICAgICAgICAgLy8gd2F5IHN0YXJ0
aW5nIGF0IGp1c3QgYWJvdmUgdGhlIHByZWNpc2Ugc2l6ZSBjbGFzc2VzIHRvIGZvdXIgY2VsbHMg
cGVyIGJsb2NrLgogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcFNp
emVDbGFzc2VzKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hcmtlZCBibG9jayBw
YXlsb2FkIHNpemU6ICIsIHN0YXRpY19jYXN0PHNpemVfdD4oTWFya2VkU3BhY2U6OmJsb2NrUGF5
bG9hZCksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVD
bGFzc2VzKCksICIgICAgTWFya2VkIGJsb2NrIHBheWxvYWQgc2l6ZTogIiwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IDsgKytpKSB7CiAgICAgICAgICAgICAgICAgZG91
YmxlIGFwcHJveGltYXRlU2l6ZSA9IE1hcmtlZFNwYWNlOjpwcmVjaXNlQ3V0b2ZmICogcG93KE9w
dGlvbnM6OnNpemVDbGFzc1Byb2dyZXNzaW9uKCksIGkpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIE5leHQgc2l6ZSBjbGFzcyBhcyBhIGRvdWJsZTogIiwgYXBw
cm94aW1hdGVTaXplLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25z
OjpkdW1wU2l6ZUNsYXNzZXMoKSwgIiAgICBOZXh0IHNpemUgY2xhc3MgYXMgYSBkb3VibGU6ICIs
IGFwcHJveGltYXRlU2l6ZSk7CiAgICAgICAgIAogICAgICAgICAgICAgICAgIHNpemVfdCBhcHBy
b3hpbWF0ZVNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihhcHByb3hpbWF0ZVNpemUp
OwotICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2Vz
KCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBOZXh0IHNpemUgY2xhc3MgYXMg
Ynl0ZXM6ICIsIGFwcHJveGltYXRlU2l6ZUluQnl0ZXMsICJcbiIpOworICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpLCAiICAgIE5leHQgc2l6ZSBj
bGFzcyBhcyBieXRlczogIiwgYXBwcm94aW1hdGVTaXplSW5CeXRlcyk7CiAgICAgICAgIAogICAg
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjb21wdXRlciBkaWQgdGhlIG1hdGgg
Y29ycmVjdGx5LgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFwcHJveGltYXRlU2l6
ZUluQnl0ZXMgPj0gTWFya2VkU3BhY2U6OnByZWNpc2VDdXRvZmYpOwpAQCAtOTUsMjUgKzg5LDE5
IEBAIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBzaXplQ2xhc3NlcygpCiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVDbGFzcyA9CiAgICAgICAgICAgICAgICAgICAg
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRTcGFjZTo6c2l6ZVN0ZXA+KGFwcHJveGlt
YXRlU2l6ZUluQnl0ZXMpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChP
cHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIFNpemUgY2xhc3M6ICIsIHNpemVDbGFzcywgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2VzKCksICIgICAgU2l6ZSBjbGFzczogIiwg
c2l6ZUNsYXNzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBPcHRpbWl6
ZSB0aGUgc2l6ZSBjbGFzcyBzbyB0aGF0IHRoZXJlIGlzbid0IGFueSBzbG9wIGF0IHRoZSBlbmQg
b2YgdGhlIGJsb2NrJ3MKICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkLgogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8g
c2l6ZUNsYXNzOwogICAgICAgICAgICAgICAgIHNpemVfdCBwb3NzaWJseUJldHRlclNpemVDbGFz
cyA9IChNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbHNQZXJCbG9jaykgJiB+KE1hcmtl
ZFNwYWNlOjpzaXplU3RlcCAtIDEpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIFBvc3NpYmx5IGJldHRlciBzaXplIGNsYXNzOiAiLCBwb3NzaWJseUJldHRlclNp
emVDbGFzcywgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVt
cFNpemVDbGFzc2VzKCksICIgICAgUG9zc2libHkgYmV0dGVyIHNpemUgY2xhc3M6ICIsIHBvc3Np
Ymx5QmV0dGVyU2l6ZUNsYXNzKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoZSBzaXplIGNsYXNz
IHdlIGp1c3QgY2FtZSB1cCB3aXRoIGlzIGJldHRlciB0aGFuIHRoZSBvdGhlciBvbmUgaWYgaXQg
cmVkdWNlcwogICAgICAgICAgICAgICAgIC8vIHRvdGFsIHdhc3RhZ2UgYXNzdW1pbmcgd2Ugb25s
eSBhbGxvY2F0ZSBjZWxscyBvZiB0aGF0IHNpemUuCiAgICAgICAgICAgICAgICAgc2l6ZV90IG9y
aWdpbmFsV2FzdGFnZSA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLSBjZWxsc1BlckJsb2Nr
ICogc2l6ZUNsYXNzOwogICAgICAgICAgICAgICAgIHNpemVfdCBuZXdXYXN0YWdlID0gKHBvc3Np
Ymx5QmV0dGVyU2l6ZUNsYXNzIC0gc2l6ZUNsYXNzKSAqIGNlbGxzUGVyQmxvY2s7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3Nlcygp
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT3JpZ2luYWwgd2FzdGFnZTogIiwg
b3JpZ2luYWxXYXN0YWdlLCAiLCBuZXcgd2FzdGFnZTogIiwgbmV3V2FzdGFnZSwgIlxuIik7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2VzKCksICIg
ICAgT3JpZ2luYWwgd2FzdGFnZTogIiwgb3JpZ2luYWxXYXN0YWdlLCAiLCBuZXcgd2FzdGFnZTog
IiwgbmV3V2FzdGFnZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc2l6ZV90
IGJldHRlclNpemVDbGFzczsKICAgICAgICAgICAgICAgICBpZiAobmV3V2FzdGFnZSA+IG9yaWdp
bmFsV2FzdGFnZSkKQEAgLTEyMSw4ICsxMDksNyBAQCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgc2l6
ZUNsYXNzZXMoKQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmV0
dGVyU2l6ZUNsYXNzID0gcG9zc2libHlCZXR0ZXJTaXplQ2xhc3M7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpKQotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2hvb3Npbmcgc2l6ZSBjbGFzczogIiwgYmV0dGVy
U2l6ZUNsYXNzLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpk
dW1wU2l6ZUNsYXNzZXMoKSwgIiAgICBDaG9vc2luZyBzaXplIGNsYXNzOiAiLCBiZXR0ZXJTaXpl
Q2xhc3MpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChiZXR0ZXJTaXpl
Q2xhc3MgPT0gcmVzdWx0LT5sYXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGVmZW5z
ZSBmb3Igd2hlbiBleHBTdGVwIGlzIHNtYWxsLgpAQCAtMTQ5LDggKzEzNiw3IEBAIGNvbnN0IFZl
Y3RvcjxzaXplX3Q+JiBzaXplQ2xhc3NlcygpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5zaHJp
bmtDYXBhY2l0eShpdCAtIHJlc3VsdC0+YmVnaW4oKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAgICAgICBk
YXRhTG9nKCJKU0MgSGVhcCBNYXJrZWRTcGFjZSBzaXplIGNsYXNzIGR1bXA6ICIsIGxpc3REdW1w
KCpyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBT
aXplQ2xhc3NlcygpLCAiSlNDIEhlYXAgTWFya2VkU3BhY2Ugc2l6ZSBjbGFzcyBkdW1wOiAiLCBs
aXN0RHVtcCgqcmVzdWx0KSk7CiAKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYW4gb3B0aW1pYXRp
b24gaW4gTWFya2VkU3BhY2U6Om9wdGltYWxTaXplRm9yKCkgdGhhdCBhc3N1bWVzIHRoaW5ncyBh
Ym91dAogICAgICAgICAgICAgLy8gdGhlIHNpemUgY2xhc3MgdGFibGUuIFRoaXMgY2hlY2tzIG91
ciByZXN1bHRzIGFnYWluc3QgdGhhdCBmdW5jdGlvbidzIGFzc3VtcHRpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCmluZGV4IDNiYWI3
Njc5YzU1Li42ZjRkYzE3ODAzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50LmNwcApAQCAtNzIsOCArNzIsNyBAQCBkb3VibGUgTWFya2luZ0Nv
bnN0cmFpbnQ6OndvcmtFc3RpbWF0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIAogdm9pZCBNYXJr
aW5nQ29uc3RyYWludDo6cHJlcGFyZVRvRXhlY3V0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgY29u
c3RyYWludFNvbHZpbmdMb2NrZXIsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmIChP
cHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKGFiYnJldmlhdGVkTmFtZSgpKTsKKyAg
ICBkYXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgYWJicmV2aWF0ZWROYW1lKCkpOwogICAgIFZp
c2l0Q291bnRlciB2aXNpdENvdW50ZXIodmlzaXRvcik7CiAgICAgcHJlcGFyZVRvRXhlY3V0ZUlt
cGwoY29uc3RyYWludFNvbHZpbmdMb2NrZXIsIHZpc2l0b3IpOwogICAgIG1fbGFzdFZpc2l0Q291
bnQgPSB2aXNpdENvdW50ZXIudmlzaXRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IDE3ODBjMDhhNDcwLi5m
ZWE4MDgyY2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2lu
Z0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U2V0LmNwcApAQCAtODMsOCArODMsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U2V0OjphZGQoCiBib29sIE1hcmtpbmdDb25zdHJhaW50U2V0OjpleGVjdXRlQ29udmVyZ2Vu
Y2UoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBleGVjdXRlQ29u
dmVyZ2VuY2VJbXBsKHZpc2l0b3IpOwotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAg
ICBkYXRhTG9nKCIgIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIgIik7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA0LDggKzEwMyw3IEBAIGJvb2wgTWFya2luZ0Nv
bnN0cmFpbnRTZXQ6OmV4ZWN1dGVDb252ZXJnZW5jZUltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgCiAgICAgdW5zaWduZWQgaXRlcmF0aW9uID0gbV9pdGVyYXRpb24rKzsKICAgICAKLSAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiaSMiLCBpdGVyYXRpb24s
ICI6Iik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJpIyIsIGl0ZXJhdGlvbiwg
IjoiKTsKIAogICAgIGlmIChpdGVyYXRpb24gPT0gMSkgewogICAgICAgICAvLyBGaXJzdCBpdGVy
YXRpb24gaXMgYmVmb3JlIGFueSB2aXNpdG9yIGRyYWluaW5nLCBzbyBpdCdzIHVubGlrZWx5IHRv
IHRyaWdnZXIgYW55IGNvbnN0cmFpbnRzCkBAIC0xNzQsOCArMTcyLDcgQEAgdm9pZCBNYXJraW5n
Q29uc3RyYWludFNldDo6ZXhlY3V0ZUFsbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBm
b3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX3NldCkKICAgICAgICAgY29uc3RyYWludC0+ZXhlY3V0
ZSh2aXNpdG9yKTsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygi
ICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiICIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U29sdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U29sdmVyLmNwcAppbmRleCBjYmJiZDMxYzZmZS4uMzczNWJjOTU4NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNvbHZlci5jcHAKQEAgLTYxLDE0ICs2MSwxMiBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29s
dmVyOjpleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVkTGFtYgog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX251bVRocmVhZHNUaGF0TWF5UHJvZHVjZVdvcmspOwogICAg
IAogICAgIGlmIChPcHRpb25zOjp1c2VQYXJhbGxlbE1hcmtpbmdDb25zdHJhaW50U29sdmVyKCkp
IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICBkYXRhTG9nKHBy
ZWZlcmVuY2UgPT0gUGFyYWxsZWxXb3JrRmlyc3QgPyAiUCIgOiAiTiIsICI8Iik7CisgICAgICAg
IGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCBwcmVmZXJlbmNlID09IFBhcmFsbGVsV29ya0Zp
cnN0ID8gIlAiIDogIk4iLCAiPCIpOwogICAgICAgICAKICAgICAgICAgbV9oZWFwLnJ1bkZ1bmN0
aW9uSW5QYXJhbGxlbCgKICAgICAgICAgICAgIFsmXSAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIHsg
cnVuRXhlY3V0aW9uVGhyZWFkKHZpc2l0b3IsIHByZWZlcmVuY2UsIHBpY2tOZXh0KTsgfSk7CiAg
ICAgICAgIAotICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgICAgIGRhdGFM
b2coIj4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICI+Iik7CiAgICAg
fSBlbHNlCiAgICAgICAgIHJ1bkV4ZWN1dGlvblRocmVhZChtX21haW5WaXNpdG9yLCBwcmVmZXJl
bmNlLCBwaWNrTmV4dCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAKaW5kZXggMWE3MTY0ZWVmNjguLmYzMTZmZGVkMGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayhDb250YWluZXJUeXBl
JiBjb250YWluZXIsIEpTQ2UKIHsKICAgICBBU1NFUlQobV9oZWFwLmlzTWFya2VkKGNlbGwpKTsK
ICNpZiBDUFUoWDg2XzY0KQotICAgIGlmIChPcHRpb25zOjpkdW1wWmFwcGVkQ2VsbENyYXNoRGF0
YSgpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBaYXBwZWRDZWxsQ3Jhc2hEYXRh
KCkpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShjZWxsLT5pc1phcHBlZCgpKSkKICAgICAgICAg
ICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChjZWxsKTsKICAgICB9CkBAIC0zOTcsNyArMzk3
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKGNvbnN0
IEpTQ2VsbCogY2VsbCkKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgc28gbXVjaCBi
ZXR0ZXIuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjI0NjIKICNpZiBDUFUoWDg2XzY0KQotICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcFphcHBl
ZENlbGxDcmFzaERhdGEoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcFph
cHBlZENlbGxDcmFzaERhdGEoKSkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gY2VsbC0+c3RydWN0dXJlKHZtKCkpOwogICAgICAgICAgICAgaWYgKExJS0VMWShzdHJ1Y3R1
cmUpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlID0g
JnN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwpAQCAtNzk1LDggKzc5NSw3IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZUFuZERyYWluKE1vbm90b25pY1RpbWUgdGltZW91dCkK
IAogdm9pZCBTbG90VmlzaXRvcjo6ZGlkUmFjZShjb25zdCBWaXNpdFJhY2VLZXkmIHJhY2UpCiB7
Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VWaXNpdFJhY2UoKSkKLSAgICAgICAgZGF0YUxvZyh0
b0NTdHJpbmcoIkdDIHZpc2l0IHJhY2U6ICIsIHJhY2UsICJcbiIpKTsKKyAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlVmlzaXRSYWNlKCksIHRvQ1N0cmluZygiR0MgdmlzaXQgcmFjZTog
IiwgcmFjZSkpOwogICAgIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaGVhcCgpLT5tX3Jh
Y2VNYXJrU3RhY2tMb2NrKTsKICAgICBKU0NlbGwqIGNlbGwgPSByYWNlLmNlbGwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2NoYXN0aWNTcGFjZVRpbWVNdXRh
dG9yU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2NoYXN0aWNT
cGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmNwcAppbmRleCAxNTgzNTVhZDZlOC4uMDE3N2Q5NzU2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2NoYXN0aWNTcGFj
ZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5jcHAKQEAgLTc3LDggKzc3LDcg
QEAgdm9pZCBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcjo6YmVnaW5Db2xsZWN0
aW9uKCkKICAgICAgICAgT3B0aW9uczo6Y29uY3VycmVudEdDTWF4SGVhZHJvb20oKSAqCiAgICAg
ICAgIHN0ZDo6bWF4PGRvdWJsZT4obV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZUF0VGhlQmVnaW5u
aW5nLCBtX2hlYXAubV9tYXhFZGVuU2l6ZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmxvZ0dD
KCkpCi0gICAgICAgIGRhdGFMb2coImNhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGVBdFRo
ZUJlZ2lubmluZyAvIDEwMjQsICJrYiBoPSIsIChtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlQXRU
aGVFbmQgLSBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlQXRUaGVCZWdpbm5pbmcpIC8gMTAyNCwg
ImtiICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiY2E9IiwgbV9ieXRlc0Fs
bG9jYXRlZFRoaXNDeWNsZUF0VGhlQmVnaW5uaW5nIC8gMTAyNCwgImtiIGg9IiwgKG1fYnl0ZXNB
bGxvY2F0ZWRUaGlzQ3ljbGVBdFRoZUVuZCAtIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGVBdFRo
ZUJlZ2lubmluZykgLyAxMDI0LCAia2IgIik7CiAgICAgCiAgICAgbV9iZWZvcmVDb25zdHJhaW50
cyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogfQpAQCAtMTEwLDggKzEwOSw3IEBAIHZvaWQgU3Rv
Y2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI6OmRpZEV4ZWN1dGVDb25zdHJhaW50cygp
CiAgICAgICAgIGNvbnN0cmFpbnRFeGVjdXRpb25EdXJhdGlvbiAqIG1fcGF1c2VTY2FsZSwKICAg
ICAgICAgbV9taW5pbXVtUGF1c2UpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQot
ICAgICAgICBkYXRhTG9nKCJ0cD0iLCBtX3RhcmdldFBhdXNlLm1pbGxpc2Vjb25kcygpLCAibXMg
Iik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJ0cD0iLCBtX3RhcmdldFBhdXNl
Lm1pbGxpc2Vjb25kcygpLCAibXMgIik7CiAgICAgCiAgICAgbV9wbGFubmVkUmVzdW1lVGltZSA9
IHNuYXBzaG90Lm5vdygpICsgbV90YXJnZXRQYXVzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCBkNzcxNzk0NWIzNS4uZTQyNDhmMjIyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6Omxpbmso
KQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNo
ZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihtX2FyaXR5Q2hlY2sp
OwogCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSB7CisgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxl
ci0+ZHVtcChwYXRjaEJ1ZmZlcik7CiAgICAgICAgIHBhdGNoQnVmZmVyLmRpZEFscmVhZHlEaXNh
c3NlbWJsZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCmluZGV4IGI3ZDBjYTIzNThiLi4xNjEwZGNlYjQ1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgZ2Vu
ZXJpY1Vud2luZChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBDYWxsRnJhbWUqIHRvcEpTQ2FsbEZy
YW1lID0gdm0udG9wSlNDYWxsRnJhbWUoKTsKLSAgICBpZiAoT3B0aW9uczo6YnJlYWtPblRocm93
KCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6YnJlYWtPblRocm93KCkpKSB7CiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdG9wSlNDYWxsRnJhbWUtPmNvZGVCbG9jaygpOwog
ICAgICAgICBkYXRhTG9nKCJJbiBjYWxsIGZyYW1lICIsIFJhd1BvaW50ZXIodG9wSlNDYWxsRnJh
bWUpLCAiIGZvciBjb2RlIGJsb2NrICIsIGNvZGVCbG9jaywgIlxuIik7CiAgICAgICAgIENSQVNI
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAw
ODJhNzgzMDg0ZC4uZGJhMTAxM2I3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMTUzOSw4ICsxNTM5LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3Qg
Ynl0ZWMKICAgICBpZiAoIWNvZGVCbG9jay0+Y2hlY2tJZk9wdGltaXphdGlvblRocmVzaG9sZFJl
YWNoZWQoKSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5
T3B0aW1pemVUb0RGRyIsICgiY291bnRlciA9ICIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50
ZXIoKSkpOwogICAgICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgZGF0
YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNh
dXNlIHRoZSB0aHJlc2hvbGQgaGFzbid0IGJlZW4gcmVhY2hlZC5cbiIpOworICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDaG9vc2luZyBub3QgdG8gb3B0aW1pemUg
IiwgKmNvZGVCbG9jaywgIiB5ZXQsIGJlY2F1c2UgdGhlIHRocmVzaG9sZCBoYXNuJ3QgYmVlbiBy
ZWFjaGVkLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgIH0KICAg
ICAKQEAgLTE1NTQsOCArMTU1Myw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgaWYg
KGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQpIHsKICAgICAgICAgQ09ERUJMT0NL
X0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoInNob3VsZCBhbHdh
eXMgYmUgaW5saW5lZCIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRPcHRpbWl6
ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2
ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGlt
aXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVk
ID09IHRydWUuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNl
IG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRydWUuIik7CiAgICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiAgICAgfQogCkBAIC0xNjEwLDE0ICsxNjA4LDEyIEBAIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIs
IHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpKSB7CiAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
ImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAg
ICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKLSAgICAgICAgICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgICAgIGRhdGFMb2co
IkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3Qg
aGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQuXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiB3
YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQu
Iik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICAg
ICAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsK
LSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAgICAgICAg
ICBkYXRhTG9nKCJDb25zaWRlcmluZyBPU1IgIiwgY29kZUJsb2NrLCAiIC0+ICIsIHJlcGxhY2Vt
ZW50LCAiLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwg
IkNvbnNpZGVyaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgcmVwbGFjZW1lbnQsICIuIik7
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LCB0aGVuIGl0
IG11c3QgYmUgdGhlIGNhc2UgdGhhdCB3ZSBlbnRlcmVkCiAgICAgICAgIC8vIGN0aV9vcHRpbWl6
ZSBmcm9tIGEgbG9vcC4gVGhhdCdzIGJlY2F1c2UgaWYgdGhlcmUncyBhbiBvcHRpbWl6ZWQgcmVw
bGFjZW1lbnQsCiAgICAgICAgIC8vIHRoZW4gYWxsIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gd2ls
bCBiZSByZWxpbmtlZCB0byB0aGUgcmVwbGFjZW1lbnQgYW5kIHNvCkBAIC0xNjMzLDI3ICsxNjI5
LDIyIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXpl
KFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIC8vIGFkZGl0aW9uYWwgY2hl
Y2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWNvbXBpbGF0aW9uIHRocmFz
aGluZy4KICAgICAgICAgaWYgKHJlcGxhY2VtZW50LT5zaG91bGRSZW9wdGltaXplRnJvbUxvb3BO
b3coKSkgewogICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxh
eU9wdGltaXplVG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIGZyb20gbG9vcCBub3ciKSk7Ci0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewotICAgICAg
ICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0
aW1pemF0aW9uIG9mICIsIGNvZGVCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgIigiLCByZXBs
YWNlbWVudCwgIikgKGluIGxvb3ApLlxuIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBk
YXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICAgICAgICAgIlRyaWdn
ZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29kZUJsb2NrLAorICAgICAgICAgICAgICAgICIo
IiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS4iKTsKICAgICAgICAgICAgIHJlcGxhY2VtZW50
LT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0
aW9uVHJpZ2dlciwgQ291bnRSZW9wdGltaXphdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFj
b2RlQmxvY2stPnNob3VsZE9wdGltaXplTm93KCkpIHsKICAgICAgICAgICAgIENPREVCTE9DS19M
T0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJpbnN1ZmZpY2llbnQg
cHJvZmlsaW5nIikpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAi
RGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAiLCAqY29kZUJsb2NrLAotICAgICAgICAgICAgICAg
ICAgICAiIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLAorICAg
ICAgICAgICAgICAgICJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICIsICpjb2RlQmxvY2ssCisg
ICAgICAgICAgICAgICAgIiBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuIik7CiAg
ICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAgICAgICAgICBkYXRh
TG9nKCJUcmlnZ2VyaW5nIG9wdGltaXplZCBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAi
XG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiVHJpZ2dl
cmluZyBvcHRpbWl6ZWQgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jayk7CiAKICAgICAgICAg
dW5zaWduZWQgbnVtVmFyc1dpdGhWYWx1ZXM7CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4KQpA
QCAtMTY4NSwxMCArMTY3Niw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgCiAgICAg
aWYgKHZvaWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBhcmVPU1JFbnRyeSh2bSwgY2FsbEZyYW1l
LCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAgIENPREVCTE9D
S19MT0dfRVZFTlQob3B0aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIGJ5
dGVjb2RlSW5kZXgpKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcg
T1NSICIsIGNvZGVCbG9jaywgIiAtPiAiLCBvcHRpbWl6ZWRDb2RlQmxvY2ssICIuXG4iKTsKLSAg
ICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJQZXJm
b3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2NrKTsKIAog
ICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwogICAgICAgICBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGltaXplKFRydWVUcmlTdGF0ZSk7CkBAIC0xNjk3
LDEyICsxNjg1LDEwIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQodGFyZ2V0UEMsIGRhdGFCdWZmZXIpOwogICAgIH0KIAotICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAg
ICAgICAiT3B0aW1pemluZyAiLCBjb2RlQmxvY2ssICIgLT4gIiwgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLAotICAgICAgICAgICAgIiBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVs
YXkgb2YgIiwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KCksICIuXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LAorICAgICAgICAiT3B0aW1pemluZyAiLCBjb2RlQmxvY2ssICIgLT4gIiwgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLAorICAgICAgICAiIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwgYWZ0ZXIgYSBk
ZWxheSBvZiAiLAorICAgICAgICBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigp
KTsKIAogICAgIC8vIENvdW50IHRoZSBPU1IgZmFpbHVyZSBhcyBhIHNwZWN1bGF0aW9uIGZhaWx1
cmUuIElmIHRoaXMgaGFwcGVucyBhIGxvdCwgdGhlbgogICAgIC8vIHJlb3B0aW1pemUuCkBAIC0x
NzE4LDExICsxNzA0LDkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAvLyByZW9wdGlt
aXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3VsZFJlb3B0
aW1pemVOb3coKSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRl
bGF5T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIHJlb3B0aW1pemUgbm93IikpOwotICAgICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewotICAgICAgICAgICAgZGF0YUxv
ZygKLSAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCBjb2Rl
QmxvY2ssICIgLT4gIiwKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCks
ICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIpOwotICAgICAgICB9CisgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0aW1p
emF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAtPiAiLAorICAgICAgICAgICAgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLCAiIChhZnRlciBPU1IgZmFpbCkuIik7CiAgICAgICAgIG9wdGltaXplZENv
ZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9w
dGltaXphdGlvblRyaWdnZXJPbk9TUkVudHJ5RmFpbCwgQ291bnRSZW9wdGltaXphdGlvbik7CiAg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcAppbmRleCA5MDIwZDM1ODI3NS4uMjAxZWM5YjA2M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC00Nyw4ICs0Nyw3IEBAIHZvaWQgSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlB
c3luY2hyb25vdXNsCiAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlZERGR0NvZGVCbG9jaywgIXBy
b2ZpbGVkREZHQ29kZUJsb2NrKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwogICAgIAotICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgY29tcGlsYXRp
b24gb2YgIiwgKmNvZGVCbG9jaywgIiBkaWQgYmVjb21lIHJlYWR5LlxuIik7CisgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiT3B0aW1pemluZyBjb21waWxhdGlvbiBvZiAi
LCAqY29kZUJsb2NrLCAiIGRpZCBiZWNvbWUgcmVhZHkuIik7CiAgICAgCiAgICAgY29kZUJsb2Nr
LT5hbHRlcm5hdGl2ZSgpLT5mb3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVudGx5KCk7
CiB9CkBAIC01OSw4ICs1OCw3IEBAIHZvaWQgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUoCiAgICAgQVNTRVJUKCFwcm9maWxlZERGR0Nv
ZGVCbG9jayk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsICpj
b2RlQmxvY2ssICIgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSwgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVC
bG9jaywgIiByZXN1bHQ6ICIsIHJlc3VsdCk7CiAgICAgCiAgICAgaWYgKHJlc3VsdCA9PSBDb21w
aWxhdGlvblN1Y2Nlc3NmdWwpCiAgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
Pmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29y
a2xpc3QuY3BwCmluZGV4IGM2NDhkNDZhZjRhLi4xOTgwZWVhZmNiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKQEAgLTU3LDE0ICs1NywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgQ29tcGlsYXRpb25GYWls
ZWQ6CiAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG1fY29kZUJsb2NrLCAiZGVsYXlK
SVRDb21waWxlIiwgKCJjb21waWxhdGlvbiBmYWlsZWQiKSk7Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNv
bXBpbGF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZU9TUigpLCAiICAgIEpJVCBjb21waWxhdGlvbiBmYWlsZWQuIik7CiAgICAgICAgICAg
ICBtX2NvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgICAgICAgICBtX2NvZGVC
bG9jay0+bV9kaWRGYWlsSklUQ29tcGlsYXRpb24gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKLSAgICAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBKSVQg
Y29tcGlsYXRpb24gc3VjY2Vzc2Z1bC5cbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIEpJVCBjb21waWxhdGlvbiBzdWNjZXNzZnVsLiIpOwog
ICAgICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSht
X2NvZGVCbG9jayk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+aml0U29vbigpOwogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCBjZmE2Zjk4NWUzYi4uM2ZlODJmODQ2
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00NSw5ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5v
ZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5s
aW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9jYWxsTGlua0luZm8pIHsKLSAgICAgICAgaWYgKE9w
dGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICAgICAgZGF0YUxvZygiVW5saW5raW5n
IHBvbHltb3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlv
bigpLCAiLCAiLCBtX2NhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCAiXG4iKTsKLQorICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlua2luZyBwb2x5
bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKSwg
IiwgIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSk7CiAgICAgICAgIG1fY2FsbExpbmtJ
bmZvLT51bmxpbmsodm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggNTkxODg4M2E4MzMuLmQxM2Q2ZDVmN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTEwMzgsOCArMTAzOCw3IEBAIHN0YXRpYyB2b2lkIHJldmVydENh
bGwoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmCiAKIHZvaWQgdW5saW5rRm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8p
CiB7Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9n
KCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCksICJcbiIp
OworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLCAiVW5saW5raW5n
IGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpKTsKICAgICAKICAgICByZXZl
cnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVy
YXRvcikucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCkpOwogfQpAQCAtMTA0OSw4ICsx
MDQ4LDggQEAgc3RhdGljIHZvaWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0kKICAgICBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCi0gICAgaWYgKHNob3VsZER1bXBE
aXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQotICAgICAgICBkYXRhTG9nKCJMaW5raW5n
IHZpcnR1YWwgY2FsbCBhdCAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckZyYW1lLT5jb2RlT3JpZ2luKCkpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihzaG91bGREdW1w
RGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSwKKyAgICAgICAgIkxpbmtpbmcgdmlydHVh
bCBjYWxsIGF0ICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9jaywgY2FsbGVyRnJhbWUt
PmNvZGVPcmlnaW4oKSkpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5m
byk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZjE2
NGI4MGIxMTguLjNhNzM5NjcyOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM3OCw4ICszNzgsNyBAQCBpbmxpbmUgYm9vbCBqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyhWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUluZAogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZKSVRUaHJlc2hvbGRSZWFjaGVk
KCkpIHsKICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheUpJVENv
bXBpbGUiLCAoInRocmVzaG9sZCBub3QgcmVhY2hlZCwgY291bnRlciA9ICIsIGNvZGVCbG9jay0+
bGxpbnRFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NS
KCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgIEpJVCB0aHJlc2hvbGQgc2hvdWxkIGJlIGxp
ZnRlZC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIg
ICAgSklUIHRocmVzaG9sZCBzaG91bGQgYmUgbGlmdGVkLiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIApAQCAtMzg3LDggKzM4Niw3IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVBbmRTZXRIZXVyaXN0aWNzKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
SW5kCiAgICAgCiAgICAgc3dpdGNoIChjb2RlQmxvY2stPmppdFR5cGUoKSkgewogICAgIGNhc2Ug
SklUVHlwZTo6QmFzZWxpbmVKSVQ6IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5c
biIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgQ29k
ZSB3YXMgYWxyZWFkeSBjb21waWxlZC4iKTsKICAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQwNSwxMSArNDAzLDkgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVJbmQKIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCiB7
Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRhTG9nKAotICAg
ICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCAiLCBuYW1lLCAiIHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAiLAotICAgICAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCks
ICJcbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisg
ICAgICAgICpjb2RlQmxvY2ssICI6IEVudGVyZWQgIiwgbmFtZSwgIiB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gIiwKKyAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwogICAg
IAogICAgIGlmICghc2hvdWxkSklUKGNvZGVCbG9jaykpIHsKICAgICAgICAgY29kZUJsb2NrLT5k
b250SklUQW55dGltZVNvb24oKTsKQEAgLTQ3MSwxMSArNDY3LDkgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0wobG9vcF9vc3IpCiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAKICNpZiBF
TkFCTEUoSklUKQotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0
YUxvZygKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCiAgICAgICAgICAg
ICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAi
LAotICAgICAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCksICJcbiIpOwot
ICAgIH0KKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKICAg
ICAKICAgICBhdXRvIGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKIApAQCAtNTEzLDExICs1MDcsOSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3Qp
OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0g
ICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHJlcGxh
Y2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICIsCi0gICAgICAgICAgICBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKSwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZXBsYWNlIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAiLAorICAgICAgICBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNv
dW50ZXIoKSk7CiAgICAgCiAgICAgaWYgKHNob3VsZEpJVChjb2RlQmxvY2spKQogICAgICAgICBq
aXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyh2bSwgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggMDI4NTVkM2JiZDcu
LjA3MzY5OTk1YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVs
ZUFuYWx5emVyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEpTTW9kdWxlUmVjb3JkKiBNb2R1bGVB
bmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmxleGljYWxWYXJpYWJs
ZXMoKSkKICAgICAgICAgZXhwb3J0VmFyaWFibGUobW9kdWxlUHJvZ3JhbU5vZGUsIHBhaXIua2V5
LCBwYWlyLnZhbHVlKTsKIAotICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlUmVjb3JkKCkpCisg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkpCiAgICAgICAgIG1f
bW9kdWxlUmVjb3JkLT5kdW1wKCk7CiAKICAgICByZXR1cm4gbV9tb2R1bGVSZWNvcmQuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
aW5kZXggNjRkZDNlNjFkN2UuLjRhMWE5MWY0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0yNTIsOCArMjUyLDcgQEAgSlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjppbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIG1v
ZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgU291cmNlT3JpZ2luJiByZWZlcnJl
cikKIHsKLSAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQotICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW2ltcG9ydF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9i
amVjdCwgbW9kdWxlTmFtZSksICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBN
b2R1bGVMb2FkaW5nU3RhdGUoKSwgIkxvYWRlciBbaW1wb3J0XSAiLCBwcmludGFibGVNb2R1bGVL
ZXkoZ2xvYmFsT2JqZWN0LCBtb2R1bGVOYW1lKSk7CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0yNzksOCArMjc4LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpp
bXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogSWRlbnRpZmll
ciBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
CiB7Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAgICAgICAg
ZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xvYmFsT2Jq
ZWN0LCBuYW1lKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVsZUxv
YWRpbmdTdGF0ZSgpLCAiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xv
YmFsT2JqZWN0LCBuYW1lKSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKQogICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKGds
b2JhbE9iamVjdCwgdGhpcywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwpAQCAtMzEw
LDggKzMwOCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAKIEpTSW50ZXJuYWxQcm9taXNl
KiBKU01vZHVsZUxvYWRlcjo6ZmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewot
ICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCi0gICAgICAgIGRhdGFM
b2coIkxvYWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmplY3QsIGtl
eSksICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3Rh
dGUoKSwgIkxvYWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmplY3Qs
IGtleSkpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMzQ1LDggKzM0Miw3IEBAIEpT
T2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVs
ZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgaWYgKE9wdGlvbnM6
OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtldmFs
dWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9iamVjdCwga2V5KSwgIlxuIik7Cisg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpLCAiTG9hZGVy
IFtldmFsdWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9iamVjdCwga2V5KSk7CiAK
ICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVM
b2FkZXJFdmFsdWF0ZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCB0aGlzLCBr
ZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTQ0OSw4ICs0NDUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbihKU0dsb2JhbAogICAgIGlmICghbW9kdWxlUmVjb3JkKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgaWYgKE9wdGlv
bnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAgICAgICAgZGF0YUxvZygiTG9hZGVyIFts
aW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIgW2xpbmtdICIsIG1v
ZHVsZVJlY29yZC0+bW9kdWxlS2V5KCkpOwogCiAgICAgbW9kdWxlUmVjb3JkLT5saW5rKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IGZmODQyMDI1ZDU3Li43NTQzNjk0
Mjg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAKQEAgLTE5Niw4ICsxOTYsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6Omlu
c3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2RlVHlwZQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmljQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSA9PSB0aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNFeGVjdXRhYmxl
U2NyaXB0KGdlbmVyaWNDb2RlQmxvY2stPmppdFR5cGUoKSkpOwogICAgICAgICAKLSAgICAgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAgICAgICAgICBkYXRhTG9n
KCJJbnN0YWxsaW5nICIsICpnZW5lcmljQ29kZUJsb2NrLCAiXG4iKTsKKyAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiSW5zdGFsbGluZyAiLCAqZ2VuZXJpY0NvZGVC
bG9jayk7CiAgICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkodm0ubV9wZXJCeXRlY29kZVBy
b2ZpbGVyKSkKICAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+ZW5zdXJlQnl0
ZWNvZGVzRm9yKGdlbmVyaWNDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IGE5ZmU3NGE0YjdmLi44ODAzYTcxNGU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtOTM4LDcgKzkzOCw3IEBAIEV4Y2VwdGlvbiogVk06OnRocm93RXhj
ZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9u
CiAgICAgaWYgKCF0aHJvd09yaWdpbkZyYW1lKQogICAgICAgICB0aHJvd09yaWdpbkZyYW1lID0g
Z2xvYmFsT2JqZWN0LT5kZXByZWNhdGVkQ2FsbEZyYW1lRm9yRGVidWdnZXIoKTsKIAotICAgIGlm
IChPcHRpb25zOjpicmVha09uVGhyb3coKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpi
cmVha09uVGhyb3coKSkpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0aHJvd09y
aWdpbkZyYW1lID8gdGhyb3dPcmlnaW5GcmFtZS0+Y29kZUJsb2NrKCkgOiBudWxscHRyOwogICAg
ICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gaW4gY2FsbCBmcmFtZSAiLCBSYXdQb2lu
dGVyKHRocm93T3JpZ2luRnJhbWUpLCAiIGZvciBjb2RlIGJsb2NrICIsIGNvZGVCbG9jaywgIlxu
Iik7CiAgICAgICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAKaW5kZXggOTZmMGRhZTIyYzkuLjUyNGE4NWU4ZmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29tcGlsZXJUaW1pbmdT
Y29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvbXBpbGVyVGltaW5n
U2NvcGUuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgQ29tcGlsZXJUaW1pbmdTY29wZTo6Q29tcGls
ZXJUaW1pbmdTY29wZShjb25zdCBjaGFyKiBjb21waWxlck5hbWUsIGNvbnN0IGNoYXIqIG4KICAg
ICA6IG1fY29tcGlsZXJOYW1lKGNvbXBpbGVyTmFtZSkKICAgICAsIG1fbmFtZShuYW1lKQogewot
ICAgIGlmIChPcHRpb25zOjpsb2dQaGFzZVRpbWVzKCkpCisgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmxvZ1BoYXNlVGltZXMoKSkpCiAgICAgICAgIG1fYmVmb3JlID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiB9CiAKIENvbXBpbGVyVGltaW5nU2NvcGU6On5Db21waWxlclRpbWluZ1Njb3BlKCkK
IHsKLSAgICBpZiAoT3B0aW9uczo6bG9nUGhhc2VUaW1lcygpKSB7CisgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmxvZ1BoYXNlVGltZXMoKSkpIHsKICAgICAgICAgU2Vjb25kcyBkdXJhdGlvbiA9
IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9iZWZvcmU7CiAgICAgICAgIGRhdGFMb2coCiAgICAg
ICAgICAgICAiWyIsIG1fY29tcGlsZXJOYW1lLCAiXSAiLCBtX25hbWUsICIgdG9vazogIiwgZHVy
YXRpb24ubWlsbGlzZWNvbmRzKCksICIgbXMgIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAKaW5kZXggZmRlYWI5NDBlMTkuLmU0MDcyNjk5NzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBtX2Zhc3RNZW1vcmllcy5zaXplKCkgPj0gbV9tYXhGYXN0
TWVtb3J5Q291bnQgLyAyID8gTWVtb3J5UmVzdWx0OjpTdWNjZXNzQW5kTm90aWZ5TWVtb3J5UHJl
c3N1cmUgOiBNZW1vcnlSZXN1bHQ6OlN1Y2Nlc3MpOwogICAgICAgICB9KCk7CiAgICAgICAgIAot
ICAgICAgICBpZiAoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSkKLSAgICAgICAgICAg
IGRhdGFMb2coIkFsbG9jYXRlZCB2aXJ0dWFsOiAiLCByZXN1bHQsICI7IHN0YXRlOiAiLCAqdGhp
cywgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVt
b3J5KCksICJBbGxvY2F0ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwgKnRoaXMp
OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMzQsOCArMTMz
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mYXN0TWVtb3JpZXMucmVtb3ZlRmlyc3QoYmFz
ZVB0cik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjpsb2dXZWJB
c3NlbWJseU1lbW9yeSgpKQotICAgICAgICAgICAgZGF0YUxvZygiRnJlZWQgdmlydHVhbDsgc3Rh
dGU6ICIsICp0aGlzLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6bG9nV2Vi
QXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7CiAgICAg
fQogICAgIAogICAgIGJvb2wgaXNBZGRyZXNzSW5GYXN0TWVtb3J5KHZvaWQqIGFkZHJlc3MpCkBA
IC0xNzIsOCArMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIE1lbW9yeVJlc3Vs
dDo6U3VjY2VzczsKICAgICAgICAgfSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKE9wdGlvbnM6
OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCkpCi0gICAgICAgICAgICBkYXRhTG9nKCJBbGxvY2F0ZWQg
cGh5c2ljYWw6ICIsIGJ5dGVzLCAiLCAiLCBNZW1vcnlSZXN1bHQ6OnRvU3RyaW5nKHJlc3VsdCks
ICI7IHN0YXRlOiAiLCAqdGhpcywgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJBbGxvY2F0ZWQgcGh5c2ljYWw6ICIsIGJ5dGVzLCAi
LCAiLCBNZW1vcnlSZXN1bHQ6OnRvU3RyaW5nKHJlc3VsdCksICI7IHN0YXRlOiAiLCAqdGhpcyk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4NSw4ICsxODIs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3BoeXNpY2FsQnl0ZXMgLT0gYnl0ZXM7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjpsb2dXZWJBc3NlbWJseU1lbW9y
eSgpKQotICAgICAgICAgICAgZGF0YUxvZygiRnJlZWQgcGh5c2ljYWw6ICIsIGJ5dGVzLCAiOyBz
dGF0ZTogIiwgKnRoaXMsICJcbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpsb2dX
ZWJBc3NlbWJseU1lbW9yeSgpLCAiRnJlZWQgcGh5c2ljYWw6ICIsIGJ5dGVzLCAiOyBzdGF0ZTog
IiwgKnRoaXMpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5j
cHAKaW5kZXggMzY0OWU1NzBmMmYuLmQ1M2FiMjY4MDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0
YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Byb21pc2UqIHByb21pc2UsIEpTCiAgICAgICAgIHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2Jq
ZWN0LCBpbnN0YW5jZSk7CiAgICAgZWxzZSBpZiAocmVzb2x2ZUtpbmQgPT0gUmVzb2x2ZTo6V2l0
aE1vZHVsZVJlY29yZCkgewogICAgICAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBpbnN0YW5jZS0+
bW9kdWxlTmFtZXNwYWNlT2JqZWN0KCktPm1vZHVsZVJlY29yZCgpOwotICAgICAgICBpZiAoT3B0
aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQorICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
ZHVtcE1vZHVsZVJlY29yZCgpKSkKICAgICAgICAgICAgIG1vZHVsZVJlY29yZC0+ZHVtcCgpOwog
ICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3JkKTsKICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA0MTJh
ODExMjc4NC4uZDJmMGU4ZTJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
Y3BwCkBAIC00MjQzLDcgKzQyNDMsNyBAQCB2b2lkIGppdENvbXBpbGUoWWFyclBhdHRlcm4mIHBh
dHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNoYXJTaXplIGNoYXJTaQogICAgICAg
ICBZYXJyR2VuZXJhdG9yPEluY2x1ZGVTdWJwYXR0ZXJucz4odm0sIHBhdHRlcm4sIHBhdHRlcm5T
dHJpbmcsIGNvZGVCbG9jaywgY2hhclNpemUpLmNvbXBpbGUoKTsKIAogICAgIGlmIChhdXRvIGZh
aWx1cmVSZWFzb24gPSBjb2RlQmxvY2suZmFpbHVyZVJlYXNvbigpKSB7Ci0gICAgICAgIGlmIChP
cHRpb25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKSkgewogICAgICAgICAg
ICAgcGF0dGVybi5kdW1wUGF0dGVyblN0cmluZyhXVEY6OmRhdGFGaWxlKCksIHBhdHRlcm5TdHJp
bmcpOwogICAgICAgICAgICAgZGF0YUxvZygiIDogIik7CiAgICAgICAgICAgICBkdW1wQ29tcGls
ZUZhaWx1cmUoKmZhaWx1cmVSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCmluZGV4IGViNjBkYmU0N2YxLi5jNTA4MjA4NTYyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAg
RXJyb3JDb2RlIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
Zywgdm9pZCogc3RhY2tMaW1pdCkKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAK
LSAgICBpZiAoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkKKyAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkpCiAgICAgICAg
IGR1bXBQYXR0ZXJuKHBhdHRlcm5TdHJpbmcpOwogCiAgICAgcmV0dXJuIEVycm9yQ29kZTo6Tm9F
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggZmY1NGVhYmZhNjYuLmJiYTk0YTllZjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTAxLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXNlIGRhdGFMb2dJZiBtb3JlIHJlZ3VsYXJseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5oOgorICAgICAgICAoV1RG
OjpkYXRhTG9nKTogTWFya2VkIE5FVkVSX0lOTElORQorCiAyMDIwLTAxLTE1ICBLZWl0aCBNaWxs
ZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBieXRlY29kZSBj
aGVja3BvaW50cyBzaW5jZSBpdCBicmVha3Mgd2F0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0RhdGFMb2cuaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAppbmRleCAwYjg0NGI1MjM1
NC4uOWUzYzc2NmJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgKQEAgLTQwLDcgKzQwLDcgQEAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJV
VEVfUFJJTlRGKDEKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRhdGFMb2dGU3RyaW5nKGNvbnN0
IGNoYXIqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+Ci12b2lkIGRhdGFMb2coY29u
c3QgVHlwZXMmLi4uIHZhbHVlcykKK05FVkVSX0lOTElORSB2b2lkIGRhdGFMb2coY29uc3QgVHlw
ZXMmLi4uIHZhbHVlcykKIHsKICAgICBkYXRhRmlsZSgpLnByaW50KHZhbHVlcy4uLik7CiB9Cg==
</data>
<flag name="review"
          id="403635"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="403636"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387962</attachid>
            <date>2020-01-16 14:40:48 -0800</date>
            <delta_ts>2020-01-16 15:24:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch206332</filename>
            <type>text/plain</type>
            <size>102017</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVmMTgyZDA2Yjc5Li4xNjRiZGFkZGY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQzIEBACisyMDIwLTAxLTE2ICBSb2Jp
biBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGRhdGFMb2dJ
ZiBtb3JlIHJlZ3VsYXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisg
ICAgICAgIFRoZXJlIGlzIGxvdHMgb2YgY29kZSB0aGF0IHJlYWRzCisgICAgICAgICAgaWYgKE9w
dGlvbnM6OmZvb2JhcigpKQorICAgICAgICAgICAgZGF0YUxvZ0xuKCIuLi4iKQorCisgICAgICAg
IFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBiZW5lZml0cyB0byByZXBsYWNpbmcgdGhvc2UgYnkgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6Zm9vYmFyKCksICIuLi4iKToKKyAgICAgICAgLSBSZWFkYWJpbGl0
eSwgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBsaW5lcyB0YWtlbiBieSBsb2dnaW5nCisgICAg
ICAgIC0gTGVzcyBsaW5lcyBhcHBlYXJpbmcgYXMgbm90LXRha2VuIGluIHRlc3QgY292ZXJhZ2Ug
d3JvbmdseSAod3JvbmdseSBiZWNhdXNlIHdlIHByb2JhYmx5IGRvbid0IGNhcmUgZm9yIHRoZSBj
b3ZlcmFnZSBvZiBsb2dnaW5nIGNvZGUpCisgICAgICAgIC0gcG9zc2libHkgYSB0aW55IHBlcmYg
YmVuZWZpdCBzaW5jZSBkYXRhTG9nSWYgY29ycmVjdGx5IHVzZXMgVU5MSUtFTFkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGZhaXJseSB0cml2aWFsIHJlZmFjdG9yaW5nIHdoZXJlIEkgbG9v
a2VkIGZvciB0aGF0IHBhdHRlcm4gYW5kIHJlcGxhY2VkIGl0IGV2ZXJ5d2hlcmUgaXQgYXBwZWFy
ZWQgaW4gSlNDLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6YXRpb25UaHJlc2hvbGRTY2FsaW5nRmFjdG9yKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkb250T3B0aW1pemVBbnl0aW1lU29vbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6b3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3B0
aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXpl
U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yY2VPcHRpbWl6YXRpb25TbG93UGF0
aENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0T3B0aW1pemF0aW9u
VGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjphZGQpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2Rl
OjpvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpk
b250T3B0aW1pemVBbnl0aW1lU29vbik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6b3B0
aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6b3B0aW1pemVT
b29uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpmb3JjZU9wdGltaXphdGlvblNsb3dQ
YXRoQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpzZXRPU1JFbnRy
eUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKdW1wUmVwbGFjZW1lbnQ6OmZpcmUpOgorICAgICAgICAqIGRmZy9ERkdPU1JF
bnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGls
ZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1Bs
YW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgor
ICAgICAgICAqIGRmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBp
bGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hyb25vdXNseSk6CisgICAgICAgIChKU0M6OkRGRzo6
VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUp
OgorICAgICAgICAqIGRmZy9ERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoSlNDOjpERkc6OlRvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUpOgorICAgICAgICAqIGRmZy9ERkdX
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVh
ZHlQbGFuc0ZvclZNKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzd2VlcFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0Tm93
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cnVuQmVnaW5QaGFzZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OnJ1bkZpeHBvaW50UGhhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpydW5SZWxvb3BQaGFz
ZSk6CisgICAgICAgIChKU0M6OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6CisgICAgICAgIChK
U0M6OkhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCk6CisgICAgICAgICogaGVhcC9NYXJrU3Rh
Y2tNZXJnaW5nQ29uc3RyYWludC5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja01lcmdpbmdD
b25zdHJhaW50OjpwcmVwYXJlVG9FeGVjdXRlSW1wbCk6CisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludC5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtpbmdDb25zdHJhaW50OjpwcmVwYXJlVG9FeGVjdXRlKToKKyAgICAgICAgKiBo
ZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmV4ZWN1dGVDb252ZXJnZW5jZSk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdDb25z
dHJhaW50U2V0OjpleGVjdXRlQ29udmVyZ2VuY2VJbXBsKToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0NvbnN0cmFpbnRTZXQ6OmV4ZWN1dGVBbGwpOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0
cmFpbnRTb2x2ZXIuY3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6
ZXhlY3V0ZSk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6
OlNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayk6CisgICAgICAgIChKU0M6OlNsb3RWaXNp
dG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRpZFJhY2Up
OgorICAgICAgICAqIGhlYXAvU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcjo6YmVn
aW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JT
Y2hlZHVsZXI6OmRpZEV4ZWN1dGVDb25zdHJhaW50cyk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmljVW53aW5kKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2s6OmNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hyb25vdXNseSk6CisgICAgICAg
IChKU0M6OkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRp
ZENvbXBsZXRlKToKKyAgICAgICAgKiBqaXQvSklUV29ya2xpc3QuY3BwOgorICAgICAgICAoSlND
OjpKSVRXb3JrbGlzdDo6UGxhbjo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbE5vZGU6
OnVubGluayk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp1bmxp
bmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rVmlydHVhbEZvcik6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q29tcGlsZUFuZFNl
dEhldXJpc3RpY3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAo
SlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNlci9Nb2R1
bGVBbmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjphbmFseXplKToK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVMb2FkZXI6OmltcG9ydE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVy
OjpyZXNvbHZlU3luYyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpmZXRjaCk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6Om1v
ZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6aW5zdGFsbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0NvbXBpbGVyVGltaW5nU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpDb21waWxlclRpbWluZ1Njb3BlOjpDb21waWxlclRpbWlu
Z1Njb3BlKToKKyAgICAgICAgKEpTQzo6Q29tcGlsZXJUaW1pbmdTY29wZTo6fkNvbXBpbGVyVGlt
aW5nU2NvcGUpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZSk6CisgICAgICAg
ICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6aml0Q29tcGlsZSk6Cisg
ICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQ
YXR0ZXJuOjpjb21waWxlKToKKwogMjAyMC0wMS0xNiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0
ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzIG1pZCBKYW51
YXJ5IDIwMjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggMzNkMmJlZWQy
MDIuLmY1ODUyZDliZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTMwMCw3ICsz
MDAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogCiB2b2lkIHBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJh
dG9yLCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
ciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwg
aW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKIHsKLSAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKQorICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKQogICAg
ICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxVbmxpbmtlZENvZGVCbG9jaz46OmR1bXBCbG9j
ayhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgV1RGOjpkYXRhRmlsZSgpKTsKIAogICAgIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoYnl0ZWNvZGVHZW5lcmF0b3IsIGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MThlMWQyMTM0YS4u
NDcyYThkMTE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQogewogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLCBtX2dyYXBoKTsKIAotICAgIGlmIChPcHRpb25zOjpkdW1w
Qnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpKQogICAgICAgICBkdW1wUmVzdWx0cyhjb2RlQmxv
Y2spOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCmluZGV4IDZmMTQ3OGI0YzU0Li5kMjlmNjBlOTQyOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTIwOSw3ICsyMDksNyBA
QCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICBpZiAoaXNMaW5rZWQo
KSkgewogICAgICAgICBpZiAoc3R1YigpKSB7CiAgICAgICAgICAgICBpZiAoIXN0dWIoKS0+dmlz
aXRXZWFrKHZtKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkg
ewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAg
IkF0ICIsIG1fY29kZU9yaWdpbiwgIiwgIiwgUmF3UG9pbnRlcih0aGlzKSwgIjogY2xlYXJpbmcg
Y2FsbCBzdHViIHRvICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0RHVtcChzdHViKCkt
PnZhcmlhbnRzKCkpLCAiLCBzdHViIHJvdXRpbmUgIiwgUmF3UG9pbnRlcihzdHViKCkpLApAQCAt
MjIwLDE0ICsyMjAsMTQgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9jYWxs
ZWVPckNvZGVCbG9jay5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChpc0RpcmVjdCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2FsbCB0
byAiLCBSYXdQb2ludGVyKGNvZGVCbG9jaygpKSwgIiAoIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50ZXJEdW1wKGNvZGVCbG9jaygpKSwgIikuXG4iKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChjYWxsZWUoKS0+dHlw
ZSgpID09IEpTRnVuY3Rpb25UeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNhbGwgdG8gIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKGNhbGxlZSgpKSwgIiAoIiwKQEAgLTIzNiwx
NCArMjM2LDE0IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNwZWNpZmljQ2FsbGVl
KHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWxsZWUoKSkpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCB0byAiLCBSYXdQ
b2ludGVyKGNhbGxlZSgpKSwgIi5cbiIpOwogICAgICAgICAgICAgICAgICAgICBtX2NsZWFyZWRC
eUdDID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB1bmxpbmsodm0pOwogICAgICAgICB9IGVsc2UgaWYgKGlzRGlyZWN0KCkgJiYgIXZtLmhlYXAu
aXNNYXJrZWQobV9sYXN0U2VlbkNhbGxlZU9yRXhlY3V0YWJsZS5nZXQoKSkpIHsKLSAgICAgICAg
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAg
ICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNhbGwgdG8gIiwgUmF3UG9pbnRlcihleGVjdXRh
YmxlKCkpLAogICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2UgdGhlIGV4ZWN1dGFibGUgaXMg
ZGVhZC5cbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCAzZjMyZmU4N2U0Yy4uYWFlZmFkMmE0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjE5LDggKzEyMTksNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2Rl
LnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFw
LmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHByb3Bl
cnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLiIpOwogICAgICAgICAgICAg
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50
R2V0QnlJZENhY2hlKG1ldGFkYXRhKTsKICAgICAgICAgfSk7CiAKQEAgLTEyMjgsOCArMTIyNyw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsK
ICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3MuXG4i
KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFy
aW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy4iKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3Ry
dWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwogICAgICAg
ICB9KTsKQEAgLTEyNDIsOCArMTI0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8IHZt
LmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVy
ZUlEKSkpCiAgICAgICAgICAgICAgICAgJiYgKCFjaGFpbiB8fCB2bS5oZWFwLmlzTWFya2VkKGNo
YWluKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQg
cHV0IHRyYW5zaXRpb24uXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uLiIpOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEID0gMDsK
QEAgLTEyOTIsOCArMTI4OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCkKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3ltYm9sVGFibGU+JiBzeW1i
b2xUYWJsZSA9IG1ldGFkYXRhLm1fc3ltYm9sVGFibGU7CiAgICAgICAgICAgICBpZiAoIXN5bWJv
bFRhYmxlIHx8IHZtLmhlYXAuaXNNYXJrZWQoc3ltYm9sVGFibGUuZ2V0KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGRlYWQgc3ltYm9sVGFibGUgJXAuXG4i
LCBzeW1ib2xUYWJsZS5nZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlT1NSKCksICJDbGVhcmluZyBkZWFkIHN5bWJvbFRhYmxlICIsIFJhd1BvaW50ZXIoc3lt
Ym9sVGFibGUuZ2V0KCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmNsZWFyKCk7CiAgICAg
ICAgIH0pOwogCkBAIC0xMzA1LDggKzEzMDEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZT4mIHN0cnVjdHVyZSA9IG1ldGFkYXRhLm1fc3RydWN0dXJlOwogICAgICAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUgfHwgdm0uaGVhcC5pc01hcmtlZChzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIHNjb3BlIGFjY2VzcyB3aXRoIHN0cnVj
dHVyZSAlcC5cbiIsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBzY29wZSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1
cmUgIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIHN0cnVjdHVy
ZS5jbGVhcigpOwogICAgICAgICB9OwogCkBAIC0xMzIxLDggKzEzMTYsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICBhdXRvJiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KHN0ZDo6Z2V0PDE+KHBhaXIua2V5KSk7CiAgICAg
ICAgICAgICBPcGNvZGVJRCBvcGNvZGUgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAg
ICAgICAgIGlmIChvcGNvZGUgPT0gb3BfZ2V0X2J5X2lkKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFj
Y2Vzcy4iKTsKICAgICAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoaW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEzNDEsOCArMTMzNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKIAogICAgIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhbJl0o
TExJbnRDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoY2FsbExpbmtJ
bmZvLmlzTGlua2VkKCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgp
KSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwor
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ2xlYXJpbmcg
TExJbnQgY2FsbCBmcm9tICIsICp0aGlzKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby51bmxp
bmsoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVl
KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlKCkpKQpA
QCAtMjE3OCw4ICsyMTcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChD
YWxsRnJhbWUqIGNhbGxlckZyYW1lKQogewogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2Nr
ID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIAotICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlQ2FsbExpbmsoKSkKLSAgICAgICAgZGF0YUxvZygiTm90aWNpbmcgY2FsbCBsaW5rIGZyb20g
IiwgcG9pbnRlckR1bXAoY2FsbGVyQ29kZUJsb2NrKSwgIiB0byAiLCAqdGhpcywgIlxuIik7Cisg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCksICJOb3RpY2luZyBjYWxs
IGxpbmsgZnJvbSAiLCBwb2ludGVyRHVtcChjYWxsZXJDb2RlQmxvY2spLCAiIHRvICIsICp0aGlz
KTsKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoIW1fc2hvdWxkQWx3YXlzQmVJ
bmxpbmVkKQpAQCAtMjE4Nyw4ICsyMTc5LDcgQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29t
aW5nQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZyYW1lKQogICAgIAogICAgIGlmICghY2FsbGVyQ29k
ZUJsb2NrKSB7CiAgICAgICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKLSAgICAgICAgICAgIGRhdGFMb2co
IiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgY2FsbGVyIGlzIG5hdGl2ZS5cbiIpOworICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSwgIiAgICBDbGVhcmluZyBT
QUJJIGJlY2F1c2UgY2FsbGVyIGlzIG5hdGl2ZS4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjIwMyw4ICsyMTk0LDcgQEAgdm9pZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2Fs
bChDYWxsRnJhbWUqIGNhbGxlckZyYW1lKQogICAgIAogICAgIGlmICghREZHOjppc1NtYWxsRW5v
dWdoVG9JbmxpbmVDb2RlSW50byhjYWxsZXJDb2RlQmxvY2spKSB7CiAgICAgICAgIG1fc2hvdWxk
QWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2Fs
bExpbmsoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2Ug
Y2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlQ2FsbExpbmsoKSwgIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgY2FsbGVyIGlzIHRv
byBsYXJnZS4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjIxNCwxNSArMjIwNCwx
MyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpCiAgICAgICAgIC8vIGVuc3VyZXMgdGhhdCBhIGZ1bmN0aW9uIGlzIFNBQkkgb25seSBp
ZiBpdCBpcyBjYWxsZWQgbm8gbW9yZSBmcmVxdWVudGx5IHRoYW4KICAgICAgICAgLy8gYW55IG9m
IGl0cyBjYWxsZXJzLgogICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwot
ICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAgICAgICAgICBkYXRh
TG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBpbiBMTEludC5cbiIpOwor
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSwgIiAgICBDbGVh
cmluZyBTQUJJIGJlY2F1c2UgY2FsbGVyIGlzIGluIExMSW50LiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29k
ZUJsb2NrLT5qaXRUeXBlKCkpKSB7CiAgICAgICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ2FsbExpbmsoKSkKLSAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJjYXVzZSBjYWxsZXIgd2FzIGFscmVhZHkg
b3B0aW1pemVkLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VDYWxs
TGluaygpLCAiICAgIENsZWFyaW5nIFNBQkkgYmNhdXNlIGNhbGxlciB3YXMgYWxyZWFkeSBvcHRp
bWl6ZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yMjMxLDggKzIyMTks
NyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpCiAgICAgICAgIC8vIG9wdGltaXplZCBhbnl0aW1lIHNvb24uIEZvciBldmFsIGNvZGUg
dGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBzaW5jZSB3ZQogICAgICAgICAvLyBkZWxheSBldmFs
IG9wdGltaXphdGlvbiBieSBhICpsb3QqLgogICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5l
ZCA9IGZhbHNlOwotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAg
ICAgICAgICBkYXRhTG9nKCIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIGNhbGxlciBpcyBub3Qg
YSBmdW5jdGlvbi5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlQ2Fs
bExpbmsoKSwgIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgY2FsbGVyIGlzIG5vdCBhIGZ1bmN0
aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMjQxLDggKzIyMjgsNyBAQCB2
b2lkIENvZGVCbG9jazo6bm90aWNlSW5jb21pbmdDYWxsKENhbGxGcmFtZSogY2FsbGVyRnJhbWUp
CiAgICAgdm0oKS50b3BDYWxsRnJhbWUtPml0ZXJhdGUodm0oKSwgZnVuY3Rvcik7CiAKICAgICBp
ZiAoZnVuY3Rvci5kaWRSZWN1cnNlKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VD
YWxsTGluaygpKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVz
ZSByZWN1cnNpb24gd2FzIGRldGVjdGVkLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VDYWxsTGluaygpLCAiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSByZWN1cnNp
b24gd2FzIGRldGVjdGVkLiIpOwogICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI1NSw4ICsyMjQxLDcgQEAgdm9pZCBD
b2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChDYWxsRnJhbWUqIGNhbGxlckZyYW1lKQogICAg
IGlmIChjYW5Db21waWxlKGNhbGxlckNvZGVCbG9jay0+Y2FwYWJpbGl0eUxldmVsU3RhdGUoKSkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5r
KCkpCi0gICAgICAgIGRhdGFMb2coIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgdGhlIGNhbGxl
ciBpcyBub3QgYSBERkcgY2FuZGlkYXRlLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZUNhbGxMaW5rKCksICIgICAgQ2xlYXJpbmcgU0FCSSBiZWNhdXNlIHRoZSBjYWxsZXIg
aXMgbm90IGEgREZHIGNhbmRpZGF0ZS4iKTsKICAgICAKICAgICBtX3Nob3VsZEFsd2F5c0JlSW5s
aW5lZCA9IGZhbHNlOwogI2VuZGlmCkBAIC0yNDA0LDEyICsyMzg5LDkgQEAgZG91YmxlIENvZGVC
bG9jazo6b3B0aW1pemF0aW9uVGhyZXNob2xkU2NhbGluZ0ZhY3RvcigpCiAgICAgCiAgICAgcmVz
dWx0ICo9IGNvZGVUeXBlVGhyZXNob2xkTXVsdGlwbGllcigpOwogICAgIAotICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICp0aGlz
LCAiOiBieXRlY29kZSBjb3N0IGlzICIsIGJ5dGVjb2RlQ29zdCwKLSAgICAgICAgICAgICIsIHNj
YWxpbmcgZXhlY3V0aW9uIGNvdW50ZXIgYnkgIiwgcmVzdWx0LCAiICogIiwgY29kZVR5cGVUaHJl
c2hvbGRNdWx0aXBsaWVyKCksCi0gICAgICAgICAgICAiXG4iKTsKLSAgICB9CisgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLAorICAgICAgICAqdGhpcywgIjogYnl0ZWNvZGUg
Y29zdCBpcyAiLCBieXRlY29kZUNvc3QsCisgICAgICAgICIsIHNjYWxpbmcgZXhlY3V0aW9uIGNv
dW50ZXIgYnkgIiwgcmVzdWx0LCAiICogIiwgY29kZVR5cGVUaHJlc2hvbGRNdWx0aXBsaWVyKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI0OTgsMjIgKzI0ODAsMTkgQEAgYXV0byBD
b2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUo
REZHOjpPU1JFeGl0U3RhdGUKIAogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRp
b24oKQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2co
KnRoaXMsICI6IE9wdGltaXppbmcgbmV4dCBpbnZvY2F0aW9uLlxuIik7CisgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAqdGhpcywgIjogT3B0aW1pemluZyBuZXh0IGludm9j
YXRpb24uIik7CiAgICAgbV9qaXRFeGVjdXRlQ291bnRlci5zZXROZXdUaHJlc2hvbGQoMCwgdGhp
cyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkb250T3B0aW1pemVBbnl0aW1lU29vbigpCiB7Ci0g
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqdGhpcywgIjog
Tm90IG9wdGltaXppbmcgYW55dGltZSBzb29uLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLCAqdGhpcywgIjogTm90IG9wdGltaXppbmcgYW55dGltZSBzb29uLiIp
OwogICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuZGVmZXJJbmRlZmluaXRlbHkoKTsKIH0KIAogdm9p
ZCBDb2RlQmxvY2s6Om9wdGltaXplQWZ0ZXJXYXJtVXAoKQogewotICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coKnRoaXMsICI6IE9wdGltaXppbmcgYWZ0ZXIg
d2FybS11cC5cbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKnRo
aXMsICI6IE9wdGltaXppbmcgYWZ0ZXIgd2FybS11cC4iKTsKICNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICBtX2ppdEV4ZWN1dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZCgKICAgICAgICAgYWRqdXN0
ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcCgp
KSwgdGhpcyk7CkBAIC0yNTIyLDggKzI1MDEsNyBAQCB2b2lkIENvZGVCbG9jazo6b3B0aW1pemVB
ZnRlcldhcm1VcCgpCiAKIHZvaWQgQ29kZUJsb2NrOjpvcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgp
CiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqdGhp
cywgIjogT3B0aW1pemluZyBhZnRlciBsb25nIHdhcm0tdXAuXG4iKTsKKyAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICp0aGlzLCAiOiBPcHRpbWl6aW5nIGFmdGVyIGxvbmcg
d2FybS11cC4iKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBtX2ppdEV4ZWN1dGVDb3VudGVy
LnNldE5ld1RocmVzaG9sZCgKICAgICAgICAgYWRqdXN0ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSksIHRoaXMpOwpAQCAtMjUzMiw4
ICsyNTEwLDcgQEAgdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkKIAog
dm9pZCBDb2RlQmxvY2s6Om9wdGltaXplU29vbigpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqdGhpcywgIjogT3B0aW1pemluZyBzb29uLlxuIik7
CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAqdGhpcywgIjogT3B0aW1p
emluZyBzb29uLiIpOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1faml0RXhlY3V0ZUNvdW50
ZXIuc2V0TmV3VGhyZXNob2xkKAogICAgICAgICBhZGp1c3RlZENvdW50ZXJWYWx1ZShPcHRpb25z
Ojp0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSksIHRoaXMpOwpAQCAtMjU0Miw4ICsyNTE5LDcg
QEAgdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplU29vbigpCiAKIHZvaWQgQ29kZUJsb2NrOjpmb3Jj
ZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVudGx5KCkKIHsKLSAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBGb3JjaW5nIHNsb3cgcGF0
aCBjb25jdXJyZW50bHkuXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICp0aGlzLCAiOiBGb3JjaW5nIHNsb3cgcGF0aCBjb25jdXJyZW50bHkuIik7CiAgICAgbV9q
aXRFeGVjdXRlQ291bnRlci5mb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7CiB9CiAKQEAgLTI1
NTIsNyArMjUyOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRC
YXNlZE9uQ29tcGlsYXRpb25SZXN1bHQoQ29tcGlsYXRpb25SZXN1CiB7CiAgICAgSklUVHlwZSB0
eXBlID0gaml0VHlwZSgpOwogICAgIGlmICh0eXBlICE9IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7
Ci0gICAgICAgIGRhdGFMb2coKnRoaXMsICI6IGV4cGVjdGVkIHRvIGhhdmUgYmFzZWxpbmUgY29k
ZSBidXQgaGF2ZSAiLCB0eXBlLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuKCp0aGlzLCAiOiBl
eHBlY3RlZCB0byBoYXZlIGJhc2VsaW5lIGNvZGUgYnV0IGhhdmUgIiwgdHlwZSk7CiAgICAgICAg
IENSQVNIX1dJVEhfSU5GTyhiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihqaXRDb2RlKCkuZ2V0KCkp
LCBzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CiAgICAgfQogICAgIApAQCAtMjc1Niw4ICsy
NzMyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zKCkKIAogYm9vbCBD
b2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBvcHRpbWl6aW5nICIsICp0aGlz
LCAiLi4uXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDb25z
aWRlcmluZyBvcHRpbWl6aW5nICIsICp0aGlzLCAiLi4uIik7CiAKICAgICBpZiAobV9vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkRlbGF5KCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggYTgyZjkyZGZkNTkuLjI1NTEzNzI5NjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5j
cHAKQEAgLTUwLDggKzUwLDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9jayogb3du
ZXIsIGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAKICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKG93bmVyLCAiZnJlcXVlbnRFeGl0IiwgKHNpdGUpKTsKICAgICAKLSAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZUV4aXRQcm9maWxlKCkpCi0gICAgICAgIGRhdGFMb2cocG9pbnRlckR1bXAob3du
ZXIpLCAiOiBBZGRpbmcgZXhpdCBzaXRlOiAiLCBzaXRlLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5J
ZihPcHRpb25zOjp2ZXJib3NlRXhpdFByb2ZpbGUoKSwgcG9pbnRlckR1bXAob3duZXIpLCAiOiBB
ZGRpbmcgZXhpdCBzaXRlOiAiLCBzaXRlKTsKIAogICAgIEV4aXRQcm9maWxlJiBwcm9maWxlID0g
b3duZXItPnVubGlua2VkQ29kZUJsb2NrKCktPmV4aXRQcm9maWxlKCk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdlZmZh
ZDA3ZjIyLi45ZmZjNTU1MThkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTc0MjEsNyArNzQyMSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgIGRlZmVycmVkU291cmNlRHVtcC5h
cHBlbmQoRGVmZXJyZWRTb3VyY2VEdW1wKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpKTsK
ICAgICB9CiAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpIHsKKyAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpKSB7CiAgICAg
ICAgIGRhdGFMb2coIlBhcnNpbmcgIiwgKmNvZGVCbG9jayk7CiAgICAgICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUoKSkgewogICAgICAgICAgICAgZGF0YUxvZygKQEAgLTc0MzUsNyArNzQzNSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAKICAgICBWZWN0b3I8
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgMzI+IGp1bXBUYXJnZXRzOwogICAgIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7Ci0gICAgaWYgKE9wdGlv
bnM6OmR1bXBCeXRlY29kZUF0REZHVGltZSgpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OmR1bXBCeXRlY29kZUF0REZHVGltZSgpKSkgewogICAgICAgICBkYXRhTG9nKCJKdW1wIHRhcmdl
dHM6ICIpOwogICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBqdW1wVGFyZ2V0cy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKaW5kZXggYTI0MDE0OTIxMzguLmY5YjQ1OTc0OWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIHByaXZhdGU6CiAgICAgQWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RT
dGF0ZT4gbV9pbnRlcnByZXRlcjsKICAgICBCbG9ja1NldCBtX2Jsb2Nrc1dpdGhPU1I7CiAgICAg
Ci0gICAgYm9vbCBtX3ZlcmJvc2U7CisgICAgY29uc3QgYm9vbCBtX3ZlcmJvc2U7CiAgICAgCiAg
ICAgYm9vbCBtX2NoYW5nZWQ7CiAgICAgdW5zaWduZWQgbV9jb3VudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmluZGV4IDliMjFkZjNiNWNmLi4yZGU5ZjFhMTk5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBAIC0xMjgsMjQgKzEy
OCwyMSBAQCBib29sIEpJVENvZGU6OmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVk
KENvZGVCbG9jayogY29kZUJsb2NrKQogdm9pZCBKSVRDb2RlOjpvcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRUeXBlOjpERkdKSVQpOwotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
Ci0gICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRlRMLW9wdGltaXppbmcgbmV4dCBpbnZv
Y2F0aW9uLlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAqY29k
ZUJsb2NrLCAiOiBGVEwtb3B0aW1pemluZyBuZXh0IGludm9jYXRpb24uIik7CiAgICAgdGllclVw
Q291bnRlci5zZXROZXdUaHJlc2hvbGQoMCwgY29kZUJsb2NrKTsKIH0KIAogdm9pZCBKSVRDb2Rl
Ojpkb250T3B0aW1pemVBbnl0aW1lU29vbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBB
U1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKLSAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IE5v
dCBGVEwtb3B0aW1pemluZyBhbnl0aW1lIHNvb24uXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRp
b25zOjp2ZXJib3NlT1NSKCksICpjb2RlQmxvY2ssICI6IE5vdCBGVEwtb3B0aW1pemluZyBhbnl0
aW1lIHNvb24uIik7CiAgICAgdGllclVwQ291bnRlci5kZWZlckluZGVmaW5pdGVseSgpOwogfQog
CiB2b2lkIEpJVENvZGU6Om9wdGltaXplQWZ0ZXJXYXJtVXAoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkRGR0pJVCk7
Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqY29kZUJs
b2NrLCAiOiBGVEwtb3B0aW1pemluZyBhZnRlciB3YXJtLXVwLlxuIik7CisgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAqY29kZUJsb2NrLCAiOiBGVEwtb3B0aW1pemluZyBh
ZnRlciB3YXJtLXVwLiIpOwogICAgIENvZGVCbG9jayogYmFzZWxpbmUgPSBjb2RlQmxvY2stPmJh
c2VsaW5lVmVyc2lvbigpOwogICAgIHRpZXJVcENvdW50ZXIuc2V0TmV3VGhyZXNob2xkKAogICAg
ICAgICBiYXNlbGluZS0+YWRqdXN0ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6dGhyZXNob2xkRm9y
RlRMT3B0aW1pemVBZnRlcldhcm1VcCgpKSwKQEAgLTE1NSw4ICsxNTIsNyBAQCB2b2lkIEpJVENv
ZGU6Om9wdGltaXplQWZ0ZXJXYXJtVXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB2b2lkIEpJVENv
ZGU6Om9wdGltaXplU29vbihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6REZHSklUKTsKLSAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IEZUTC1vcHRpbWl6
aW5nIHNvb24uXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpj
b2RlQmxvY2ssICI6IEZUTC1vcHRpbWl6aW5nIHNvb24uIik7CiAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZSA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CiAgICAgdGllclVwQ291bnRlci5z
ZXROZXdUaHJlc2hvbGQoCiAgICAgICAgIGJhc2VsaW5lLT5hZGp1c3RlZENvdW50ZXJWYWx1ZShP
cHRpb25zOjp0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb24oKSksCkBAIC0xNjYsOCArMTYyLDcg
QEAgdm9pZCBKSVRDb2RlOjpvcHRpbWl6ZVNvb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB2b2lk
IEpJVENvZGU6OmZvcmNlT3B0aW1pemF0aW9uU2xvd1BhdGhDb25jdXJyZW50bHkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5
cGU6OkRGR0pJVCk7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgZGF0
YUxvZygqY29kZUJsb2NrLCAiOiBGb3JjaW5nIHNsb3cgcGF0aCBjb25jdXJyZW50bHkgZm9yIEZU
TCBlbnRyeS5cbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNv
ZGVCbG9jaywgIjogRm9yY2luZyBzbG93IHBhdGggY29uY3VycmVudGx5IGZvciBGVEwgZW50cnku
Iik7CiAgICAgdGllclVwQ291bnRlci5mb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7CiB9CiAK
QEAgLTIwNCw4ICsxOTksOCBAQCB2b2lkIEpJVENvZGU6OnNldE9wdGltaXphdGlvblRocmVzaG9s
ZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKIHZvaWQgSklUQ29kZTo6c2V0T1NSRW50cnlCbG9j
ayhWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENvZGVCbG9jayogb3NyRW50cnlCbG9jaykK
IHsKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAgIGRhdGFMb2coUmF3
UG9pbnRlcih0aGlzKSwgIjogU2V0dGluZyBPU1IgZW50cnkgYmxvY2sgdG8gIiwgUmF3UG9pbnRl
cihvc3JFbnRyeUJsb2NrKSwgIlxuIik7Ci0gICAgICAgIGRhdGFMb2coIk9TUiBlbnRyaWVzIHdp
bGwgZ28gdG8gIiwgb3NyRW50cnlCbG9jay0+aml0Q29kZSgpLT5mdGxGb3JPU1JFbnRyeSgpLT5h
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpLCAiXG4iKTsKKyAgICAgICAgZGF0
YUxvZ0xuKFJhd1BvaW50ZXIodGhpcyksICI6IFNldHRpbmcgT1NSIGVudHJ5IGJsb2NrIHRvICIs
IFJhd1BvaW50ZXIob3NyRW50cnlCbG9jaykpOworICAgICAgICBkYXRhTG9nTG4oIk9TUiBlbnRy
aWVzIHdpbGwgZ28gdG8gIiwgb3NyRW50cnlCbG9jay0+aml0Q29kZSgpLT5mdGxGb3JPU1JFbnRy
eSgpLT5hZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTm90UmVxdWlyZWQpKTsKICAgICB9CiAgICAg
bV9vc3JFbnRyeUJsb2NrLnNldCh2bSwgb3duZXIsIG9zckVudHJ5QmxvY2spOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCmluZGV4IDFl
YmY2OTRjZTRjLi45ZDM5OTRjOTQxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSnVtcFJlcGxhY2VtZW50LmNwcApAQCAtMzYsOCArMzYsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgSnVtcFJlcGxhY2VtZW50OjpmaXJlKCkKIHsKLSAg
ICBpZiAoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2dGKCJGaXJp
bmcganVtcCByZXBsYWNlbWVudCB3YXRjaHBvaW50IGZyb20gJXAsIHRvICVwLlxuIiwgbV9zb3Vy
Y2UuZGF0YUxvY2F0aW9uKCksIG1fZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOworICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLAorICAgICAgICAiRmlyaW5nIGp1
bXAgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludCBmcm9tICIsIFJhd1BvaW50ZXIobV9zb3VyY2UuZGF0
YUxvY2F0aW9uKCkpLAorICAgICAgICAiIHRvICIsIFJhd1BvaW50ZXIobV9kZXN0aW5hdGlvbi5k
YXRhTG9jYXRpb24oKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAobV9z
b3VyY2UsIG1fZGVzdGluYXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCmluZGV4IDQ0OTczMDgzOWM5Li5hMjBkN2QzMjBlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKQEAgLTEwMywxMSArMTAzLDkgQEAgdm9p
ZCogcHJlcGFyZU9TUkVudHJ5KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY28KICAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkco
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKSB7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiREZHIE9TUiBpbiAiLCAqY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLCAiIC0+ICIsICpjb2RlQmxvY2ssCi0gICAgICAgICAgICAi
IGZyb20gIiwgYnl0ZWNvZGVJbmRleCwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgIkRGRyBPU1IgaW4gIiwgKmNvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSwgIiAtPiAiLCAqY29kZUJsb2NrLAorICAgICAgICAiIGZyb20gIiwgYnl0
ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKQEAg
LTEzNCw4ICsxMzIsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogICAgICAgICAvLyAgIGJl
IHN1cGVyIHJhcmUuIEZvciBub3csIGlmIGl0IGRvZXMgaGFwcGVuLCBpdCdsbCBjYXVzZSBzb21l
IGNvbXBpbGF0aW9uCiAgICAgICAgIC8vICAgdGhyYXNoaW5nLgogICAgICAgICAKLSAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1Ig
ZmFpbGVkIGJlY2F1c2UgdGhlIHRhcmdldCBjb2RlIGJsb2NrIGlzIG5vdCBERkcuXG4iKTsKKyAg
ICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIE9TUiBmYWlsZWQg
YmVjYXVzZSB0aGUgdGFyZ2V0IGNvZGUgYmxvY2sgaXMgbm90IERGRy4iKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTQzLDggKzE0MCw3IEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9IGppdENvZGUtPm9zckVudHJ5
RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFlbnRy
eSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgZGF0
YUxvZ0YoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgdGhlIGVudHJ5cG9pbnQgd2FzIG9wdGltaXpl
ZCBvdXQuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
ICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB0aGUgZW50cnlwb2ludCB3YXMgb3B0aW1pemVkIG91dC4i
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTgyLDExICsxNzgs
OSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjbwogICAgICAgICAgICAgdmFsdWUgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KGFyZ3VtZW50IC0gMSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWVudHJ5
LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS52YWxpZGF0ZU9TUkVudHJ5VmFs
dWUodmFsdWUsIEZsdXNoZWRKU1ZhbHVlKSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAg
ICAgICIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIGFyZ3VtZW50ICIsIGFyZ3VtZW50LCAiIGlzICIs
IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiLCBlbnRyeS0+bV9leHBl
Y3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCksICIuXG4iKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgICAg
ICAgICAiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1bWVudCAiLCBhcmd1bWVudCwgIiBpcyAi
LCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiLCBlbnRyeS0+bV9leHBlY3Rl
ZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzcsMTMgKzIzMSwxMSBAQCB2b2lkKiBwcmVwYXJlT1NS
RW50cnkoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjbwogICAgIAogICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+
Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmNhbGxGcmFtZS0+cmVnaXN0
ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2sgLSAxKS5vZmZz
ZXQoKV0pKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAg
ICAgZGF0YUxvZ0YoIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC5c
biIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NS
IGZhaWxlZCBiZWNhdXNlIHN0YWNrIGdyb3d0aCBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICBkYXRhTG9nRigiICAgIE9TUiBzaG91bGQgc3VjY2VlZC5cbiIpOworICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBPU1Igc2hvdWxkIHN1Y2NlZWQuIik7CiAK
ICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbW1pdHRlZCB0byBlbnRlcmluZy4gV2Ugd2ls
bCBkbyBzb21lIHdvcmsgdG8gc2V0IHRoaW5ncyB1cCwKICAgICAvLyBidXQgd2UgYWxzbyByZWx5
IG9uIG91ciBjYWxsZXIgcmVjb2duaXppbmcgdGhhdCB3aGVuIHdlIHJldHVybiBhIG5vbi1udWxs
IHBvaW50ZXIsCkBAIC0yNjIsOCArMjU0LDcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY28KICAg
ICAKICAgICB2b2lkKiB0YXJnZXRQQyA9IGVudHJ5LT5tX21hY2hpbmVDb2RlLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlKCktPmNvbnRh
aW5zKGVudHJ5LT5tX21hY2hpbmVDb2RlLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSkpOwot
ICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2dGKCIgICAgT1NS
IHVzaW5nIHRhcmdldCBQQyAlcC5cbiIsIHRhcmdldFBDKTsKKyAgICBkYXRhTG9nTG5JZihPcHRp
b25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NSIHVzaW5nIHRhcmdldCBQQyAiLCBSYXdQb2ludGVy
KHRhcmdldFBDKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0UEMpOwogICAgICpiaXR3aXNl
X2Nhc3Q8dm9pZCoqPihzY3JhdGNoICsgMSkgPSByZXRhZ0NvZGVQdHIodGFyZ2V0UEMsIE9TUkVu
dHJ5UHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKIApAQCAtMzI0LDgg
KzMxNSw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvCiAgICAgCiAgICAgKmJpdHdpc2VfY2Fz
dDxDb2RlQmxvY2sqKj4ocGl2b3QgLSAxIC0gQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSA9IGNv
ZGVCbG9jazsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBk
YXRhTG9nRigiICAgIE9TUiByZXR1cm5pbmcgZGF0YSBidWZmZXIgJXAuXG4iLCBzY3JhdGNoKTsK
KyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NSIHJldHVybmlu
ZyBkYXRhIGJ1ZmZlciAiLCBSYXdQb2ludGVyKHNjcmF0Y2gpKTsKICAgICByZXR1cm4gc2NyYXRj
aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggMWI4
ZTI3OGU0ZDUuLjQyY2I1ZTY3MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKQEAgLTExMTAsNyArMTExMCw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQo
Q0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAg
ICBqaXQuaml0QXNzZXJ0VGFnc0luUGxhY2UoKTsKIAogICAgIC8vIFByby1mb3JtYSBzdHVmZi4K
LSAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7CisgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkpIHsKICAgICAgICAgU3BlY3VsYXRpb25GYWls
dXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZv
OwogICAgICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKICAgICAg
ICAgZGVidWdJbmZvLT5raW5kID0gZXhpdC5tX2tpbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAppbmRleCBhOTk1OTdmNjY0My4uZTI1YjY4YTZmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcApAQCAtODA3LDcgKzgwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY29tYmluZWRMaXZl
bmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CiAKICAgICAgICAgQ1N0cmluZyBncmFw
aEJlZm9yZVNpbmtpbmc7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlVmFsaWRhdGlvbkZh
aWx1cmUoKSAmJiBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkgeworICAgICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZVZhbGlkYXRpb25GYWlsdXJlKCkgJiYgT3B0
aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmdQ
cmludFN0cmVhbSBvdXQ7CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAob3V0KTsKICAgICAgICAg
ICAgIGdyYXBoQmVmb3JlU2lua2luZyA9IG91dC50b0NTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGJiNWM4MzU5YzEyLi5kMjA4NDc5
NjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC0zNjg0LDggKzM2ODQsNyBAQCB2b2lkIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvYwogICAgIAogICAgIHNh
bml0aXplU3RhY2tGb3JWTShjb2RlQmxvY2stPnZtKCkpOwogCi0gICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHJlb3B0
aW1pemVcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVC
bG9jaywgIjogRW50ZXJlZCByZW9wdGltaXplIik7CiAgICAgLy8gV2UgbXVzdCBiZSBjYWxsZWQg
d2l0aCB0aGUgYmFzZWxpbmUgY29kZSBibG9jay4KICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKIApAQCAtMzY5Niw4ICszNjk1LDcgQEAg
dm9pZCB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVC
bG9jayogb3B0aW1pemVkQ29kZUJsb2MKICAgICAvLyBzdXJlIGJldCB0aGF0IHdlIGRvbid0IGhh
dmUgYW55dGhpbmcgZWxzZSBsZWZ0IHRvIGRvLgogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQg
PSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CiAgICAgaWYgKCFyZXBsYWNlbWVudCB8fCByZXBs
YWNlbWVudCA9PSBjb2RlQmxvY2spIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKLSAgICAgICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogTm90IHJlb3B0aW1pemluZyBi
ZWNhdXNlIHdlJ3ZlIGFscmVhZHkgYmVlbiBqZXR0aXNvbmVkLlxuIik7CisgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNvZGVCbG9jaywgIjogTm90IHJlb3B0aW1p
emluZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgYmVlbiBqZXR0aXNvbmVkLiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtMzcyMyw4ICszNzIxLDcgQEAgdm9pZCB0cmlnZ2VyUmVv
cHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aW1pemVk
Q29kZUJsb2MKICAgICAgICAgJiYgb3B0aW1pemVkQ29kZUJsb2NrLT5zaG91bGRSZW9wdGltaXpl
RnJvbUxvb3BOb3coKTsKICAgICAKICAgICBpZiAoIWRpZEV4aXRBQnVuY2ggJiYgIWRpZEdldFN0
dWNrSW5Mb29wKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAg
ICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IE5vdCByZW9wdGltaXppbmcgIiwgKm9wdGltaXpl
ZENvZGVCbG9jaywgIiBiZWNhdXNlIGl0IGVpdGhlciBkaWRuJ3QgZXhpdCBlbm91Z2ggb3IgZGlk
bid0IGxvb3AgZW5vdWdoIGFmdGVyIGV4aXQuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAqY29kZUJsb2NrLCAiOiBOb3QgcmVvcHRpbWl6aW5nICIsICpv
cHRpbWl6ZWRDb2RlQmxvY2ssICIgYmVjYXVzZSBpdCBlaXRoZXIgZGlkbid0IGV4aXQgZW5vdWdo
IG9yIGRpZG4ndCBsb29wIGVub3VnaCBhZnRlciBleGl0LiIpOwogICAgICAgICBjb2RlQmxvY2st
Pm9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NzQyLDggKzM3MzksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmlnZ2VyRlRMQ29tcGlsZShDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSogaml0Q29kZSkKIHsKICAgICBpZiAoY29kZUJsb2Nr
LT5iYXNlbGluZVZlcnNpb24oKS0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pIHsKICAgICAgICAg
Q09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJhYm9ydEZUTENvbXBpbGUiLCAoKSk7Ci0g
ICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCJE
ZWZlcnJpbmcgRlRMLW9wdGltaXphdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAiIGluZGVmaW5pdGVs
eSBiZWNhdXNlIHRoZXJlIHdhcyBhbiBGVEwgZmFpbHVyZS5cbiIpOworICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJEZWZlcnJpbmcgRlRMLW9wdGltaXphdGlvbiBv
ZiAiLCAqY29kZUJsb2NrLCAiIGluZGVmaW5pdGVseSBiZWNhdXNlIHRoZXJlIHdhcyBhbiBGVEwg
ZmFpbHVyZS4iKTsKICAgICAgICAgaml0Q29kZS0+ZG9udE9wdGltaXplQW55dGltZVNvb24oY29k
ZUJsb2NrKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM3NTEsOCArMzc0Nyw3
IEBAIHN0YXRpYyBib29sIHNob3VsZFRyaWdnZXJGVExDb21waWxlKENvZGVCbG9jayogY29kZUJs
b2NrLCBKSVRDb2RlKiBqaXRDb2RlKQogICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRS
ZXBsYWNlbWVudCgpCiAgICAgICAgICYmICFqaXRDb2RlLT5jaGVja0lmT3B0aW1pemF0aW9uVGhy
ZXNob2xkUmVhY2hlZChjb2RlQmxvY2spKSB7CiAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQo
Y29kZUJsb2NrLCAiZGVsYXlGVExDb21waWxlIiwgKCJjb3VudGVyID0gIiwgaml0Q29kZS0+dGll
clVwQ291bnRlcikpOwotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAg
ICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIEZUTC1vcHRpbWl6ZSAiLCAqY29kZUJsb2Nr
LCAiIHlldC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICJDaG9vc2luZyBub3QgdG8gRlRMLW9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMzc5NCw4
ICszNzg5LDcgQEAgc3RhdGljIHZvaWQgdHJpZ2dlckZUTFJlcGxhY2VtZW50Q29tcGlsZShWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlKgogICAgICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5RlRMQ29tcGlsZSIsICgiY29tcGlsZWQgYW5kIGZhaWxl
ZCIpKTsKICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGZpbmlzaGVkIGNvbXBpbGluZywg
YnV0IGZhaWxlZCBzb21laG93OyBpbiB0aGF0IGNhc2UgdGhlCiAgICAgICAgIC8vIHRocmVzaG9s
ZHMgd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywg
IiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1l
bnQuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ29k
ZSBibG9jayAiLCAqY29kZUJsb2NrLCAiIHdhcyBjb21waWxlZCBidXQgaXQgZG9lc24ndCBoYXZl
IGFuIG9wdGltaXplZCByZXBsYWNlbWVudC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzgyNywxMSArMzgyMSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2Vy
VGllclVwTm93KFZNKiB2bVBvaW50ZXIpCiAgICAgCiAgICAgSklUQ29kZSogaml0Q29kZSA9IGNv
ZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKSB7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBF
bnRlcmVkIHRyaWdnZXJUaWVyVXBOb3cgd2l0aCBleGVjdXRlQ291bnRlciA9ICIsCi0gICAgICAg
ICAgICBqaXRDb2RlLT50aWVyVXBDb3VudGVyLCAiXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLAorICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVk
IHRyaWdnZXJUaWVyVXBOb3cgd2l0aCBleGVjdXRlQ291bnRlciA9ICIsIGppdENvZGUtPnRpZXJV
cENvdW50ZXIpOwogCiAgICAgaWYgKHNob3VsZFRyaWdnZXJGVExDb21waWxlKGNvZGVCbG9jaywg
aml0Q29kZSkpCiAgICAgICAgIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUodm0sIGNvZGVC
bG9jaywgaml0Q29kZSk7CkBAIC0zOTA2LDggKzM4OTcsNyBAQCBzdGF0aWMgY2hhciogdGllclVw
Q29tbW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEJ5dGVjb2RlSW5kZXggb3JpZ2lu
Qnl0ZQogICAgICAgICBpZiAoaXRlciAhPSBqaXRDb2RlLT5ieXRlY29kZUluZGV4VG9TdHJlYW1J
bmRleC5lbmQoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgc3RyZWFtSW5kZXggPSBpdGVyLT52
YWx1ZTsKICAgICAgICAgICAgIGlmIChDb2RlQmxvY2sqIGVudHJ5QmxvY2sgPSBqaXRDb2RlLT5v
c3JFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJPU1IgZW50cnk6IEZyb20gIiwgUmF3
UG9pbnRlcihqaXRDb2RlKSwgIiBnb3QgZW50cnkgYmxvY2sgIiwgUmF3UG9pbnRlcihlbnRyeUJs
b2NrKSwgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiT1NSIGVudHJ5OiBGcm9tICIsIFJhd1BvaW50ZXIoaml0Q29kZSksICIgZ290IGVu
dHJ5IGJsb2NrICIsIFJhd1BvaW50ZXIoZW50cnlCbG9jaykpOwogICAgICAgICAgICAgICAgIGlm
ICh2b2lkKiBhZGRyZXNzID0gRlRMOjpwcmVwYXJlT1NSRW50cnkodm0sIGNhbGxGcmFtZSwgY29k
ZUJsb2NrLCBlbnRyeUJsb2NrLCBvcmlnaW5CeXRlY29kZUluZGV4LCBzdHJlYW1JbmRleCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChlbnRyeUJsb2NrLCAib3Ny
RW50cnkiLCAoImF0ICIsIG9yaWdpbkJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldGFnQ29kZVB0cjxjaGFyKj4oYWRkcmVzcywgSlNFbnRyeVB0clRhZywgYml0
d2lzZV9jYXN0PFB0clRhZz4oY2FsbEZyYW1lKSk7CkBAIC0zOTE5LDggKzM5MDksNyBAQCBzdGF0
aWMgY2hhciogdGllclVwQ29tbW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEJ5dGVj
b2RlSW5kZXggb3JpZ2luQnl0ZQogICAgIGlmICh3b3JrbGlzdFN0YXRlID09IFdvcmtsaXN0OjpD
b21waWxlZCkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5
RlRMQ29tcGlsZSIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAgICAgICAgLy8gVGhpcyBt
ZWFucyB0aGF0IGNvbXBpbGF0aW9uIGZhaWxlZCBhbmQgd2UgYWxyZWFkeSBzZXQgdGhlIHRocmVz
aG9sZHMuCi0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICBk
YXRhTG9nKCJDb2RlIGJsb2NrICIsICpjb2RlQmxvY2ssICIgd2FzIGNvbXBpbGVkIGJ1dCBpdCBk
b2Vzbid0IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LlxuIik7CisgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywg
IiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1l
bnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNDAwNSw4ICszOTk0
LDcgQEAgc3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBCeXRlY29kZUluZGV4IG9yaWdpbkJ5dGUKIAogICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgd2hlcmUgd2UgYXNrIHRoZSBvdXRlciB0byBsb29wIHRvIGltbWVkaWF0ZWx5IGNvbXBpbGUg
aXRzZWxmIGlmIHByb2dyYW0KICAgICAgICAgICAgICAgICAvLyBjb250cm9sIHJlYWNoZXMgaXQu
Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiSW5uZXItbG9vcCAiLCBvcmlnaW5CeXRlY29kZUluZGV4LCAiIGlu
ICIsICpjb2RlQmxvY2ssICIgc2V0dGluZyBwYXJlbnQgbG9vcCAiLCBvc3JFbnRyeUNhbmRpZGF0
ZSwgIidzIHRyaWdnZXIgYW5kIGJhY2tpbmcgb2ZmLlxuIik7CisgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiSW5uZXItbG9vcCAiLCBvcmlnaW5CeXRl
Y29kZUluZGV4LCAiIGluICIsICpjb2RlQmxvY2ssICIgc2V0dGluZyBwYXJlbnQgbG9vcCAiLCBv
c3JFbnRyeUNhbmRpZGF0ZSwgIidzIHRyaWdnZXIgYW5kIGJhY2tpbmcgb2ZmLiIpOwogICAgICAg
ICAgICAgICAgIGppdENvZGUtPnRpZXJVcEVudHJ5VHJpZ2dlcnMuc2V0KG9zckVudHJ5Q2FuZGlk
YXRlLCBKSVRDb2RlOjpUcmlnZ2VyUmVhc29uOjpTdGFydENvbXBpbGF0aW9uKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTQwNjAsOCArNDA0OCw3IEBA
IHN0YXRpYyBjaGFyKiB0aWVyVXBDb21tb24oVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Qnl0ZWNvZGVJbmRleCBvcmlnaW5CeXRlCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBm
b3ItZW50cnkgY29tcGlsZSBhbHJlYWR5IHN1Y2NlZWRlZC4gSW4gdGhhdCBjYXNlIE9TUgogICAg
IC8vIGVudHJ5IHdpbGwgc3VjY2VlZCB1bmxlc3Mgd2UgcmFuIG91dCBvZiBzdGFjay4gSXQncyBu
b3QgY2xlYXIgd2hhdCB3ZSBzaG91bGQgZG8uCiAgICAgLy8gV2Ugc2lnbmFsIHRvIHRyeSBhZ2Fp
biBhZnRlciBhIHdoaWxlIGlmIHRoYXQgaGFwcGVucy4KLSAgICBpZiAoT3B0aW9uczo6dmVyYm9z
ZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJJbW1lZGlhdGUgT1NSIGVudHJ5OiBGcm9tICIsIFJh
d1BvaW50ZXIoaml0Q29kZSksICIgZ290IGVudHJ5IGJsb2NrICIsIFJhd1BvaW50ZXIoaml0Q29k
ZS0+b3NyRW50cnlCbG9jaygpKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZU9TUigpLCAiSW1tZWRpYXRlIE9TUiBlbnRyeTogRnJvbSAiLCBSYXdQb2ludGVyKGppdENv
ZGUpLCAiIGdvdCBlbnRyeSBibG9jayAiLCBSYXdQb2ludGVyKGppdENvZGUtPm9zckVudHJ5Qmxv
Y2soKSkpOwogCiAgICAgdm9pZCogYWRkcmVzcyA9IEZUTDo6cHJlcGFyZU9TUkVudHJ5KHZtLCBj
YWxsRnJhbWUsIGNvZGVCbG9jaywgaml0Q29kZS0+b3NyRW50cnlCbG9jaygpLCBvcmlnaW5CeXRl
Y29kZUluZGV4LCBzdHJlYW1JbmRleCk7CiAgICAgaWYgKCFhZGRyZXNzKQpAQCAtNDA4MSwxNyAr
NDA2OCwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclRpZXJVcE5vd0lu
TG9vcChWTSogdm1Qb2ludGVyLCB1bnNpZ25lZCBieXRlYwogICAgIHNhbml0aXplU3RhY2tGb3JW
TSh2bSk7CiAKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6REZHSklU
KSB7Ci0gICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWQgY29kZSBibG9jayBpbiBERkctPkZUTCB0
cmlnZ2VyIHRpZXIgdXAgbm93IGluIGxvb3A6ICIsICpjb2RlQmxvY2ssICJcbiIpOworICAgICAg
ICBkYXRhTG9nTG4oIlVuZXhwZWN0ZWQgY29kZSBibG9jayBpbiBERkctPkZUTCB0cmlnZ2VyIHRp
ZXIgdXAgbm93IGluIGxvb3A6ICIsICpjb2RlQmxvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIEpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxv
Y2stPmppdENvZGUoKS0+ZGZnKCk7CiAKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7
Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHRy
aWdnZXJUaWVyVXBOb3dJbkxvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICIsCi0gICAgICAgICAg
ICBqaXRDb2RlLT50aWVyVXBDb3VudGVyLCAiXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6dmVyYm9zZU9TUigpLCAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHRyaWdnZXJUaWVy
VXBOb3dJbkxvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICIsIGppdENvZGUtPnRpZXJVcENvdW50
ZXIpOwogCiAgICAgaWYgKGppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeS5jb250YWlucyhi
eXRlY29kZUluZGV4KSkKICAgICAgICAgdGllclVwQ29tbW9uKHZtLCBjYWxsRnJhbWUsIGJ5dGVj
b2RlSW5kZXgsIGZhbHNlKTsKQEAgLTQxMjMsMTEgKzQxMDYsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyaWdnZXJPU1JFbnRyeU5vdyhWTSogdm1Qb2ludGVyLCB1bnNpZ25lZCBi
eXRlY29kZQogCiAgICAgSklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5k
ZmcoKTsKIAotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgZGF0YUxv
ZygKLSAgICAgICAgICAgICpjb2RlQmxvY2ssICI6IEVudGVyZWQgdHJpZ2dlck9TUkVudHJ5Tm93
IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAotICAgICAgICAgICAgaml0Q29kZS0+dGllclVwQ291
bnRlciwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSwgKmNvZGVCbG9jaywgIjogRW50ZXJlZCB0cmlnZ2VyT1NSRW50cnlOb3cgd2l0aCBleGVjdXRl
Q291bnRlciA9ICIsIGppdENvZGUtPnRpZXJVcENvdW50ZXIpOwogCiAgICAgcmV0dXJuIHRpZXJV
cENvbW1vbih2bSwgY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCB0cnVlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IGQ4MDAwNzlmZWYyLi45ZDZkMTAyNTVmYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC00OTYsNyArNDk2LDcgQEAg
UGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgICAg
ICBpZiAoVU5MSUtFTFkoY29tcHV0ZUNvbXBpbGVUaW1lcygpKSkKICAgICAgICAgICAgIG1fdGlt
ZUJlZm9yZUZUTCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAgICAKLSAgICAgICAgaWYg
KE9wdGlvbnM6OmIzQWx3YXlzRmFpbHNCZWZvcmVDb21waWxlKCkpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmIzQWx3YXlzRmFpbHNCZWZvcmVDb21waWxlKCkpKSB7CiAgICAgICAg
ICAgICBGVEw6OmZhaWwoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIEZUTFBhdGg7CiAgICAg
ICAgIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29t
cGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIGlmIChzYWZlcG9pbnRSZXN1bHQuZGlkR2V0Q2Fu
Y2VsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gQ2FuY2VsUGF0aDsKICAgICAgICAgCi0gICAg
ICAgIGlmIChPcHRpb25zOjpiM0Fsd2F5c0ZhaWxzQmVmb3JlTGluaygpKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpiM0Fsd2F5c0ZhaWxzQmVmb3JlTGluaygpKSkgewogICAgICAg
ICAgICAgRlRMOjpmYWlsKHN0YXRlKTsKICAgICAgICAgICAgIHJldHVybiBGVExQYXRoOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IGM2N2U3YTAwMDhj
Li5lYWYzNTE2ZDUwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTQ4
LDExICs0OCw5IEBAIFJlZjxUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4gVG9GVExE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSgpCiB2b2lkIFRvRlRMRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3Vz
bHkoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2Rl
QmxvY2spCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRh
TG9nKAotICAgICAgICAgICAgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgY29kZUJsb2Nr
LCAiIChmb3IgIiwgcHJvZmlsZWRERkdDb2RlQmxvY2ssCi0gICAgICAgICAgICAiKSBkaWQgYmVj
b21lIHJlYWR5LlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwKKyAgICAgICAgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgY29kZUJsb2NrLCAi
IChmb3IgIiwgcHJvZmlsZWRERkdDb2RlQmxvY2ssCisgICAgICAgICIpIGRpZCBiZWNvbWUgcmVh
ZHkuIik7CiAgICAgCiAgICAgcHJvZmlsZWRERkdDb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCkt
PmZvcmNlT3B0aW1pemF0aW9uU2xvd1BhdGhDb25jdXJyZW50bHkoCiAgICAgICAgIHByb2ZpbGVk
REZHQ29kZUJsb2NrKTsKQEAgLTYxLDE4ICs1OSwxNCBAQCB2b2lkIFRvRlRMRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZEJlY29tZVJlYWR5QXN5bmNocm9ub3VzbHko
CiB2b2lkIFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENv
bXBsZXRlKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZH
Q29kZUJsb2NrLCBDb21waWxhdGlvblJlc3VsdCByZXN1bHQpCiB7Ci0gICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXpp
bmcgY29tcGlsYXRpb24gb2YgIiwgY29kZUJsb2NrLCAiIChmb3IgIiwgcHJvZmlsZWRERkdDb2Rl
QmxvY2ssCi0gICAgICAgICAgICAiKSByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7Ci0gICAgfQor
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgIk9wdGltaXpp
bmcgY29tcGlsYXRpb24gb2YgIiwgY29kZUJsb2NrLCAiIChmb3IgIiwgcHJvZmlsZWRERkdDb2Rl
QmxvY2ssCisgICAgICAgICIpIHJlc3VsdDogIiwgcmVzdWx0KTsKICAgICAKICAgICBpZiAocHJv
ZmlsZWRERkdDb2RlQmxvY2stPnJlcGxhY2VtZW50KCkgIT0gcHJvZmlsZWRERkdDb2RlQmxvY2sp
IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICAgICAgZGF0
YUxvZygKLSAgICAgICAgICAgICAgICAiRHJvcHBpbmcgRlRMIGNvZGUgYmxvY2sgIiwgY29kZUJs
b2NrLCAiIG9uIHRoZSBmbG9vciBiZWNhdXNlIHRoZSAiCi0gICAgICAgICAgICAgICAgIkRGRyBj
b2RlIGJsb2NrICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLCAiIHdhcyBqZXR0aXNvbmVkLlxuIik7
Ci0gICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLAor
ICAgICAgICAgICAgIkRyb3BwaW5nIEZUTCBjb2RlIGJsb2NrICIsIGNvZGVCbG9jaywgIiBvbiB0
aGUgZmxvb3IgYmVjYXVzZSB0aGUgIgorICAgICAgICAgICAgIkRGRyBjb2RlIGJsb2NrICIsIHBy
b2ZpbGVkREZHQ29kZUJsb2NrLCAiIHdhcyBqZXR0aXNvbmVkLiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
b0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAKaW5kZXggYTQyOTQ5YzhmMWYuLjAyYWM0ZjNlZjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9G
VExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTUyLDExICs1
Miw5IEBAIFJlZjxUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPlRv
RlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0CiB2b2lkIFRvRlRMRm9yT1NSRW50cnlEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hy
b25vdXNseSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZERG
R0NvZGVCbG9jaykKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAg
IGRhdGFMb2coCi0gICAgICAgICAgICAiT3B0aW1pemluZyBjb21waWxhdGlvbiBvZiAiLCAqY29k
ZUJsb2NrLCAiIChmb3IgIiwgKnByb2ZpbGVkREZHQ29kZUJsb2NrLAotICAgICAgICAgICAgIikg
ZGlkIGJlY29tZSByZWFkeS5cbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlT1NSKCksCisgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsICpjb2Rl
QmxvY2ssICIgKGZvciAiLCAqcHJvZmlsZWRERkdDb2RlQmxvY2ssCisgICAgICAgICIpIGRpZCBi
ZWNvbWUgcmVhZHkuIik7CiAKICAgICAqbV9mb3JjZWRPU1JFbnRyeVRyaWdnZXIgPSBKSVRDb2Rl
OjpUcmlnZ2VyUmVhc29uOjpDb21waWxhdGlvbkRvbmU7CiB9CkBAIC02NCwxMSArNjIsOSBAQCB2
b2lkIFRvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0
aW9uRGlkQmVjb21lUmVhZHlBc3luYwogdm9pZCBUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2NrLCBDb21waWxhdGlvblJl
c3VsdCByZXN1bHQpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAg
ICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNv
ZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0NvZGVCbG9jaywKLSAgICAgICAgICAgICIp
IHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLAorICAgICAgICAiT3B0aW1pemluZyBjb21waWxhdGlvbiBvZiAiLCAq
Y29kZUJsb2NrLCAiIChmb3IgIiwgKnByb2ZpbGVkREZHQ29kZUJsb2NrLAorICAgICAgICAiKSBy
ZXN1bHQ6ICIsIHJlc3VsdCk7CiAgICAgCiAgICAgSklUQ29kZSogaml0Q29kZSA9IHByb2ZpbGVk
REZHQ29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTE0ZWIyYTg1M2QuLjY1OTY1YWFiZWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTA1LDgg
KzEwNSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1fcGxhbi0+bm90aWZ5Q29tcGlsaW5n
KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29t
cGlsYXRpb25RdWV1ZSgpKQotICAgICAgICAgICAgZGF0YUxvZyhtX3dvcmtsaXN0LCAiOiBDb21w
aWxpbmcgIiwgbV9wbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7CisgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCksIG1fd29ya2xpc3Qs
ICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5Iik7CiAgICAg
ICAgIAogICAgICAgICAvLyBUaGVyZSdzIG5vIHdheSBmb3IgdGhlIEdDIHRvIGJlIHNhZmVwb2lu
dGluZyBzaW5jZSB3ZSBvd24gcmlnaHRUb1J1bi4KICAgICAgICAgaWYgKG1fcGxhbi0+dm0oKS0+
aGVhcC53b3JsZElzU3RvcHBlZCgpKSB7CkBAIC0xNDMsOCArMTQyLDcgQEAgcHJvdGVjdGVkOgog
ICAgIAogICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCi0gICAgICAgICAgICBkYXRh
TG9nKG1fd29ya2xpc3QsICI6IFRocmVhZCBzdGFydGVkXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSwgbV93b3JrbGlzdCwgIjogVGhy
ZWFkIHN0YXJ0ZWQiKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkp
CiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZl
UHJpb3JpdHkpOwpAQCAtMTU2LDggKzE1NCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAg
IC8vIFdlJ3JlIGhvbGRpbmcgdGhlIFdvcmtsaXN0OjptX2xvY2ssIHNvIHdlIHNob3VsZCBiZSBj
YXJlZnVsIG5vdCB0byBkZWFkbG9jay4KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKQotICAgICAgICAgICAgZGF0YUxvZyhtX3dvcmtsaXN0
LCAiOiBUaHJlYWQgd2lsbCBzdG9wXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSwgbV93b3JrbGlzdCwgIjogVGhyZWFkIHdpbGwgc3Rv
cCIpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFtX3BsYW4pOwogICAgICAgICAKQEAgLTMz
Niw4ICszMzMsNyBAQCBXb3JrbGlzdDo6U3RhdGUgV29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQ
bGFuc0ZvclZNKFZNJiB2bSwgQ29tcGlsYXRpb25LZXkgcmVxdQogICAgICAgICBSZWZQdHI8UGxh
bj4gcGxhbiA9IG15UmVhZHlQbGFucy50YWtlTGFzdCgpOwogICAgICAgICBDb21waWxhdGlvbktl
eSBjdXJyZW50S2V5ID0gcGxhbi0+a2V5KCk7CiAgICAgICAgIAotICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKLSAgICAgICAgICAgIGRhdGFMb2coKnRoaXMs
ICI6IENvbXBsZXRpbmcgIiwgY3VycmVudEtleSwgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCksICp0aGlzLCAiOiBDb21wbGV0aW5n
ICIsIGN1cnJlbnRLZXkpOwogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBsYW4tPnN0YWdlKCkg
PT0gUGxhbjo6UmVhZHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkVudHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnku
Y3BwCmluZGV4IDkzMzE3NzEwZjZkLi5hZmJmNmVkYWM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAKQEAgLTUyLDI3ICs1MiwyMyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoCiAgICAgICAgIGRmZ0NvZGUtPmNsZWFyT1NSRW50cnlCbG9ja0FuZFJlc2V0VGhy
ZXNob2xkcyhkZmdDb2RlQmxvY2spOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCi0g
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRhTG9nKAotICAgICAg
ICAgICAgIkZUTCBPU1IgZnJvbSAiLCAqZGZnQ29kZUJsb2NrLCAiIHRvICIsICplbnRyeUNvZGVC
bG9jaywgIiBhdCAiLAotICAgICAgICAgICAgYnl0ZWNvZGVJbmRleCwgIi5cbiIpOwotICAgIH0K
KworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgIkZUTCBP
U1IgZnJvbSAiLCAqZGZnQ29kZUJsb2NrLCAiIHRvICIsICplbnRyeUNvZGVCbG9jaywgIiBhdCAi
LAorICAgICAgICBieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoYnl0ZWNvZGVJbmRleCkK
ICAgICAgICAganNDYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+c2V0RGlkVHJ5
VG9FbnRlckluTG9vcCh0cnVlKTsKIAogICAgIGlmIChieXRlY29kZUluZGV4ICE9IGVudHJ5Q29k
ZS0+Ynl0ZWNvZGVJbmRleCgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgYW4gZW50cnlwb2ludCBmb3IgIiwgYnl0ZWNvZGVJbmRleCwgIjsgb3VycyBpcyBmb3IgIiwg
ZW50cnlDb2RlLT5ieXRlY29kZUluZGV4KCksICJcbiIpOworICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgT1NSIGZhaWxlZCBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgYW4gZW50cnlwb2ludCBmb3IgIiwgYnl0ZWNvZGVJbmRleCwgIjsgb3VycyBpcyBmb3IgIiwg
ZW50cnlDb2RlLT5ieXRlY29kZUluZGV4KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgCiAgICAgT3BlcmFuZHM8T3B0aW9uYWw8SlNWYWx1ZT4+IHZhbHVlczsKICAgICBkZmdDb2Rl
LT5yZWNvbnN0cnVjdChjYWxsRnJhbWUsIGRmZ0NvZGVCbG9jaywgQ29kZU9yaWdpbihieXRlY29k
ZUluZGV4KSwgc3RyZWFtSW5kZXgsIHZhbHVlcyk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkKLSAgICAgICAgZGF0YUxvZygiICAgIFZhbHVlcyBhdCBlbnRyeTogIiwgdmFs
dWVzLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAg
VmFsdWVzIGF0IGVudHJ5OiAiLCB2YWx1ZXMpOwogICAgIAogICAgIGZvciAoaW50IGFyZ3VtZW50
ID0gdmFsdWVzLm51bWJlck9mQXJndW1lbnRzKCk7IGFyZ3VtZW50LS07KSB7CiAgICAgICAgIEpT
VmFsdWUgdmFsdWVPblN0YWNrID0gY2FsbEZyYW1lLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGFyZ3VtZW50KS5vZmZzZXQoKSkuYXNhblVuc2FmZUpTVmFsdWUoKTsKQEAgLTEwMSwxNiAr
OTcsMTQgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KAogICAgIAogICAgIGludCBzdGFja0ZyYW1l
U2l6ZSA9IGVudHJ5Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlv
bkFuZEV4aXQoKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3Io
JmNhbGxGcmFtZS0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhY2tGcmFt
ZVNpemUgLSAxKS5vZmZzZXQoKV0pKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9T
UigpKQotICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBzdGFjayBn
cm93dGggZmFpbGVkLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC4iKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAogICAgIGNhbGxGcmFtZS0+c2V0Q29kZUJsb2Nr
KGVudHJ5Q29kZUJsb2NrKTsKICAgICAKICAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFk
ZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
LSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCIgICAgRW50
cnkgd2lsbCBzdWNjZWVkLCBnb2luZyB0byBhZGRyZXNzICIsIFJhd1BvaW50ZXIocmVzdWx0KSwg
IlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIEVudHJ5
IHdpbGwgc3VjY2VlZCwgZ29pbmcgdG8gYWRkcmVzcyAiLCBSYXdQb2ludGVyKHJlc3VsdCkpOwog
ICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IDY3NTQwZDkwN2ZkLi5lM2U4MzZlYjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIEhlYXA6OmR1bXBIZWFwU3RhdGlzdGlj
c0F0Vk1EZXN0cnVjdGlvbigpCiB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsK
ICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgewor
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBiZWZvcmUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIo
dGhpcyksICI+OiBzaHV0ZG93biAiKTsKICAgICB9CkBAIC00MTQsMTcgKzQxNCwxNSBAQCB2b2lk
IEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAgICAgfQogICAgICAgICBtX2NvbGxl
Y3RDb250aW51b3VzbHlUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgfQotICAgIAot
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCIxIik7CisKKyAgICBk
YXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgIjEiKTsKICAgICAKICAgICAvLyBQcmV2ZW50IG5l
dyBjb2xsZWN0aW9ucyBmcm9tIGJlaW5nIHN0YXJ0ZWQuIFRoaXMgaXMgcHJvYmFibHkgbm90IGV2
ZW4gbmVjZXNzYXJ5LCBzaW5jZSB3ZSdyZSBub3QKICAgICAvLyBnb2luZyB0byBjYWxsIGludG8g
YW55dGhpbmcgdGhhdCBzdGFydHMgY29sbGVjdGlvbnMuIFN0aWxsLCB0aGlzIG1ha2VzIHRoZSBh
bGdvcml0aG0gbW9yZQogICAgIC8vIG9idmlvdXNseSBzb3VuZC4KICAgICBtX2lzU2FmZVRvQ29s
bGVjdCA9IGZhbHNlOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBk
YXRhTG9nKCIyIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIyIik7CiAKICAg
ICBib29sIGlzQ29sbGVjdGluZzsKICAgICB7CkBAIC00MzMsOCArNDMxLDcgQEAgdm9pZCBIZWFw
OjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAgICAgICAgIGlzQ29sbGVjdGluZyA9IG1fbGFzdFNl
cnZlZFRpY2tldCA8IG1fbGFzdEdyYW50ZWRUaWNrZXQ7CiAgICAgfQogICAgIGlmIChpc0NvbGxl
Y3RpbmcpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICBkYXRh
TG9nKCIuLi5dXG4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIuLi5d
XG4iKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBjdXJyZW50IGNvbGxlY3Rp
b24gdG8gZmluaXNoLgogICAgICAgICB3YWl0Rm9yQ29sbGVjdG9yKApAQCAtNDQzLDExICs0NDAs
OSBAQCB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9sYXN0U2VydmVkVGlja2V0ID09IG1fbGFzdEdyYW50ZWRUaWNrZXQ7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAg
ICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiBzaHV0ZG93biAiKTsK
KyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJbR0M8IiwgUmF3UG9pbnRlcih0
aGlzKSwgIj46IHNodXRkb3duICIpOwogICAgIH0KLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkK
LSAgICAgICAgZGF0YUxvZygiMyIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAi
MyIpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQobV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fbGFzdFNlcnZlZFRpY2tldCA9PSBtX2xhc3RHcmFudGVkVGlja2V0KTsK
QEAgLTQ2MiwxNCArNDU3LDEyIEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ICAgICAgICAgICAgbV90aHJlYWRDb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogICAgIH0K
IAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCI0Iik7CisgICAg
ZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICI0Iik7CiAgICAgCiAgICAgaWYgKCFzdG9wcGVk
KQogICAgICAgICBtX3RocmVhZC0+am9pbigpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQotICAgICAgICBkYXRhTG9nKCI1ICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dH
QygpLCAiNSAiKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wSGVhcFN0YXRpc3Rp
Y3NBdFZNRGVzdHJ1Y3Rpb24oKSkpCiAgICAgICAgIGR1bXBIZWFwU3RhdGlzdGljc0F0Vk1EZXN0
cnVjdGlvbigpOwpAQCAtNDgzLDggKzQ3Niw3IEBAIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmlu
YWxpemUoKQogICAgIAogICAgIG1fb2JqZWN0U3BhY2UuZnJlZU1lbW9yeSgpOwogICAgIAotICAg
IGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICJtc11cbiIpOworICAgIGRhdGFMb2dJZihP
cHRpb25zOjpsb2dHQygpLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBiZWZvcmUpLm1pbGxpc2Vj
b25kcygpLCAibXNdXG4iKTsKIH0KIAogdm9pZCBIZWFwOjpyZWxlYXNlRGVsYXllZFJlbGVhc2Vk
T2JqZWN0cygpCkBAIC0xMDUwLDEzICsxMDQyLDEzIEBAIHZvaWQgSGVhcDo6YWRkVG9SZW1lbWJl
cmVkU2V0KGNvbnN0IEpTQ2VsbCogY29uc3RDZWxsKQogdm9pZCBIZWFwOjpzd2VlcFN5bmNocm9u
b3VzbHkoKQogewogICAgIE1vbm90b25pY1RpbWUgYmVmb3JlIHsgfTsKLSAgICBpZiAoT3B0aW9u
czo6bG9nR0MoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAg
ICAgICBkYXRhTG9nKCJGdWxsIHN3ZWVwOiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgImtiICIpOwog
ICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICB9CiAgICAgbV9vYmpl
Y3RTcGFjZS5zd2VlcEJsb2NrcygpOwogICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7Ci0gICAg
aWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6bG9nR0Mo
KSkpIHsKICAgICAgICAgTW9ub3RvbmljVGltZSBhZnRlciA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogICAgICAgICBkYXRhTG9nKCI9PiAiLCBjYXBhY2l0eSgpIC8gMTAyNCwgImtiLCAiLCAoYWZ0
ZXIgLSBiZWZvcmUpLm1pbGxpc2Vjb25kcygpLCAibXMiKTsKICAgICB9CkBAIC0xMDk2LDExICsx
MDg4LDkgQEAgdm9pZCBIZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeW5jaHJvbm91
c25lc3MsIEdDUmVxdWVzdCByZXF1ZXN0KQogICAgICAgICAKICAgICAgICAgYm9vbCBhbHJlYWR5
U3dlcHRJbkNvbGxlY3RTeW5jID0gc2hvdWxkU3dlZXBTeW5jaHJvbm91c2x5KCk7CiAgICAgICAg
IGlmICghYWxyZWFkeVN3ZXB0SW5Db2xsZWN0U3luYykgewotICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIo
dGhpcyksICI+OiAiKTsKKyAgICAgICAgICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAi
W0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiAiKTsKICAgICAgICAgICAgIHN3ZWVwU3luY2hy
b25vdXNseSgpOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YUxvZygiXVxuIik7CisgICAgICAgICAgICBkYXRhTG9nSWYoT3B0aW9uczo6bG9n
R0MoKSwgIl1cbiIpOwogICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0U3BhY2UuYXNzZXJ0Tm9V
bnN3ZXB0KCk7CiAgICAgICAgIApAQCAtMTI2NCw4ICsxMjU0LDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOwogICAgIH0KICAgICAgICAgCi0gICAgaWYg
KE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIltHQzwiLCBSYXdQb2ludGVyKHRo
aXMpLCAiPjogU1RBUlQgIiwgZ2NDb25kdWN0b3JTaG9ydE5hbWUoY29ubiksICIgIiwgY2FwYWNp
dHkoKSAvIDEwMjQsICJrYiAiKTsKKyAgICBkYXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgIltH
QzwiLCBSYXdQb2ludGVyKHRoaXMpLCAiPjogU1RBUlQgIiwgZ2NDb25kdWN0b3JTaG9ydE5hbWUo
Y29ubiksICIgIiwgY2FwYWNpdHkoKSAvIDEwMjQsICJrYiAiKTsKIAogICAgIG1fYmVmb3JlR0Mg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIApAQCAtMTI3Myw3ICsxMjYyLDcgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgICAgICB2
bSgpLnJhbmRvbSgpLnNldFNlZWQoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7CiAK
ICAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUpIHsKLSAgICAgICAgZGF0YUxvZygiQ29sbGVjdGlv
biBzY29wZSBhbHJlYWR5IHNldCBkdXJpbmcgR0M6ICIsICptX2NvbGxlY3Rpb25TY29wZSwgIlxu
Iik7CisgICAgICAgIGRhdGFMb2dMbigiQ29sbGVjdGlvbiBzY29wZSBhbHJlYWR5IHNldCBkdXJp
bmcgR0M6ICIsICptX2NvbGxlY3Rpb25TY29wZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTMzNCw3ICsxMzIzLDcgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogICAgIG1fY29u
c3RyYWludFNldC0+ZGlkU3RhcnRNYXJraW5nKCk7CiAgICAgCiAgICAgbV9zY2hlZHVsZXItPmJl
Z2luQ29sbGVjdGlvbigpOwotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQorICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjpsb2dHQygpKSkKICAgICAgICAgbV9zY2hlZHVsZXItPmxvZygpOwogICAg
IAogICAgIC8vIEFmdGVyIHRoaXMsIHdlIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBmYWxsIHRocm91
Z2ggYWxsIG9mIHRoZSAic2xvdFZpc2l0b3IuaXNFbXB0eSgpIgpAQCAtMTM2Miw3ICsxMzUxLDcg
QEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRml4cG9pbnRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIAogICAgIFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvciA9ICptX2NvbGxlY3RvclNs
b3RWaXNpdG9yOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmxvZ0dDKCkpKSB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgY2hhcios
IHNpemVfdD4gdmlzaXRNYXA7CiAgICAgICAgIGZvckVhY2hTbG90VmlzaXRvcigKICAgICAgICAg
ICAgIFsmXSAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKSB7CkBAIC0xNDA2LDggKzEzOTUsNyBA
QCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5GaXhwb2ludFBoYXNlKEdDQ29uZHVjdG9yIGNv
bm4pCiAgICAgICAgIG1fc2NoZWR1bGVyLT5kaWRFeGVjdXRlQ29uc3RyYWludHMoKTsKICAgICB9
CiAgICAgICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKHNs
b3RWaXNpdG9yLmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJr
U3RhY2stPnNpemUoKSArIHNsb3RWaXNpdG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXplKCksICIg
Iik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksIHNsb3RWaXNpdG9yLmNvbGxlY3Rv
ck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJrU3RhY2stPnNpemUoKSArIHNs
b3RWaXNpdG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXplKCksICIgIik7CiAgICAgICAgIAogICAg
IHsKICAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNpdG9yKTsKQEAg
LTE0MzMsNyArMTQyMSw3IEBAIE5FVkVSX0lOTElORSBib29sIEhlYXA6OnJ1bkZpeHBvaW50UGhh
c2UoR0NDb25kdWN0b3IgY29ubikKIAogICAgIG1fc2NoZWR1bGVyLT53aWxsUmVzdW1lKCk7CiAg
ICAgICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OmxvZ0dDKCkpKSB7CiAgICAgICAgIGRvdWJsZSB0aGlzUGF1c2VNUyA9IChNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fc3RvcFRpbWUpLm1pbGxpc2Vjb25kcygpOwogICAgICAgICBkYXRh
TG9nKCJwPSIsIHRoaXNQYXVzZU1TLCAibXMgKG1heCAiLCBtYXhQYXVzZU1TKHRoaXNQYXVzZU1T
KSwgIikuLi5dXG4iKTsKICAgICB9CkBAIC0xNDc3LDEyICsxNDY1LDExIEBAIE5FVkVSX0lOTElO
RSBib29sIEhlYXA6OnJ1bkNvbmN1cnJlbnRQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogCiBORVZF
Ul9JTkxJTkUgYm9vbCBIZWFwOjpydW5SZWxvb3BQaGFzZShHQ0NvbmR1Y3RvciBjb25uKQogewot
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKCJbR0M8IiwgUmF3UG9p
bnRlcih0aGlzKSwgIj46ICIsIGdjQ29uZHVjdG9yU2hvcnROYW1lKGNvbm4pLCAiICIpOworICAg
IGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+
OiAiLCBnY0NvbmR1Y3RvclNob3J0TmFtZShjb25uKSwgIiAiKTsKICAgICAKICAgICBtX3NjaGVk
dWxlci0+ZGlkU3RvcCgpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQorICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkKICAgICAgICAgbV9zY2hlZHVsZXItPmxvZygp
OwogICAgIAogICAgIHJldHVybiBjaGFuZ2VQaGFzZShjb25uLCBDb2xsZWN0b3JQaGFzZTo6Rml4
cG9pbnQpOwpAQCAtMTU0OSw3ICsxNTM2LDcgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVu
RW5kUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICAgICAgbV9vYmplY3RTcGFjZS5kdW1wQml0
cygpOwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgeworICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAgICAgICBkb3VibGUgdGhpc1BhdXNlTVMg
PSAobV9hZnRlckdDIC0gbV9zdG9wVGltZSkubWlsbGlzZWNvbmRzKCk7CiAgICAgICAgIGRhdGFM
b2coInA9IiwgdGhpc1BhdXNlTVMsICJtcyAobWF4ICIsIG1heFBhdXNlTVModGhpc1BhdXNlTVMp
LCAiKSwgY3ljbGUgIiwgKG1fYWZ0ZXJHQyAtIG1fYmVmb3JlR0MpLm1pbGxpc2Vjb25kcygpLCAi
bXMgRU5EXVxuIik7CiAgICAgfQpAQCAtMTU2Miw4ICsxNTQ5LDcgQEAgTkVWRVJfSU5MSU5FIGJv
b2wgSGVhcDo6cnVuRW5kUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAgICB9CiAgICAgUGFya2lu
Z0xvdDo6dW5wYXJrQWxsKCZtX3dvcmxkU3RhdGUpOwogCi0gICAgaWYgKGZhbHNlKQotICAgICAg
ICBkYXRhTG9nKCJHQyBFTkQhXG4iKTsKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpsb2dHQygp
LCAiR0MgRU5EISIpOwogCiAgICAgc2V0TmVlZEZpbmFsaXplKCk7CiAKQEAgLTIwOTAsNyArMjA3
Niw3IEBAIHZvaWQgSGVhcDo6bm90aWZ5VGhyZWFkU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKQogdm9pZCBIZWFwOjpmaW5hbGl6ZSgpCiB7CiAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7
Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
bG9nR0MoKSkpIHsKICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
ICAgIGRhdGFMb2coIltHQzwiLCBSYXdQb2ludGVyKHRoaXMpLCAiPjogZmluYWxpemUgIik7CiAg
ICAgfQpAQCAtMjExMyw3ICsyMDk5LDcgQEAgdm9pZCBIZWFwOjpmaW5hbGl6ZSgpCiAgICAgaWYg
KHNob3VsZFN3ZWVwU3luY2hyb25vdXNseSgpKQogICAgICAgICBzd2VlcFN5bmNocm9ub3VzbHko
KTsKIAotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmxvZ0dDKCkpKSB7CiAgICAgICAgIE1vbm90b25pY1RpbWUgYWZ0ZXIgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICAgICAgICAgZGF0YUxvZygoYWZ0ZXIgLSBiZWZvcmUpLm1pbGxpc2Vjb25k
cygpLCAibXNdXG4iKTsKICAgICB9CkBAIC0yMTc3LDIyICsyMTYzLDE1IEBAIHZvaWQgSGVhcDo6
c3VzcGVuZENvbXBpbGVyVGhyZWFkcygpCiAKIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlv
bigpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coIj0+ICIp
OworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiPT4gIik7CiAgICAgCiAgICAgaWYg
KHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSkgewogICAgICAgICBtX2NvbGxlY3Rpb25TY29wZSA9
IENvbGxlY3Rpb25TY29wZTo6RnVsbDsKICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9u
ID0gZmFsc2U7Ci0gICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICAgICAgZGF0
YUxvZygiRnVsbENvbGxlY3Rpb24sICIpOwotICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAg
ICBkYXRhTG9nKCJGdWxsIGNvbGxlY3Rpb24hXG4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlv
bnM6OmxvZ0dDKCksICJGdWxsQ29sbGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47Ci0gICAgICAgIGlmIChP
cHRpb25zOjpsb2dHQygpKQotICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIp
OwotICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCJFZGVuIGNvbGxlY3Rp
b24hXG4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJFZGVuQ29sbGVj
dGlvbiwgIik7CiAgICAgfQogICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAmJiBtX2NvbGxlY3Rp
b25TY29wZS52YWx1ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICBtX3Np
emVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRl
c0FsbG9jYXRlZFRoaXNDeWNsZTsKQEAgLTIzNTEsOCArMjMzMCw3IEBAIHZvaWQgSGVhcDo6dXBk
YXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIGRhdGFMb2coInNpemVBZnRlckxhc3RDb2xs
ZWN0ID0gIiwgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCwgIlxuIik7CiAgICAgbV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZSA9IDA7CiAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAg
ZGF0YUxvZygiPT4gIiwgY3VycmVudEhlYXBTaXplIC8gMTAyNCwgImtiLCAiKTsKKyAgICBkYXRh
TG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgIj0+ICIsIGN1cnJlbnRIZWFwU2l6ZSAvIDEwMjQsICJr
YiwgIik7CiB9CiAKIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbigpCkBAIC0yODkxLDcg
KzI4NjksNyBAQCB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0
cjxNYXJraW5nQ29uc3RyYWludD4gY29uc3RyYWludCkKIHZvaWQgSGVhcDo6bm90aWZ5SXNTYWZl
VG9Db2xsZWN0KCkKIHsKICAgICBNb25vdG9uaWNUaW1lIGJlZm9yZTsKLSAgICBpZiAoT3B0aW9u
czo6bG9nR0MoKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpsb2dHQygpKSkgewogICAg
ICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgZGF0YUxvZygiW0dD
PCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiBzdGFydGluZyAiKTsKICAgICB9CkBAIC0yOTMxLDgg
KzI5MDksNyBAQCB2b2lkIEhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpCiAgICAgICAgICAg
ICB9KTsKICAgICB9CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgIGRh
dGFMb2coKE1vbm90b25pY1RpbWU6Om5vdygpIC0gYmVmb3JlKS5taWxsaXNlY29uZHMoKSwgIm1z
XVxuIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCksICJtc11cbiIpOwogfQogCiB2b2lkIEhlYXA6
OnByZXZlbnRDb2xsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmNwcAppbmRleCAwMWExZmRhOTU0NC4u
MDViNTQ2ZDM2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFja01lcmdpbmdDb25zdHJhaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5jcHAKQEAgLTUzLDggKzUzLDcgQEAgdm9pZCBN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludDo6cHJlcGFyZVRvRXhlY3V0ZUltcGwoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBTbG8KICAgICBzaXplX3Qgc2l6ZSA9IG1faGVhcC5tX211dGF0b3JNYXJr
U3RhY2stPnNpemUoKSArIG1faGVhcC5tX3JhY2VNYXJrU3RhY2stPnNpemUoKTsKICAgICB2aXNp
dG9yLmFkZFRvVmlzaXRDb3VudChzaXplKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0Mo
KSkKLSAgICAgICAgZGF0YUxvZygiKCIsIHNpemUsICIpIik7CisgICAgZGF0YUxvZ0lmKE9wdGlv
bnM6OmxvZ0dDKCksICIoIiwgc2l6ZSwgIikiKTsKIH0KIAogdm9pZCBNYXJrU3RhY2tNZXJnaW5n
Q29uc3RyYWludDo6ZXhlY3V0ZUltcGwoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggMTQ5Y2U4ZGEzOGEuLmU4MGIw
NGNlMDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBA
IC00NSwxNSArNDUsMTQgQEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAg
ICAgICAgW10gewogICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFZlY3RvcjxzaXplX3Q+KCk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkg
eworICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpKSkg
ewogICAgICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrIHNpemU6ICIsIE1hcmtlZEJsb2NrOjpi
bG9ja1NpemUsICJcbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvb3RlciBzaXplOiAi
LCBzaXplb2YoTWFya2VkQmxvY2s6OkZvb3RlciksICJcbiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIGFkZCA9IFsmXSAoc2l6ZV90IHNpemVDbGFzcykg
ewogICAgICAgICAgICAgICAgIHNpemVDbGFzcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxN
YXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemVDbGFzcyk7Ci0gICAgICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJB
ZGRpbmcgSlNDIE1hcmtlZFNwYWNlIHNpemUgY2xhc3M6ICIsIHNpemVDbGFzcywgIlxuIik7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2VzKCksICJB
ZGRpbmcgSlNDIE1hcmtlZFNwYWNlIHNpemUgY2xhc3M6ICIsIHNpemVDbGFzcyk7CiAgICAgICAg
ICAgICAgICAgLy8gUGVyZm9ybSBzb21lIHZhbGlkYXRpb24gYXMgd2UgZ28uCiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplQ2xhc3MgJSBNYXJrZWRTcGFjZTo6c2l6ZVN0ZXAp
KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LT5pc0VtcHR5KCkpCkBAIC03MywxOSArNzIs
MTQgQEAgY29uc3QgVmVjdG9yPHNpemVfdD4mIHNpemVDbGFzc2VzKCkKICAgICAgICAgICAgIC8v
IHRoZSB3YXN0ZWQgc3BhY2UgYXQgdGhlIHRhaWwgZW5kIG9mIGEgTWFya2VkQmxvY2spIHdoaWxl
IHByb2NlZWRpbmcgcm91Z2hseSBpbiBhbiBleHBvbmVudGlhbAogICAgICAgICAgICAgLy8gd2F5
IHN0YXJ0aW5nIGF0IGp1c3QgYWJvdmUgdGhlIHByZWNpc2Ugc2l6ZSBjbGFzc2VzIHRvIGZvdXIg
Y2VsbHMgcGVyIGJsb2NrLgogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoT3B0aW9uczo6
ZHVtcFNpemVDbGFzc2VzKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE1hcmtlZCBi
bG9jayBwYXlsb2FkIHNpemU6ICIsIHN0YXRpY19jYXN0PHNpemVfdD4oTWFya2VkU3BhY2U6OmJs
b2NrUGF5bG9hZCksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVt
cFNpemVDbGFzc2VzKCksICIgICAgTWFya2VkIGJsb2NrIHBheWxvYWQgc2l6ZTogIiwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IDsgKytpKSB7CiAgICAgICAgICAgICAg
ICAgZG91YmxlIGFwcHJveGltYXRlU2l6ZSA9IE1hcmtlZFNwYWNlOjpwcmVjaXNlQ3V0b2ZmICog
cG93KE9wdGlvbnM6OnNpemVDbGFzc1Byb2dyZXNzaW9uKCksIGkpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIE5leHQgc2l6ZSBjbGFzcyBhcyBhIGRvdWJsZTog
IiwgYXBwcm94aW1hdGVTaXplLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSwgIiAgICBOZXh0IHNpemUgY2xhc3MgYXMgYSBkb3Vi
bGU6ICIsIGFwcHJveGltYXRlU2l6ZSk7CiAgICAgICAgIAogICAgICAgICAgICAgICAgIHNpemVf
dCBhcHByb3hpbWF0ZVNpemVJbkJ5dGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihhcHByb3hpbWF0
ZVNpemUpOwotICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcFNpemVD
bGFzc2VzKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBOZXh0IHNpemUgY2xh
c3MgYXMgYnl0ZXM6ICIsIGFwcHJveGltYXRlU2l6ZUluQnl0ZXMsICJcbiIpOworICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpLCAiICAgIE5leHQg
c2l6ZSBjbGFzcyBhcyBieXRlczogIiwgYXBwcm94aW1hdGVTaXplSW5CeXRlcyk7CiAgICAgICAg
IAogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjb21wdXRlciBkaWQgdGhl
IG1hdGggY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFwcHJveGlt
YXRlU2l6ZUluQnl0ZXMgPj0gTWFya2VkU3BhY2U6OnByZWNpc2VDdXRvZmYpOwpAQCAtOTUsMjUg
Kzg5LDE5IEBAIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBzaXplQ2xhc3NlcygpCiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVDbGFzcyA9CiAgICAgICAgICAgICAg
ICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRTcGFjZTo6c2l6ZVN0ZXA+KGFw
cHJveGltYXRlU2l6ZUluQnl0ZXMpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiICAgIFNpemUgY2xhc3M6ICIsIHNpemVDbGFzcywgIlxuIik7CisgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2VzKCksICIgICAgU2l6ZSBjbGFz
czogIiwgc2l6ZUNsYXNzKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBP
cHRpbWl6ZSB0aGUgc2l6ZSBjbGFzcyBzbyB0aGF0IHRoZXJlIGlzbid0IGFueSBzbG9wIGF0IHRo
ZSBlbmQgb2YgdGhlIGJsb2NrJ3MKICAgICAgICAgICAgICAgICAvLyBwYXlsb2FkLgogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXls
b2FkIC8gc2l6ZUNsYXNzOwogICAgICAgICAgICAgICAgIHNpemVfdCBwb3NzaWJseUJldHRlclNp
emVDbGFzcyA9IChNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbHNQZXJCbG9jaykgJiB+
KE1hcmtlZFNwYWNlOjpzaXplU3RlcCAtIDEpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIFBvc3NpYmx5IGJldHRlciBzaXplIGNsYXNzOiAiLCBwb3NzaWJseUJl
dHRlclNpemVDbGFzcywgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6ZHVtcFNpemVDbGFzc2VzKCksICIgICAgUG9zc2libHkgYmV0dGVyIHNpemUgY2xhc3M6ICIs
IHBvc3NpYmx5QmV0dGVyU2l6ZUNsYXNzKTsKIAogICAgICAgICAgICAgICAgIC8vIFRoZSBzaXpl
IGNsYXNzIHdlIGp1c3QgY2FtZSB1cCB3aXRoIGlzIGJldHRlciB0aGFuIHRoZSBvdGhlciBvbmUg
aWYgaXQgcmVkdWNlcwogICAgICAgICAgICAgICAgIC8vIHRvdGFsIHdhc3RhZ2UgYXNzdW1pbmcg
d2Ugb25seSBhbGxvY2F0ZSBjZWxscyBvZiB0aGF0IHNpemUuCiAgICAgICAgICAgICAgICAgc2l6
ZV90IG9yaWdpbmFsV2FzdGFnZSA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLSBjZWxsc1Bl
ckJsb2NrICogc2l6ZUNsYXNzOwogICAgICAgICAgICAgICAgIHNpemVfdCBuZXdXYXN0YWdlID0g
KHBvc3NpYmx5QmV0dGVyU2l6ZUNsYXNzIC0gc2l6ZUNsYXNzKSAqIGNlbGxzUGVyQmxvY2s7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBTaXplQ2xh
c3NlcygpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT3JpZ2luYWwgd2FzdGFn
ZTogIiwgb3JpZ2luYWxXYXN0YWdlLCAiLCBuZXcgd2FzdGFnZTogIiwgbmV3V2FzdGFnZSwgIlxu
Iik7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcFNpemVDbGFzc2Vz
KCksICIgICAgT3JpZ2luYWwgd2FzdGFnZTogIiwgb3JpZ2luYWxXYXN0YWdlLCAiLCBuZXcgd2Fz
dGFnZTogIiwgbmV3V2FzdGFnZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
c2l6ZV90IGJldHRlclNpemVDbGFzczsKICAgICAgICAgICAgICAgICBpZiAobmV3V2FzdGFnZSA+
IG9yaWdpbmFsV2FzdGFnZSkKQEAgLTEyMSw4ICsxMDksNyBAQCBjb25zdCBWZWN0b3I8c2l6ZV90
PiYgc2l6ZUNsYXNzZXMoKQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgYmV0dGVyU2l6ZUNsYXNzID0gcG9zc2libHlCZXR0ZXJTaXplQ2xhc3M7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBTaXplQ2xhc3NlcygpKQot
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ2hvb3Npbmcgc2l6ZSBjbGFzczogIiwg
YmV0dGVyU2l6ZUNsYXNzLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRp
b25zOjpkdW1wU2l6ZUNsYXNzZXMoKSwgIiAgICBDaG9vc2luZyBzaXplIGNsYXNzOiAiLCBiZXR0
ZXJTaXplQ2xhc3MpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChiZXR0
ZXJTaXplQ2xhc3MgPT0gcmVzdWx0LT5sYXN0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
RGVmZW5zZSBmb3Igd2hlbiBleHBTdGVwIGlzIHNtYWxsLgpAQCAtMTQ5LDggKzEzNiw3IEBAIGNv
bnN0IFZlY3RvcjxzaXplX3Q+JiBzaXplQ2xhc3NlcygpCiAgICAgICAgICAgICAgICAgcmVzdWx0
LT5zaHJpbmtDYXBhY2l0eShpdCAtIHJlc3VsdC0+YmVnaW4oKSk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChPcHRpb25zOjpkdW1wU2l6ZUNsYXNzZXMoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJKU0MgSGVhcCBNYXJrZWRTcGFjZSBzaXplIGNsYXNzIGR1bXA6ICIsIGxp
c3REdW1wKCpyZXN1bHQpLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OmR1bXBTaXplQ2xhc3NlcygpLCAiSlNDIEhlYXAgTWFya2VkU3BhY2Ugc2l6ZSBjbGFzcyBkdW1w
OiAiLCBsaXN0RHVtcCgqcmVzdWx0KSk7CiAKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYW4gb3B0
aW1pYXRpb24gaW4gTWFya2VkU3BhY2U6Om9wdGltYWxTaXplRm9yKCkgdGhhdCBhc3N1bWVzIHRo
aW5ncyBhYm91dAogICAgICAgICAgICAgLy8gdGhlIHNpemUgY2xhc3MgdGFibGUuIFRoaXMgY2hl
Y2tzIG91ciByZXN1bHRzIGFnYWluc3QgdGhhdCBmdW5jdGlvbidzIGFzc3VtcHRpb25zLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCmluZGV4
IDNiYWI3Njc5YzU1Li42ZjRkYzE3ODAzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtpbmdDb25zdHJhaW50LmNwcApAQCAtNzIsOCArNzIsNyBAQCBkb3VibGUgTWFy
a2luZ0NvbnN0cmFpbnQ6OndvcmtFc3RpbWF0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKIAogdm9p
ZCBNYXJraW5nQ29uc3RyYWludDo6cHJlcGFyZVRvRXhlY3V0ZShjb25zdCBBYnN0cmFjdExvY2tl
ciYgY29uc3RyYWludFNvbHZpbmdMb2NrZXIsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAg
IGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICBkYXRhTG9nKGFiYnJldmlhdGVkTmFtZSgp
KTsKKyAgICBkYXRhTG9nSWYoT3B0aW9uczo6bG9nR0MoKSwgYWJicmV2aWF0ZWROYW1lKCkpOwog
ICAgIFZpc2l0Q291bnRlciB2aXNpdENvdW50ZXIodmlzaXRvcik7CiAgICAgcHJlcGFyZVRvRXhl
Y3V0ZUltcGwoY29uc3RyYWludFNvbHZpbmdMb2NrZXIsIHZpc2l0b3IpOwogICAgIG1fbGFzdFZp
c2l0Q291bnQgPSB2aXNpdENvdW50ZXIudmlzaXRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IDE3ODBjMDhh
NDcwLi5mZWE4MDgyY2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtODMsOCArODMsNyBAQCB2b2lkIE1hcmtpbmdD
b25zdHJhaW50U2V0OjphZGQoCiBib29sIE1hcmtpbmdDb25zdHJhaW50U2V0OjpleGVjdXRlQ29u
dmVyZ2VuY2UoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBleGVj
dXRlQ29udmVyZ2VuY2VJbXBsKHZpc2l0b3IpOwotICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQot
ICAgICAgICBkYXRhTG9nKCIgIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICIg
Iik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA0LDggKzEwMyw3IEBAIGJvb2wgTWFy
a2luZ0NvbnN0cmFpbnRTZXQ6OmV4ZWN1dGVDb252ZXJnZW5jZUltcGwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgCiAgICAgdW5zaWduZWQgaXRlcmF0aW9uID0gbV9pdGVyYXRpb24rKzsKICAg
ICAKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0YUxvZygiaSMiLCBpdGVy
YXRpb24sICI6Iik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJpIyIsIGl0ZXJh
dGlvbiwgIjoiKTsKIAogICAgIGlmIChpdGVyYXRpb24gPT0gMSkgewogICAgICAgICAvLyBGaXJz
dCBpdGVyYXRpb24gaXMgYmVmb3JlIGFueSB2aXNpdG9yIGRyYWluaW5nLCBzbyBpdCdzIHVubGlr
ZWx5IHRvIHRyaWdnZXIgYW55IGNvbnN0cmFpbnRzCkBAIC0xNzQsOCArMTcyLDcgQEAgdm9pZCBN
YXJraW5nQ29uc3RyYWludFNldDo6ZXhlY3V0ZUFsbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX3NldCkKICAgICAgICAgY29uc3RyYWludC0+
ZXhlY3V0ZSh2aXNpdG9yKTsKLSAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgZGF0
YUxvZygiICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiICIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcAppbmRleCBjYmJiZDMxYzZmZS4uMzczNWJjOTU4
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJh
aW50U29sdmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29u
c3RyYWludFNvbHZlci5jcHAKQEAgLTYxLDE0ICs2MSwxMiBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U29sdmVyOjpleGVjdXRlKFNjaGVkdWxlclByZWZlcmVuY2UgcHJlZmVyZW5jZSwgU2NvcGVk
TGFtYgogICAgIFJFTEVBU0VfQVNTRVJUKCFtX251bVRocmVhZHNUaGF0TWF5UHJvZHVjZVdvcmsp
OwogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VQYXJhbGxlbE1hcmtpbmdDb25zdHJhaW50U29s
dmVyKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICBkYXRh
TG9nKHByZWZlcmVuY2UgPT0gUGFyYWxsZWxXb3JrRmlyc3QgPyAiUCIgOiAiTiIsICI8Iik7Cisg
ICAgICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCBwcmVmZXJlbmNlID09IFBhcmFsbGVs
V29ya0ZpcnN0ID8gIlAiIDogIk4iLCAiPCIpOwogICAgICAgICAKICAgICAgICAgbV9oZWFwLnJ1
bkZ1bmN0aW9uSW5QYXJhbGxlbCgKICAgICAgICAgICAgIFsmXSAoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpIHsgcnVuRXhlY3V0aW9uVGhyZWFkKHZpc2l0b3IsIHByZWZlcmVuY2UsIHBpY2tOZXh0KTsg
fSk7CiAgICAgICAgIAotICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKLSAgICAgICAgICAg
IGRhdGFMb2coIj4iKTsKKyAgICAgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICI+Iik7
CiAgICAgfSBlbHNlCiAgICAgICAgIHJ1bkV4ZWN1dGlvblRocmVhZChtX21haW5WaXNpdG9yLCBw
cmVmZXJlbmNlLCBwaWNrTmV4dCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAKaW5kZXggMWE3MTY0ZWVmNjguLmYzMTZmZGVkMGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayhDb250YWlu
ZXJUeXBlJiBjb250YWluZXIsIEpTQ2UKIHsKICAgICBBU1NFUlQobV9oZWFwLmlzTWFya2VkKGNl
bGwpKTsKICNpZiBDUFUoWDg2XzY0KQotICAgIGlmIChPcHRpb25zOjpkdW1wWmFwcGVkQ2VsbENy
YXNoRGF0YSgpKSB7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBaYXBwZWRDZWxsQ3Jh
c2hEYXRhKCkpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShjZWxsLT5pc1phcHBlZCgpKSkKICAg
ICAgICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChjZWxsKTsKICAgICB9CkBAIC0zOTcs
NyArMzk3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVu
KGNvbnN0IEpTQ2VsbCogY2VsbCkKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgc28g
bXVjaCBiZXR0ZXIuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI0NjIKICNpZiBDUFUoWDg2XzY0KQotICAgICAgICBpZiAoT3B0aW9uczo6ZHVt
cFphcHBlZENlbGxDcmFzaERhdGEoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
ZHVtcFphcHBlZENlbGxDcmFzaERhdGEoKSkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZtKCkpOwogICAgICAgICAgICAgaWYgKExJS0VMWShz
dHJ1Y3R1cmUpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRh
YmxlID0gJnN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwpAQCAtNzk1LDggKzc5
NSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZUFuZERyYWluKE1vbm90b25pY1RpbWUgdGlt
ZW91dCkKIAogdm9pZCBTbG90VmlzaXRvcjo6ZGlkUmFjZShjb25zdCBWaXNpdFJhY2VLZXkmIHJh
Y2UpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VWaXNpdFJhY2UoKSkKLSAgICAgICAgZGF0
YUxvZyh0b0NTdHJpbmcoIkdDIHZpc2l0IHJhY2U6ICIsIHJhY2UsICJcbiIpKTsKKyAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlVmlzaXRSYWNlKCksIHRvQ1N0cmluZygiR0MgdmlzaXQg
cmFjZTogIiwgcmFjZSkpOwogICAgIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaGVhcCgp
LT5tX3JhY2VNYXJrU3RhY2tMb2NrKTsKICAgICBKU0NlbGwqIGNlbGwgPSByYWNlLmNlbGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2NoYXN0aWNTcGFjZVRp
bWVNdXRhdG9yU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2No
YXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmNwcAppbmRleCAxNTgzNTVhZDZlOC4uMDE3
N2Q5NzU2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5jcHAKQEAgLTc3LDgg
Kzc3LDcgQEAgdm9pZCBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcjo6YmVnaW5D
b2xsZWN0aW9uKCkKICAgICAgICAgT3B0aW9uczo6Y29uY3VycmVudEdDTWF4SGVhZHJvb20oKSAq
CiAgICAgICAgIHN0ZDo6bWF4PGRvdWJsZT4obV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZUF0VGhl
QmVnaW5uaW5nLCBtX2hlYXAubV9tYXhFZGVuU2l6ZSk7CiAgICAgCi0gICAgaWYgKE9wdGlvbnM6
OmxvZ0dDKCkpCi0gICAgICAgIGRhdGFMb2coImNhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGVBdFRoZUJlZ2lubmluZyAvIDEwMjQsICJrYiBoPSIsIChtX2J5dGVzQWxsb2NhdGVkVGhpc0N5
Y2xlQXRUaGVFbmQgLSBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlQXRUaGVCZWdpbm5pbmcpIC8g
MTAyNCwgImtiICIpOworICAgIGRhdGFMb2dJZihPcHRpb25zOjpsb2dHQygpLCAiY2E9IiwgbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZUF0VGhlQmVnaW5uaW5nIC8gMTAyNCwgImtiIGg9IiwgKG1f
Ynl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGVBdFRoZUVuZCAtIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGVBdFRoZUJlZ2lubmluZykgLyAxMDI0LCAia2IgIik7CiAgICAgCiAgICAgbV9iZWZvcmVDb25z
dHJhaW50cyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogfQpAQCAtMTEwLDggKzEwOSw3IEBAIHZv
aWQgU3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI6OmRpZEV4ZWN1dGVDb25zdHJh
aW50cygpCiAgICAgICAgIGNvbnN0cmFpbnRFeGVjdXRpb25EdXJhdGlvbiAqIG1fcGF1c2VTY2Fs
ZSwKICAgICAgICAgbV9taW5pbXVtUGF1c2UpOwogICAgIAotICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQotICAgICAgICBkYXRhTG9nKCJ0cD0iLCBtX3RhcmdldFBhdXNlLm1pbGxpc2Vjb25kcygp
LCAibXMgIik7CisgICAgZGF0YUxvZ0lmKE9wdGlvbnM6OmxvZ0dDKCksICJ0cD0iLCBtX3Rhcmdl
dFBhdXNlLm1pbGxpc2Vjb25kcygpLCAibXMgIik7CiAgICAgCiAgICAgbV9wbGFubmVkUmVzdW1l
VGltZSA9IHNuYXBzaG90Lm5vdygpICsgbV90YXJnZXRQYXVzZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCBkNzcxNzk0NWIzNS4uZTQyNDhmMjIyM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6
OmxpbmsoKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhB
cml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihtX2FyaXR5
Q2hlY2spOwogCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSB7CisgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSkgewogICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+ZHVtcChwYXRjaEJ1ZmZlcik7CiAgICAgICAgIHBhdGNoQnVmZmVyLmRpZEFscmVh
ZHlEaXNhc3NlbWJsZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4
Y2VwdGlvbnMuY3BwCmluZGV4IGI3ZDBjYTIzNThiLi4xNjEwZGNlYjQ1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZv
aWQgZ2VuZXJpY1Vud2luZChWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBDYWxsRnJhbWUqIHRvcEpT
Q2FsbEZyYW1lID0gdm0udG9wSlNDYWxsRnJhbWUoKTsKLSAgICBpZiAoT3B0aW9uczo6YnJlYWtP
blRocm93KCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6YnJlYWtPblRocm93KCkpKSB7
CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdG9wSlNDYWxsRnJhbWUtPmNvZGVCbG9j
aygpOwogICAgICAgICBkYXRhTG9nKCJJbiBjYWxsIGZyYW1lICIsIFJhd1BvaW50ZXIodG9wSlND
YWxsRnJhbWUpLCAiIGZvciBjb2RlIGJsb2NrICIsIGNvZGVCbG9jaywgIlxuIik7CiAgICAgICAg
IENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCAwODJhNzgzMDg0ZC4uZGJhMTAxM2I3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTUzOSw4ICsxNTM5LDcgQEAgU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWlu
dDMyX3QgYnl0ZWMKICAgICBpZiAoIWNvZGVCbG9jay0+Y2hlY2tJZk9wdGltaXphdGlvblRocmVz
aG9sZFJlYWNoZWQoKSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywg
ImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY291bnRlciA9ICIsIGNvZGVCbG9jay0+aml0RXhlY3V0
ZUNvdW50ZXIoKSkpOwogICAgICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAg
ICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0
LCBiZWNhdXNlIHRoZSB0aHJlc2hvbGQgaGFzbid0IGJlZW4gcmVhY2hlZC5cbiIpOworICAgICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDaG9vc2luZyBub3QgdG8gb3B0
aW1pemUgIiwgKmNvZGVCbG9jaywgIiB5ZXQsIGJlY2F1c2UgdGhlIHRocmVzaG9sZCBoYXNuJ3Qg
YmVlbiByZWFjaGVkLiIpOwogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAg
IH0KICAgICAKQEAgLTE1NTQsOCArMTU1Myw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAg
ICAgaWYgKGNvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGluZWQpIHsKICAgICAgICAgQ09E
RUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoInNob3Vs
ZCBhbHdheXMgYmUgaW5saW5lZCIpKTsKICAgICAgICAgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRP
cHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgZGF0YUxvZygiQ2hvb3Npbmcgbm90IHRv
IG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIG1fc2hvdWxkQWx3YXlzQmVJ
bmxpbmVkID09IHRydWUuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLCAiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBi
ZWNhdXNlIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRydWUuIik7CiAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoMCwgMCk7CiAgICAgfQogCkBAIC0xNjEwLDE0ICsxNjA4LDEyIEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBv
aW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIGlmICghY29kZUJsb2NrLT5oYXNPcHRpbWl6
ZWRSZXBsYWNlbWVudCgpKSB7CiAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVC
bG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsZWQgYW5kIGZhaWxlZCIpKTsKICAg
ICAgICAgICAgIGNvZGVCbG9jay0+dXBkYXRlQWxsUHJlZGljdGlvbnMoKTsKLSAgICAgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRv
ZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQuXG4iKTsKKyAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNvZGUgYmxvY2sgIiwgKmNvZGVCbG9j
aywgIiB3YXMgY29tcGlsZWQgYnV0IGl0IGRvZXNuJ3QgaGF2ZSBhbiBvcHRpbWl6ZWQgcmVwbGFj
ZW1lbnQuIik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkp
IHsKICAgICAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAg
ICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBPU1IgIiwgY29kZUJsb2NrLCAiIC0+ICIsIHJl
cGxhY2VtZW50LCAiLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIkNvbnNpZGVyaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgcmVwbGFjZW1lbnQs
ICIuIik7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LCB0
aGVuIGl0IG11c3QgYmUgdGhlIGNhc2UgdGhhdCB3ZSBlbnRlcmVkCiAgICAgICAgIC8vIGN0aV9v
cHRpbWl6ZSBmcm9tIGEgbG9vcC4gVGhhdCdzIGJlY2F1c2UgaWYgdGhlcmUncyBhbiBvcHRpbWl6
ZWQgcmVwbGFjZW1lbnQsCiAgICAgICAgIC8vIHRoZW4gYWxsIGNhbGxzIHRvIHRoaXMgZnVuY3Rp
b24gd2lsbCBiZSByZWxpbmtlZCB0byB0aGUgcmVwbGFjZW1lbnQgYW5kIHNvCkBAIC0xNjMzLDI3
ICsxNjI5LDIyIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9w
dGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIC8vIGFkZGl0aW9u
YWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWNvbXBpbGF0aW9u
IHRocmFzaGluZy4KICAgICAgICAgaWYgKHJlcGxhY2VtZW50LT5zaG91bGRSZW9wdGltaXplRnJv
bUxvb3BOb3coKSkgewogICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIGZyb20gbG9vcCBub3ci
KSk7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewot
ICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICJUcmlnZ2VyaW5n
IHJlb3B0aW1pemF0aW9uIG9mICIsIGNvZGVCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgIigi
LCByZXBsYWNlbWVudCwgIikgKGluIGxvb3ApLlxuIik7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCisgICAgICAgICAgICAgICAg
IlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29kZUJsb2NrLAorICAgICAgICAgICAg
ICAgICIoIiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS4iKTsKICAgICAgICAgICAgIHJlcGxh
Y2VtZW50LT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0
aW1pemF0aW9uVHJpZ2dlciwgQ291bnRSZW9wdGltaXphdGlvbik7CiAgICAgICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKCFjb2RlQmxvY2stPnNob3VsZE9wdGltaXplTm93KCkpIHsKICAgICAgICAgICAgIENPREVC
TE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJpbnN1ZmZp
Y2llbnQgcHJvZmlsaW5nIikpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAg
ICAgICAiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAiLCAqY29kZUJsb2NrLAotICAgICAgICAg
ICAgICAgICAgICAiIGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LAorICAgICAgICAgICAgICAgICJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICIsICpjb2RlQmxv
Y2ssCisgICAgICAgICAgICAgICAgIiBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcu
Iik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAgICAgICAg
ICBkYXRhTG9nKCJUcmlnZ2VyaW5nIG9wdGltaXplZCBjb21waWxhdGlvbiBvZiAiLCAqY29kZUJs
b2NrLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
VHJpZ2dlcmluZyBvcHRpbWl6ZWQgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jayk7CiAKICAg
ICAgICAgdW5zaWduZWQgbnVtVmFyc1dpdGhWYWx1ZXM7CiAgICAgICAgIGlmIChieXRlY29kZUlu
ZGV4KQpAQCAtMTY4NSwxMCArMTY3Niw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAg
CiAgICAgaWYgKHZvaWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBhcmVPU1JFbnRyeSh2bSwgY2Fs
bEZyYW1lLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAgIENP
REVCTE9DS19MT0dfRVZFTlQob3B0aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJj
IyIsIGJ5dGVjb2RlSW5kZXgpKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgIlBlcmZv
cm1pbmcgT1NSICIsIGNvZGVCbG9jaywgIiAtPiAiLCBvcHRpbWl6ZWRDb2RlQmxvY2ssICIuXG4i
KTsKLSAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICJQZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2Nr
KTsKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwogICAgICAgICBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGltaXplKFRydWVUcmlTdGF0ZSk7CkBA
IC0xNjk3LDEyICsxNjg1LDEwIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQodGFyZ2V0UEMsIGRhdGFCdWZmZXIpOwogICAgIH0KIAotICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKSB7Ci0gICAgICAgIGRhdGFMb2coCi0g
ICAgICAgICAgICAiT3B0aW1pemluZyAiLCBjb2RlQmxvY2ssICIgLT4gIiwgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLAotICAgICAgICAgICAgIiBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVy
IGEgZGVsYXkgb2YgIiwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyKCksICIuXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZU9TUigpLAorICAgICAgICAiT3B0aW1pemluZyAiLCBjb2RlQmxvY2ssICIgLT4gIiwgY29kZUJs
b2NrLT5yZXBsYWNlbWVudCgpLAorICAgICAgICAiIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwgYWZ0
ZXIgYSBkZWxheSBvZiAiLAorICAgICAgICBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKIAogICAgIC8vIENvdW50IHRoZSBPU1IgZmFpbHVyZSBhcyBhIHNwZWN1bGF0aW9u
IGZhaWx1cmUuIElmIHRoaXMgaGFwcGVucyBhIGxvdCwgdGhlbgogICAgIC8vIHJlb3B0aW1pemUu
CkBAIC0xNzE4LDExICsxNzA0LDkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAvLyBy
ZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3Vs
ZFJlb3B0aW1pemVOb3coKSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9j
aywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIHJlb3B0aW1pemUgbm93IikpOwotICAg
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewotICAgICAgICAgICAg
ZGF0YUxvZygKLSAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAi
LCBjb2RlQmxvY2ssICIgLT4gIiwKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIpOwotICAgICAgICB9CisgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJl
b3B0aW1pemF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAtPiAiLAorICAgICAgICAgICAgY29kZUJs
b2NrLT5yZXBsYWNlbWVudCgpLCAiIChhZnRlciBPU1IgZmFpbCkuIik7CiAgICAgICAgIG9wdGlt
aXplZENvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9CYXNlbGluZUxv
b3BSZW9wdGltaXphdGlvblRyaWdnZXJPbk9TUkVudHJ5RmFpbCwgQ291bnRSZW9wdGltaXphdGlv
bik7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCA5MDIwZDM1ODI3NS4uMjAxZWM5YjA2M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC00Nyw4ICs0Nyw3IEBAIHZvaWQg
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQmVjb21l
UmVhZHlBc3luY2hyb25vdXNsCiAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlZERGR0NvZGVCbG9j
aywgIXByb2ZpbGVkREZHQ29kZUJsb2NrKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwogICAgIAotICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgY29t
cGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiBkaWQgYmVjb21lIHJlYWR5LlxuIik7CisgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiT3B0aW1pemluZyBjb21waWxhdGlv
biBvZiAiLCAqY29kZUJsb2NrLCAiIGRpZCBiZWNvbWUgcmVhZHkuIik7CiAgICAgCiAgICAgY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5mb3JjZU9wdGltaXphdGlvblNsb3dQYXRoQ29uY3VycmVu
dGx5KCk7CiB9CkBAIC01OSw4ICs1OCw3IEBAIHZvaWQgSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUoCiAgICAgQVNTRVJUKCFwcm9maWxl
ZERGR0NvZGVCbG9jayk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+aml0
VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKICAgICAKLSAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZU9TUigpKQotICAgICAgICBkYXRhTG9nKCJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9m
ICIsICpjb2RlQmxvY2ssICIgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwg
KmNvZGVCbG9jaywgIiByZXN1bHQ6ICIsIHJlc3VsdCk7CiAgICAgCiAgICAgaWYgKHJlc3VsdCA9
PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCiAgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUV29ya2xpc3QuY3BwCmluZGV4IGM2NDhkNDZhZjRhLi4xOTgwZWVhZmNiOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKQEAgLTU3LDE0ICs1NywxMiBAQCBw
dWJsaWM6CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAgICAgIGNhc2UgQ29tcGlsYXRp
b25GYWlsZWQ6CiAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG1fY29kZUJsb2NrLCAi
ZGVsYXlKSVRDb21waWxlIiwgKCJjb21waWxhdGlvbiBmYWlsZWQiKSk7Ci0gICAgICAgICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIgICAg
SklUIGNvbXBpbGF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIEpJVCBjb21waWxhdGlvbiBmYWlsZWQuIik7CiAgICAg
ICAgICAgICBtX2NvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgICAgICAgICBt
X2NvZGVCbG9jay0+bV9kaWRGYWlsSklUQ29tcGlsYXRpb24gPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKLSAgICAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiAg
ICBKSVQgY29tcGlsYXRpb24gc3VjY2Vzc2Z1bC5cbiIpOworICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIEpJVCBjb21waWxhdGlvbiBzdWNjZXNzZnVs
LiIpOwogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxs
Q29kZShtX2NvZGVCbG9jayk7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+aml0U29vbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCBjZmE2Zjk4NWUzYi4uM2Zl
ODJmODQ2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00NSw5ICs0NSw3IEBAIFBvbHltb3JwaGlj
Q2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9k
ZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9jYWxsTGlua0luZm8pIHsKLSAgICAgICAg
aWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICAgICAgZGF0YUxvZygiVW5s
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5M
b2NhdGlvbigpLCAiLCAiLCBtX2NhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCAiXG4iKTsKLQor
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKSwgIiwgIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSk7CiAgICAgICAgIG1fY2Fs
bExpbmtJbmZvLT51bmxpbmsodm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKaW5kZXggNTkxODg4M2E4MzMuLmQxM2Q2ZDVmN2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwMzgsOCArMTAzOCw3IEBAIHN0YXRpYyB2b2lkIHJl
dmVydENhbGwoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmCiAKIHZvaWQgdW5saW5rRm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCiB7Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICBk
YXRhTG9nKCJVbmxpbmtpbmcgY2FsbCBhdCAiLCBjYWxsTGlua0luZm8uaG90UGF0aE90aGVyKCks
ICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLCAiVW5s
aW5raW5nIGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlcigpKTsKICAgICAKICAg
ICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVu
a0dlbmVyYXRvcikucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCkpOwogfQpAQCAtMTA0
OSw4ICsxMDQ4LDggQEAgc3RhdGljIHZvaWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0kKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwogICAgIENvZGVCbG9jayogY2Fs
bGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCi0gICAgaWYgKHNob3Vs
ZER1bXBEaXNhc3NlbWJseUZvcihjYWxsZXJDb2RlQmxvY2spKQotICAgICAgICBkYXRhTG9nKCJM
aW5raW5nIHZpcnR1YWwgY2FsbCBhdCAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJDb2RlQmxvY2ss
IGNhbGxlckZyYW1lLT5jb2RlT3JpZ2luKCkpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihzaG91
bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyQ29kZUJsb2NrKSwKKyAgICAgICAgIkxpbmtpbmcg
dmlydHVhbCBjYWxsIGF0ICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9jaywgY2FsbGVy
RnJhbWUtPmNvZGVPcmlnaW4oKSkpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmsp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggYWM3MmFiYzU3MzguLjgzODY3ZDE5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTM3OCw4ICszNzgsNyBAQCBpbmxpbmUgYm9v
bCBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyhWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUluZAogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZKSVRUaHJlc2hvbGRS
ZWFjaGVkKCkpIHsKICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxh
eUpJVENvbXBpbGUiLCAoInRocmVzaG9sZCBub3QgcmVhY2hlZCwgY291bnRlciA9ICIsIGNvZGVC
bG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlT1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgIEpJVCB0aHJlc2hvbGQgc2hvdWxk
IGJlIGxpZnRlZC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICIgICAgSklUIHRocmVzaG9sZCBzaG91bGQgYmUgbGlmdGVkLiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMzg3LDggKzM4Niw3IEBAIGlubGluZSBib29sIGpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlSW5kCiAgICAgCiAgICAgc3dpdGNoIChjb2RlQmxvY2stPmppdFR5cGUoKSkgewogICAg
IGNhc2UgSklUVHlwZTo6QmFzZWxpbmVKSVQ6IHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21w
aWxlZC5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIg
ICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC4iKTsKICAgICAgICAgY29kZUJsb2NrLT5qaXRT
b29uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQwNSwxMSArNDAzLDkgQEAg
aW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVJbmQKIAogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRy
eU9TUihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtp
bmQpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAgICBkYXRhTG9n
KAotICAgICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCAiLCBuYW1lLCAiIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAiLAotICAgICAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3Vu
dGVyKCksICJcbiIpOwotICAgIH0KKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksCisgICAgICAgICpjb2RlQmxvY2ssICI6IEVudGVyZWQgIiwgbmFtZSwgIiB3aXRoIGV4ZWN1
dGVDb3VudGVyID0gIiwKKyAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkp
OwogICAgIAogICAgIGlmICghc2hvdWxkSklUKGNvZGVCbG9jaykpIHsKICAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKQEAgLTQ3MSwxMSArNDY3LDkgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAg
ICAgZGF0YUxvZygKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCiAgICAg
ICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAiLAotICAgICAgICAgICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCksICJc
biIpOwotICAgIH0KKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigp
KTsKICAgICAKICAgICBhdXRvIGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUlu
ZGV4KGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKIApAQCAtNTEzLDExICs1MDcsOSBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQogICAgIFVOVVNFRF9QQVJBTShnbG9iYWxP
YmplY3QpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigp
KSB7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVk
IHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICIsCi0gICAgICAgICAgICBjb2RlQmxvY2st
PmxsaW50RXhlY3V0ZUNvdW50ZXIoKSwgIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSwKKyAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZXBs
YWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAorICAgICAgICBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSk7CiAgICAgCiAgICAgaWYgKHNob3VsZEpJVChjb2RlQmxvY2spKQogICAg
ICAgICBqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyh2bSwgY29kZUJsb2NrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggMDI4NTVk
M2JiZDcuLjA3MzY5OTk1YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEpTTW9kdWxlUmVjb3JkKiBN
b2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5v
ZGUpCiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmxleGljYWxW
YXJpYWJsZXMoKSkKICAgICAgICAgZXhwb3J0VmFyaWFibGUobW9kdWxlUHJvZ3JhbU5vZGUsIHBh
aXIua2V5LCBwYWlyLnZhbHVlKTsKIAotICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlUmVjb3Jk
KCkpCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQoKSkpCiAgICAg
ICAgIG1fbW9kdWxlUmVjb3JkLT5kdW1wKCk7CiAKICAgICByZXR1cm4gbV9tb2R1bGVSZWNvcmQu
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5jcHAKaW5kZXggNjRkZDNlNjFkN2UuLjRhMWE5MWY0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0yNTIsOCArMjUyLDcg
QEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxl
TG9hZGVyOjppbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJp
bmcqIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgU291cmNlT3JpZ2luJiBy
ZWZlcnJlcikKIHsKLSAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQot
ICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2ltcG9ydF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGds
b2JhbE9iamVjdCwgbW9kdWxlTmFtZSksICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgIkxvYWRlciBbaW1wb3J0XSAiLCBwcmludGFibGVN
b2R1bGVLZXkoZ2xvYmFsT2JqZWN0LCBtb2R1bGVOYW1lKSk7CiAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC0yNzksOCArMjc4LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9h
ZGVyOjppbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAogSWRl
bnRpZmllciBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpCiB7Ci0gICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAg
ICAgICAgZGF0YUxvZygiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xv
YmFsT2JqZWN0LCBuYW1lKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1v
ZHVsZUxvYWRpbmdTdGF0ZSgpLCAiTG9hZGVyIFtyZXNvbHZlXSAiLCBwcmludGFibGVNb2R1bGVL
ZXkoZ2xvYmFsT2JqZWN0LCBuYW1lKSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKQogICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNv
bHZlKGdsb2JhbE9iamVjdCwgdGhpcywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwpA
QCAtMzEwLDggKzMwOCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVz
b2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAKIEpTSW50ZXJuYWxQ
cm9taXNlKiBKU01vZHVsZUxvYWRlcjo6ZmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQogewotICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCi0gICAgICAg
IGRhdGFMb2coIkxvYWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmpl
Y3QsIGtleSksICJcbiIpOworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2Fk
aW5nU3RhdGUoKSwgIkxvYWRlciBbZmV0Y2hdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxP
YmplY3QsIGtleSkpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMzQ1LDggKzM0Miw3
IEBAIEpTT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2
YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVl
IG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgaWYgKE9w
dGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAgICAgICAgZGF0YUxvZygiTG9hZGVy
IFtldmFsdWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9iamVjdCwga2V5KSwgIlxu
Iik7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpLCAi
TG9hZGVyIFtldmFsdWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9iamVjdCwga2V5
KSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJFdmFsdWF0ZSkKICAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCB0
aGlzLCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyKTsKQEAgLTQ0OSw4ICs0
NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck1vZHVsZURl
Y2xhcmF0aW9uSW5zdGFudGlhdGlvbihKU0dsb2JhbAogICAgIGlmICghbW9kdWxlUmVjb3JkKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgaWYg
KE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKLSAgICAgICAgZGF0YUxvZygiTG9h
ZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKKyAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIgW2xpbmtd
ICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCkpOwogCiAgICAgbW9kdWxlUmVjb3JkLT5saW5r
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IGZmODQyMDI1ZDU3Li43
NTQzNjk0Mjg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHAKQEAgLTE5Niw4ICsxOTYsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFi
bGU6Omluc3RhbGxDb2RlKFZNJiB2bSwgQ29kZUJsb2NrKiBnZW5lcmljQ29kZUJsb2NrLCBDb2Rl
VHlwZQogICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmljQ29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSA9PSB0aGlzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNFeGVj
dXRhYmxlU2NyaXB0KGdlbmVyaWNDb2RlQmxvY2stPmppdFR5cGUoKSkpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpCi0gICAgICAgICAgICBk
YXRhTG9nKCJJbnN0YWxsaW5nICIsICpnZW5lcmljQ29kZUJsb2NrLCAiXG4iKTsKKyAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiSW5zdGFsbGluZyAiLCAqZ2VuZXJp
Y0NvZGVCbG9jayk7CiAgICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkodm0ubV9wZXJCeXRl
Y29kZVByb2ZpbGVyKSkKICAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+ZW5z
dXJlQnl0ZWNvZGVzRm9yKGdlbmVyaWNDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCmluZGV4IGE5ZmU3NGE0YjdmLi44ODAzYTcxNGU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtOTM4LDcgKzkzOCw3IEBAIEV4Y2VwdGlvbiogVk06OnRo
cm93RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uCiAgICAgaWYgKCF0aHJvd09yaWdpbkZyYW1lKQogICAgICAgICB0aHJvd09yaWdpbkZy
YW1lID0gZ2xvYmFsT2JqZWN0LT5kZXByZWNhdGVkQ2FsbEZyYW1lRm9yRGVidWdnZXIoKTsKIAot
ICAgIGlmIChPcHRpb25zOjpicmVha09uVGhyb3coKSkgeworICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjpicmVha09uVGhyb3coKSkpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0
aHJvd09yaWdpbkZyYW1lID8gdGhyb3dPcmlnaW5GcmFtZS0+Y29kZUJsb2NrKCkgOiBudWxscHRy
OwogICAgICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gaW4gY2FsbCBmcmFtZSAiLCBS
YXdQb2ludGVyKHRocm93T3JpZ2luRnJhbWUpLCAiIGZvciBjb2RlIGJsb2NrICIsIGNvZGVCbG9j
aywgIlxuIik7CiAgICAgICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ29tcGlsZXJUaW1pbmdTY29wZS5jcHAKaW5kZXggOTZmMGRhZTIyYzkuLjUyNGE4
NWU4ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29tcGlsZXJU
aW1pbmdTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvbXBpbGVy
VGltaW5nU2NvcGUuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgQ29tcGlsZXJUaW1pbmdTY29wZTo6
Q29tcGlsZXJUaW1pbmdTY29wZShjb25zdCBjaGFyKiBjb21waWxlck5hbWUsIGNvbnN0IGNoYXIq
IG4KICAgICA6IG1fY29tcGlsZXJOYW1lKGNvbXBpbGVyTmFtZSkKICAgICAsIG1fbmFtZShuYW1l
KQogewotICAgIGlmIChPcHRpb25zOjpsb2dQaGFzZVRpbWVzKCkpCisgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmxvZ1BoYXNlVGltZXMoKSkpCiAgICAgICAgIG1fYmVmb3JlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiB9CiAKIENvbXBpbGVyVGltaW5nU2NvcGU6On5Db21waWxlclRpbWluZ1Nj
b3BlKCkKIHsKLSAgICBpZiAoT3B0aW9uczo6bG9nUGhhc2VUaW1lcygpKSB7CisgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmxvZ1BoYXNlVGltZXMoKSkpIHsKICAgICAgICAgU2Vjb25kcyBkdXJh
dGlvbiA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9iZWZvcmU7CiAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAiWyIsIG1fY29tcGlsZXJOYW1lLCAiXSAiLCBtX25hbWUsICIgdG9vazog
IiwgZHVyYXRpb24ubWlsbGlzZWNvbmRzKCksICIgbXMgIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXggZmRlYWI5NDBlMTkuLmU0MDcyNjk5NzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAtMTIwLDggKzEyMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2Zhc3RNZW1vcmllcy5zaXplKCkgPj0gbV9t
YXhGYXN0TWVtb3J5Q291bnQgLyAyID8gTWVtb3J5UmVzdWx0OjpTdWNjZXNzQW5kTm90aWZ5TWVt
b3J5UHJlc3N1cmUgOiBNZW1vcnlSZXN1bHQ6OlN1Y2Nlc3MpOwogICAgICAgICB9KCk7CiAgICAg
ICAgIAotICAgICAgICBpZiAoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSkKLSAgICAg
ICAgICAgIGRhdGFMb2coIkFsbG9jYXRlZCB2aXJ0dWFsOiAiLCByZXN1bHQsICI7IHN0YXRlOiAi
LCAqdGhpcywgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmxvZ1dlYkFzc2Vt
Ymx5TWVtb3J5KCksICJBbGxvY2F0ZWQgdmlydHVhbDogIiwgcmVzdWx0LCAiOyBzdGF0ZTogIiwg
KnRoaXMpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMzQs
OCArMTMzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mYXN0TWVtb3JpZXMucmVtb3ZlRmly
c3QoYmFzZVB0cik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjps
b2dXZWJBc3NlbWJseU1lbW9yeSgpKQotICAgICAgICAgICAgZGF0YUxvZygiRnJlZWQgdmlydHVh
bDsgc3RhdGU6ICIsICp0aGlzLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
bG9nV2ViQXNzZW1ibHlNZW1vcnkoKSwgIkZyZWVkIHZpcnR1YWw7IHN0YXRlOiAiLCAqdGhpcyk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNBZGRyZXNzSW5GYXN0TWVtb3J5KHZvaWQqIGFkZHJl
c3MpCkBAIC0xNzIsOCArMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIE1lbW9y
eVJlc3VsdDo6U3VjY2VzczsKICAgICAgICAgfSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKE9w
dGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCkpCi0gICAgICAgICAgICBkYXRhTG9nKCJBbGxv
Y2F0ZWQgcGh5c2ljYWw6ICIsIGJ5dGVzLCAiLCAiLCBNZW1vcnlSZXN1bHQ6OnRvU3RyaW5nKHJl
c3VsdCksICI7IHN0YXRlOiAiLCAqdGhpcywgIlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OmxvZ1dlYkFzc2VtYmx5TWVtb3J5KCksICJBbGxvY2F0ZWQgcGh5c2ljYWw6ICIsIGJ5
dGVzLCAiLCAiLCBNZW1vcnlSZXN1bHQ6OnRvU3RyaW5nKHJlc3VsdCksICI7IHN0YXRlOiAiLCAq
dGhpcyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4NSw4
ICsxODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3BoeXNpY2FsQnl0ZXMgLT0gYnl0ZXM7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChPcHRpb25zOjpsb2dXZWJBc3NlbWJs
eU1lbW9yeSgpKQotICAgICAgICAgICAgZGF0YUxvZygiRnJlZWQgcGh5c2ljYWw6ICIsIGJ5dGVz
LCAiOyBzdGF0ZTogIiwgKnRoaXMsICJcbiIpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25z
Ojpsb2dXZWJBc3NlbWJseU1lbW9yeSgpLCAiRnJlZWQgcGh5c2ljYWw6ICIsIGJ5dGVzLCAiOyBz
dGF0ZTogIiwgKnRoaXMpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseS5jcHAKaW5kZXggMzY0OWU1NzBmMmYuLmQ1M2FiMjY4MDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1Byb21pc2UqIHByb21pc2UsIEpTCiAgICAgICAgIHByb21pc2UtPnJlc29sdmUoZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSk7CiAgICAgZWxzZSBpZiAocmVzb2x2ZUtpbmQgPT0gUmVzb2x2
ZTo6V2l0aE1vZHVsZVJlY29yZCkgewogICAgICAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBpbnN0
YW5jZS0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0KCktPm1vZHVsZVJlY29yZCgpOwotICAgICAgICBp
ZiAoT3B0aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQorICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKSkKICAgICAgICAgICAgIG1vZHVsZVJlY29yZC0+ZHVt
cCgpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3Jk
KTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRl
eCA0MTJhODExMjc4NC4uZDJmMGU4ZTJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC00MjQzLDcgKzQyNDMsNyBAQCB2b2lkIGppdENvbXBpbGUoWWFyclBhdHRl
cm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNoYXJTaXplIGNoYXJTaQog
ICAgICAgICBZYXJyR2VuZXJhdG9yPEluY2x1ZGVTdWJwYXR0ZXJucz4odm0sIHBhdHRlcm4sIHBh
dHRlcm5TdHJpbmcsIGNvZGVCbG9jaywgY2hhclNpemUpLmNvbXBpbGUoKTsKIAogICAgIGlmIChh
dXRvIGZhaWx1cmVSZWFzb24gPSBjb2RlQmxvY2suZmFpbHVyZVJlYXNvbigpKSB7Ci0gICAgICAg
IGlmIChPcHRpb25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKSkgewogICAg
ICAgICAgICAgcGF0dGVybi5kdW1wUGF0dGVyblN0cmluZyhXVEY6OmRhdGFGaWxlKCksIHBhdHRl
cm5TdHJpbmcpOwogICAgICAgICAgICAgZGF0YUxvZygiIDogIik7CiAgICAgICAgICAgICBkdW1w
Q29tcGlsZUZhaWx1cmUoKmZhaWx1cmVSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IGViNjBkYmU0N2YxLi5jNTA4MjA4NTYyYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMTE3Nyw3ICsxMTc3
LDcgQEAgRXJyb3JDb2RlIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVy
blN0cmluZywgdm9pZCogc3RhY2tMaW1pdCkKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICB9CiAKLSAgICBpZiAoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkKKyAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkpCiAg
ICAgICAgIGR1bXBQYXR0ZXJuKHBhdHRlcm5TdHJpbmcpOwogCiAgICAgcmV0dXJuIEVycm9yQ29k
ZTo6Tm9FcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggZjM2ZDY1NzA4MzUuLjMyODAzYTVjYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIwLTAxLTE1ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIGRhdGFMb2dJZiBtb3JlIHJlZ3VsYXJseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MzMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICogd3RmL0RhdGFMb2cuaDoKKyAgICAgICAg
KFdURjo6ZGF0YUxvZyk6IE1hcmtlZCBORVZFUl9JTkxJTkUsIHNpbmNlIGl0IHNob3VsZCBuZXZl
ciBiZSBwZXJmLXNlbnNpdGl2ZQorCisKIDIwMjAtMDEtMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgogCiAgICAgICAgIFBsYXRmb3JtLmggaXMgb3V0IG9mIGNvbnRyb2wgUGFydCA2
OiBTcGxpdCBVU0VfKiBtYWNybyBkZWZpbml0aW9ucyBvdXQgb2YgUGxhdGZvcm0uaCBhbmQgaW50
byBhIG5ldyBQbGF0Zm9ybVVzZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9n
LmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgKaW5kZXggMGI4NDRiNTIzNTQuLjllM2M3NjZi
ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRGF0YUxvZy5oCkBAIC00MCw3ICs0MCw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRhdGFMb2dGKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigx
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nRlN0cmluZyhjb25zdCBjaGFyKik7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgotdm9pZCBkYXRhTG9nKGNvbnN0IFR5cGVzJi4u
LiB2YWx1ZXMpCitORVZFUl9JTkxJTkUgdm9pZCBkYXRhTG9nKGNvbnN0IFR5cGVzJi4uLiB2YWx1
ZXMpCiB7CiAgICAgZGF0YUZpbGUoKS5wcmludCh2YWx1ZXMuLi4pOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>