<?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>224072</bug_id>
          
          <creation_ts>2021-04-01 12:46:17 -0700</creation_ts>
          <short_desc>Introduce LexicalScopeFeatures to enable future bytecode optimizations</short_desc>
          <delta_ts>2021-06-07 18:43:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>smoley</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746195</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-01 12:46:17 -0700</bug_when>
    <thetext>Introduce LexicalScopeFeatures to enable future bytecode optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746200</commentid>
    <comment_count>1</comment_count>
      <attachid>424944</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-01 12:57:39 -0700</bug_when>
    <thetext>Created attachment 424944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746604</commentid>
    <comment_count>2</comment_count>
      <attachid>425040</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-04-02 12:23:51 -0700</bug_when>
    <thetext>Created attachment 425040
Patch

Fix --debug build and make LexicalScopeFeatures constructor / static methods explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747553</commentid>
    <comment_count>3</comment_count>
      <attachid>425040</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-06 11:49:21 -0700</bug_when>
    <thetext>Comment on attachment 425040
Patch

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

r=me with some nits.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        statement, direct `eval`, or certain variable names only within the current executable:

Typo: &quot;to reason about&quot; =&gt; &quot;of reasoning about&quot; and &quot;of with statement&quot; =&gt; &quot;of with statements&quot;

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        If ResolveNode would know that unforgeable global properties are not shadowed and there

Nit: &quot;would know&quot; =&gt; &quot;knew&quot;

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:257
&gt;      unsigned m_firstLineOffset : 31;

This probably shouldn&apos;t be a bit field or other bit fields should be shuffled around to repack the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748075</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 14:43:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/76366251&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766544</commentid>
    <comment_count>5</comment_count>
      <attachid>430502</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-03 14:57:38 -0700</bug_when>
    <thetext>Created attachment 430502
Patch

Update ChangeLog, drop OptionSet to align with other features and use bit fields, add LexicalScopeFeatures to more classes, remove now unused StrictModeFeature and ArrowFunctionContextFeature, and fix bit fields packing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766545</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-03 14:58:12 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #5)
&gt; Created attachment 430502 [details]
&gt; Patch

                                 sizeof (r278401)   sizeof (patch)

UnlinkedCodeBlock                      160              160
UnlinkedFunctionExecutable              96               96
ScopeNode                              304              304
FunctionMetadataNode                   144              144
SourceProviderCacheItem                 32               32
CachedCodeBlock                        464              464
CachedFunctionExecutableMetadata         4                4
ScriptExecutable                        72               72</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766553</commentid>
    <comment_count>7</comment_count>
      <attachid>430507</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-03 15:24:59 -0700</bug_when>
    <thetext>Created attachment 430507
Patch

Fix --debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767631</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-07 18:43:21 -0700</bug_when>
    <thetext>Committed r278588 (238578@main): &lt;https://commits.webkit.org/238578@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430507.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424944</attachid>
            <date>2021-04-01 12:57:39 -0700</date>
            <delta_ts>2021-04-02 12:23:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224072-patch-1.diff</filename>
            <type>text/plain</type>
            <size>54254</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NTM3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzkyLDYgKzc5Miw3IEBACiAgICAgbGxpbnQvTExJbnRPcGNvZGUuaAogCiAgICAgcGFyc2Vy
L0xleGVyLmgKKyAgICBwYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVyZXMuaAogICAgIHBhcnNlci9Q
YXJzZXJBcmVuYS5oCiAgICAgcGFyc2VyL1BhcnNlckVycm9yLmgKICAgICBwYXJzZXIvUGFyc2Vy
TW9kZXMuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzUzNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsMTAwIEBACiAyMDIxLTA0LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KIAorICAgICAgICBJbnRyb2R1Y2UgTGV4aWNhbFNjb3BlRmVhdHVyZXMgdG8gZW5hYmxl
IGZ1dHVyZSBieXRlY29kZSBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgQnl0ZWNvZGVHZW5lcmF0
b3Igd2FzIGNhcGFibGUgdG8gcmVhc29uIGFib3V0IHRoZSBwcmVzZW5jZSBvZiBgd2l0aGAKKyAg
ICAgICAgc3RhdGVtZW50LCBkaXJlY3QgYGV2YWxgLCBvciBjZXJ0YWluIHZhcmlhYmxlIG5hbWVz
IG9ubHkgd2l0aGluIHRoZSBjdXJyZW50IGV4ZWN1dGFibGU6CisKKyAgICAgICAgICAgIGBgYAor
ICAgICAgICAgICAgd2l0aCAoZm9vKSB7CisgICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhZCBubyB3YXkgdG8gZGV0ZWN0
IFdpdGhTY29wZSBkdXJpbmcgZ2VuZXJhdGlvbi4KKyAgICAgICAgICAgICAgICB9KSgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYGBgCisKKyAgICAgICAgSWYgRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGUgd291bGQga25vdyB0aGVyZSBpcyBubyBXaXRoU2NvcGUsIGl0IGNvdWxkIGVtaXQg
b3BfY2FsbCB3aXRoCisgICAgICAgIGB0aGlzYCB2YWx1ZSBvZiBgdW5kZWZpbmVkYCBhcyBwZXIg
c3BlYyBbMV0sIGluc3RlYWQgb2YgcmVzb2x2ZWQgc2NvcGUuIFRoaXMgd291bGQ6CisgICAgICAg
ICAgKiBzaW1wbGlmeSBvcF90b190aGlzIG9uIGFsbCB0aWVycyBhbmQgcmVtb3ZlIGl0IGZyb20g
dGhlIG1ldGhvZCB0YWJsZTsKKyAgICAgICAgICAqIHNhdmUgMSBpbnN0cnVjdGlvbiBwZXIgc3Ry
aWN0IGZ1bmN0aW9uIGJ5IHJlbW92aW5nIG9wX3RvX3RoaXM7CisgICAgICAgICAgKiByZW1vdmUg
b2YgfjMwIG9jY3VyZW5jZXMgb2YgdG9UaGlzKCkgY2FsbHMgd2l0aCBFQ01BTW9kZTo6c3RyaWN0
KCkgZnJvbSBidWlsdC1pbnM7CisgICAgICAgICAgKiBmaXggYnVpbHQtaW4gbWV0aG9kcyAvIGFj
Y2Vzc29ycyB0aGF0IHdlcmUgKG9ic2VydmFibHkpIGxhY2tpbmcgaXQ7CisgICAgICAgICAgKiB1
bmJsb2NrIFdlYklETCB8dGhpc3wgdmFsdWUgY2FzdGluZyBmaXggKHNlZSAjMjIzNzU4KS4KKwor
ICAgICAgICBJZiBSZXNvbHZlTm9kZSB3b3VsZCBrbm93IHRoYXQgdW5mb3JnZWFibGUgZ2xvYmFs
IHByb3BlcnRpZXMgYXJlIG5vdCBzaGFkb3dlZCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gYHdp
dGhgIHN0YXRlbWVudCBvciBzbG9wcHkgbW9kZSBkaXJlY3QgYGV2YWxgLCBpdCBjb3VsZCBjb25z
dGFudC1mb2xkIGB1bmRlZmluZWRgIC8KKyAgICAgICAgYEluZmluaXR5YCAvIGBOYU5gIHZhbHVl
cy4gVGhpcyB3b3VsZCBzYXZlIHVwIHRvIDMgYnl0ZWNvZGUgb3BzIHBlciBlYWNoIHVzYWdlIGFu
ZCBhbGxvdworICAgICAgICBlbWl0dGluZyBvcF9pc191bmRlZmluZWRfb3JfbnVsbCBmb3IgYHgg
PT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsYC4KKyAgICAgICAgVjggcGVyZm9ybXMgdGhpcyBv
cHRpbWl6YXRpb24gWzJdLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgTGV4aWNh
bFNjb3BlRmVhdHVyZXMgdG8gYWxsb3cgcGFzc2luZyBzdWNoIG1ldGFkYXRhIHRocm91Z2gKKyAg
ICAgICAgUGFyc2VyID0+IEZ1bmN0aW9uTWV0YWRhdGFOb2RlID0+IFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlID0+IEJ5dGVjb2RlR2VuZXJhdG9yCisgICAgICAgIHdpdGggYSBtaW5pbWFsIGNv
ZGUgZGlmZi4KKworICAgICAgICBFQ01BTW9kZSBpcyBhIGdvb2QgZXhhbXBsZSBvZiBzdWNoIGEg
ZmVhdHVyZSBhcyBpdCBwcm9wYWdhdGVzIGxleGljYWxseTogZnJvbSBvdXRlcgorICAgICAgICB0
byBpbm5lciBzY29wZS4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNz
ZWMtZXZhbHVhdGVjYWxsIChzdGVwIDIpCisgICAgICAgIFsyXTogaHR0cHM6Ly9tZWRpdW0uY29t
L0BibWV1cmVyL3NvbWV0aW1lcy11bmRlZmluZWQtaXMtZGVmaW5lZC03NzAxZTFjOWVmZjgKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0NsYXNzRmllbGRJbml0aWFsaXplckZ1bmN0
aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmxleGljYWxTY29wZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKToKKyAgICAgICAgKiBwYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVyZXMuaDog
QWRkZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0dlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmxleGljYWxTY29wZUZlYXR1
cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFN0cmljdE1vZGUpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6c3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpm
aWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
OjpwdXNoU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmxleGljYWxTY29wZUZlYXR1cmVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW06OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4
Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmFkZEZ1bmN0aW9uVXBkYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlOjpsZXhpY2FsU2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwpOgorCisyMDIxLTA0LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KKwogICAgICAgICBPcHRpbWl6ZSBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSgpIGFuZCBQcm94
eSdzIFtbT3duUHJvcGVydHlLZXlzXV0gbWV0aG9kCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM5MjgKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI3NTM3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMzLDYgKzEyMzMsNyBAQAogCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNl
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMTg0RTIxMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFNEVFNzA5
MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRENjBG
QUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDJDNzZGNTI2MTA3QjI4MDA1MzJFMzgg
LyogTGV4aWNhbFNjb3BlRmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0MkM3NkY0MjYxMDdCMEUwMDUzMkUzOCAvKiBMZXhpY2FsU2NvcGVG
ZWF0dXJlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg0MzIzRTc4MjVENUVDMTkwMEY5Nzc3NiAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZGNTIwMUEzMkE1
OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDMyM0U3OTI1RDVFQzI4MDBGOTc3NzYgLyog
TnVsbFNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTUyNUZDNDFBNkREM0IzMDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQz
MjNFN0EyNUQ1RUMzQjAwRjk3Nzc2IC8qIEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMzdCREUwRTFBRjBCODAwNzY5MThBIC8q
IEdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00MTQ1LDYgKzQxNDYsNyBAQAogCQk3RDVGQjE5MjIwNzQ0QkYyMDA1RERGNjQg
LyogSW50bFBsdXJhbFJ1bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxQbHVyYWxSdWxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTRFRTcwODBF
QkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQyQzc2RjQyNjEwN0IwRTAwNTMyRTM4IC8qIExleGlj
YWxTY29wZUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExleGlj
YWxTY29wZUZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MzIzRTdC
MjVENUVDNjkwMEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQzMjNFN0MyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDMyM0U3
RDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMTQsNiArNzExNiw3IEBACiAJCQkJOTNG
MTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdvcmRzLnRhYmxlICovLAogCQkJCUY2OTJBODY1
MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8sCiAJCQkJRjY5MkE4NjYwMjU1NTk3RDAx
RkY2MEY3IC8qIExleGVyLmggKi8sCisJCQkJODQyQzc2RjQyNjEwN0IwRTAwNTMyRTM4IC8qIExl
eGljYWxTY29wZUZlYXR1cmVzLmggKi8sCiAJCQkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyog
TW9kdWxlQW5hbHl6ZXIuaCAqLywKIAkJCQkwMDBCRUFGMERGNjA0NDgxQUY2QUI2OEMgLyogTW9k
dWxlU2NvcGVEYXRhLmggKi8sCkBAIC0xMDI1MCw2ICsxMDI1Myw3IEBACiAJCQkJMTQwOUVDQkYy
MjVFMTc3NDAwQkVERDU0IC8qIExlYWZFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg0MkM3NkY1MjYxMDdCMjgwMDUzMkUzOCAvKiBMZXhpY2FsU2NvcGVGZWF0dXJlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNv
bnN0YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyog
TGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24g
Mjc1MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQAogCiAgICAgRnVuY3Rp
b25NZXRhZGF0YU5vZGUgbWV0YWRhdGEoCiAgICAgICAgIHN0YXJ0LCBlbmQsIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIHNvdXJjZS5zdGFydE9mZnNldCgpICsgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IHNvdXJjZS5zdGFydE9mZnNldCgpICsgZnVuY3Rpb25OYW1lU3RhcnQsIHNvdXJjZS5zdGFydE9m
ZnNldCgpICsgcGFyYW1ldGVyc1N0YXJ0LAotICAgICAgICBpc0luU3RyaWN0Q29udGV4dCwgY29u
c3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRz
ID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKKyAgICAg
ICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQpLCBjb25zdHJ1Y3Rvcktp
bmQsIGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgPyBTdXBlckJp
bmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBwYXJhbWV0
ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAg
ICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG5ld1NvdXJjZSwgSWRlbnRpZmllcigpLCBGdW5jdGlv
bk1vZGU6OkZ1bmN0aW9uRXhwcmVzc2lvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAJKHJldmlzaW9uIDI3NTM3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0
LDcgQEAKIAogICAgIGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5w
YXJlbnRTY29wZVREWlZhcmlhYmxlcygpOwogICAgIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgcGFy
ZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCA9IGV4ZWN1dGFibGUtPnBhcmVudFByaXZhdGVOYW1l
RW52aXJvbm1lbnQoKTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5T
dHJpY3RDb250ZXh0KCkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7
Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUodm0sIGZ1bmN0aW9uLmdl
dCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgJnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAgICBl
cnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNv
dXJjZSwgcmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCAmcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZXhlY3V0YWJsZS0+bGV4aWNhbFNjb3Bl
RmVhdHVyZXMoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg2LDcgKzg1LDcgQEAKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBSZWZQdHI8VERaRW52aXJvbm1l
bnRMaW5rPiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RM
aW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKLSAgICAsIG1f
aXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAsIG1fbGV4
aWNhbFNjb3BlRmVhdHVyZXMobm9kZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSkKICAgICAsIG1f
bGluZUNvdW50KG5vZGUtPmxhc3RMaW5lKCkgLSBub2RlLT5maXJzdExpbmUoKSkKICAgICAsIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX3VubGlua2VkRnVuY3Rpb25OYW1l
U3RhcnQobm9kZS0+ZnVuY3Rpb25OYW1lU3RhcnQoKSAtIHBhcmVudFNvdXJjZS5zdGFydE9mZnNl
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI3NTM3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw4IEBACiAgICAgICAgIGVuc3VyZVJhcmVEYXRh
KCkubV9jbGFzc1NvdXJjZSA9IHNvdXJjZTsKICAgICB9CiAKLSAgICBib29sIGlzSW5TdHJpY3RD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIExleGlj
YWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9s
ZXhpY2FsU2NvcGVGZWF0dXJlczsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzLnN0cmljdE1vZGUoKTsgfQogICAgIEZ1
bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5j
dGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1f
Y29uc3RydWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpA
QCAtMjU0LDcgKzI1NSw3IEBACiAgICAgfQogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZz
ZXQgOiAzMTsKLSAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICBMZXhp
Y2FsU2NvcGVGZWF0dXJlcyBtX2xleGljYWxTY29wZUZlYXR1cmVzOwogICAgIHVuc2lnbmVkIG1f
bGluZUNvdW50IDogMzE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CiAgICAgdW5zaWduZWQgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0IDogMzE7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjc1MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
MCw3ICsyOTAsNyBAQAogICAgIHJldHVybiBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JO
b25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
UHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVC
bG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9n
cmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVu
dmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMp
CiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1v
ZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUocHJvZ3JhbU5vZGUpCkBA
IC0zMDMsNyArMzAzLDggQEAKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCiAgICAg
LCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgcHJvZ3JhbU5v
ZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICwgbV9sZXhp
Y2FsU2NvcGVGZWF0dXJlcyhsZXhpY2FsU2NvcGVGZWF0dXJlcykKKyAgICAsIG1fZWNtYU1vZGUo
bGV4aWNhbFNjb3BlRmVhdHVyZXMuZWNtYU1vZGUoKSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBh
cmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMpOwogCkBAIC0z
MzcsNyArMzM4LDcgQEAKICAgICB9CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNv
ZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQ
cml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2Vu
ZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25t
ZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBMZXhpY2FsU2NvcGVGZWF0dXJl
cyBsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtl
VW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAg
ICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Nj
b3BlTm9kZShmdW5jdGlvbk5vZGUpCkBAIC0zNDcsNyArMzQ4LDcgQEAKICAgICAsIG1fdXNlc0V4
Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQogICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAg
LCBtX3VzZXNOb25TdHJpY3RFdmFsKGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSAmJiAhZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZnVuY3Rpb25Ob2RlLT51
c2VzRXZhbCgpICYmICFsZXhpY2FsU2NvcGVGZWF0dXJlcy5zdHJpY3RNb2RlKCkpCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhdmUgdGFpbCBjYWxsIGVsaW1pbmF0aW9uIHdp
dGggdGhlIHByb2ZpbGVyCiAgICAgLy8gZW5hYmxlZC4gVGhpcyBpcyBjdXJyZW50bHkgbm90IHBv
c3NpYmxlIGJlY2F1c2UgdGhlIHByb2ZpbGVyIGV4cGVjdHMKICAgICAvLyBvcF93aWxsX2NhbGwg
LyBvcF9kaWRfY2FsbCBwYWlycyBiZWZvcmUgYW5kIGFmdGVyIGEgY2FsbCwgd2hpY2ggYXJlIG5v
dApAQCAtMzU1LDExICszNTYsMTMgQEAKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4ODE5CiAgICAgLy8KICAgICAvLyBOb3RlIHRoYXQgd2UgaW50ZW50
aW9uYWxseSBlbmFibGUgdGFpbCBjYWxsIGZvciBuYWtlZCBjb25zdHJ1Y3RvcnMgc2luY2UgaXQg
ZG9lcyBub3QgaGF2ZSBzcGVjaWFsIGNvZGUgZm9yICJyZXR1cm4iLgotICAgICwgbV9pblRhaWxQ
b3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBlY21hTW9kZS5pc1N0
cmljdCgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAm
JiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSAmJiBsZXhpY2FsU2NvcGVGZWF0dXJlcy5zdHJpY3RNb2RlKCkpCiAgICAgLCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1
bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpKQotICAgICwgbV9lY21hTW9kZShl
Y21hTW9kZSkKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVy
ZXMpCisgICAgLCBtX2VjbWFNb2RlKGxleGljYWxTY29wZUZlYXR1cmVzLmVjbWFNb2RlKCkpCiAg
ICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgp
KQogeworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9sZXhpY2FsU2NvcGVGZWF0dXJlcy5lY21h
TW9kZSgpOwogICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMocGFyZW50UHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCk7CiAKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rpb25TeW1ib2xUYWJsZSA9IFN5bWJv
bFRhYmxlOjpjcmVhdGUobV92bSk7CkBAIC04NDUsNyArODQ4LDcgQEAKICAgICBwdXNoTGV4aWNh
bFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3Rl
ZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Nj
b3BlZEZ1bmN0aW9ucyk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwg
Y29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25t
ZW50LCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50LCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICA6
IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yPih2bSwgY29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2Rl
R2VuZXJhdGlvbk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShldmFsTm9kZSkKQEAgLTg1NSwxMCAr
ODU4LDExIEBACiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCi0gICAg
LCBtX3VzZXNOb25TdHJpY3RFdmFsKGV2YWxOb2RlLT51c2VzRXZhbCgpICYmICFlY21hTW9kZS5p
c1N0cmljdCgpKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChldmFsTm9kZS0+dXNlc0V2YWwo
KSAmJiAhbGV4aWNhbFNjb3BlRmVhdHVyZXMuc3RyaWN0TW9kZSgpKQogICAgICwgbV9pblRhaWxQ
b3NpdGlvbihmYWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0
KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQot
ICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMo
bGV4aWNhbFNjb3BlRmVhdHVyZXMpCisgICAgLCBtX2VjbWFNb2RlKGxleGljYWxTY29wZUZlYXR1
cmVzLmVjbWFNb2RlKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRl
cml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJz
KDEpOwpAQCAtOTEwLDcgKzkxNCw3IEBACiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9k
ZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90
TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwog
fQogCi1CeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJh
dGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFN
b2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxl
UHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVy
YXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBMZXhpY2FsU2NvcGVG
ZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICA6IEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwgY29kZUJsb2NrKSwg
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlvbk1vZGUpCiAgICAg
LCBtX3Njb3BlTm9kZShtb2R1bGVQcm9ncmFtTm9kZSkKQEAgLTkyMyw3ICs5MjcsOCBAQAogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFs
c2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChtb2R1bGVQcm9n
cmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0V2
YWwoKSkKLSAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgLCBtX2xleGljYWxTY29wZUZl
YXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQorICAgICwgbV9lY21hTW9kZShsZXhpY2FsU2Nv
cGVGZWF0dXJlcy5lY21hTW9kZSgpKQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiAKQEAgLTMyNjMsNyArMzI2
OCw3IEBACiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCiAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJ
bkNsYXNzID0gdHJ1ZTsKLSAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJB
cmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAs
IDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5k
aW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKKyAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRh
ZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCks
IDAsIDAsIDAsIDAsIDAsIExleGljYWxTY29wZUZlYXR1cmVzKGFsd2F5c1N0cmljdEluQ2xhc3Mp
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHN1cGVyQmluZGluZywgMCwgcGFyc2VNb2RlLCBmYWxz
ZSk7CiAgICAgbWV0YWRhdGEuZmluaXNoUGFyc2luZyhtX3Njb3BlTm9kZS0+c291cmNlKCksIElk
ZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2RlOjpNZXRob2REZWZpbml0aW9uKTsKICAgICBhdXRvIGlu
aXRpYWxpemVyID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Nj
b3BlTm9kZS0+c291cmNlKCksICZtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJp
bGl0eSwgc2NyaXB0TW9kZSgpLCBXVEZNb3ZlKHZhcmlhYmxlc1VuZGVyVERaKSwgV1RGTW92ZShw
YXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KSwgbmV3RGVyaXZlZENvbnRleHRUeXBlLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25l
KTsKICAgICBpbml0aWFsaXplci0+c2V0Q2xhc3NGaWVsZExvY2F0aW9ucyhXVEZNb3ZlKGNsYXNz
RmllbGRMb2NhdGlvbnMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI3NTM3MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDA4LDEwICs0MDgsMTAgQEAKICAgICBwdWJsaWM6CiAgICAgICAg
IHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsK
IAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJl
ZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCos
IEVDTUFNb2RlKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5vZGUq
LCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCosIEVDTUFNb2RlKTsKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBF
dmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlv
bk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVO
YW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOworICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIFByb2dyYW1Ob2RlKiwgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpF
bnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIExleGljYWxT
Y29wZUZlYXR1cmVzKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBGdW5jdGlvbk5v
ZGUqLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5h
bWVFbnZpcm9ubWVudCosIExleGljYWxTY29wZUZlYXR1cmVzKTsKKyAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBFdmFsTm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYs
IGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyk7Cisg
ICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgTW9kdWxlUHJvZ3JhbU5vZGUqLCBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwg
Y29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmly
b25tZW50KiwgTGV4aWNhbFNjb3BlRmVhdHVyZXMpOwogCiAgICAgICAgIH5CeXRlY29kZUdlbmVy
YXRvcigpOwogICAgICAgICAKQEAgLTQzMiw3ICs0MzIsNyBAQAogICAgICAgICBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpOyB9CiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVW5saW5rZWRDb2RlQmxvY2s+Ci0g
ICAgICAgIHN0YXRpYyBQYXJzZXJFcnJvciBnZW5lcmF0ZShWTSYgdm0sIE5vZGUqIG5vZGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2Rl
LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUo
Vk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4m
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBw
cml2YXRlTmFtZUVudmlyb25tZW50LCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcykKICAgICAgICAgewogICAgICAgICAgICAgTW9ub3RvbmljVGltZSBiZWZvcmU7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGlt
ZXMoKSkpCkBAIC00MzksNyArNDM5LDcgQEAKICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNv
ZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25N
b2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNt
YU1vZGUpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8
Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVy
YXRpb25Nb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgcHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRl
Y29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CkBAIC0xMDY3LDYgKzEwNjcs
NyBAQAogICAgICAgICBib29sIHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9uTW9kZTo6
VHlwZVByb2ZpbGVyKTsgfQogICAgICAgICBib29sIHNob3VsZEVtaXRDb250cm9sRmxvd1Byb2Zp
bGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhD
b2RlR2VuZXJhdGlvbk1vZGU6OkNvbnRyb2xGbG93UHJvZmlsZXIpOyB9CiAgICAgICAgIAorICAg
ICAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7IH0KICAgICAgICAgRUNNQU1vZGUgZWNtYU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc0No
ZWNrcG9pbnRzKCkgeyBtX2NvZGVCbG9jay0+c2V0SGFzQ2hlY2twb2ludHMoKTsgfQogCkBAIC0x
MzYzLDYgKzEzNjQsNyBAQAogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwogICAgICAgICBi
b29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICAgICAgTGV4
aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhpY2FsU2NvcGVGZWF0dXJlczsKICAgICAgICAgRUNNQU1v
ZGUgbV9lY21hTW9kZTsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRl
eHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDU2LDcgKzQ1Niw3IEBACiAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoCiAgICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
Ci0gICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9v
bCBpblN0cmljdENvbnRleHQsIAorICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBw
YXJhbWV0ZXJzU3RhcnQsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
LCAKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywKICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQpAQCAtNDY0LDcgKzQ2NCw3IEBACiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAg
ICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVy
QmluZGluZywKKyAgICAgICAgICAgIGxleGljYWxTY29wZUZlYXR1cmVzLCBjb25zdHJ1Y3Rvcktp
bmQsIHN1cGVyQmluZGluZywKICAgICAgICAgICAgIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGljYWxTY29wZUZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhpY2FsU2NvcGVGZWF0dXJlcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVy
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFsZXhleSBTaHZheWthIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRUNNQU1vZGUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIExleGljYWxTY29wZUZl
YXR1cmVzRW51bSA6IHVpbnQ4X3QgeworICAgIE5vRmVhdHVyZXMgPSAwLAorICAgIFN0cmljdE1v
ZGUgPSAxIDw8IDEsCit9OworCitjbGFzcyBMZXhpY2FsU2NvcGVGZWF0dXJlcyBmaW5hbCA6IHB1
YmxpYyBPcHRpb25TZXQ8TGV4aWNhbFNjb3BlRmVhdHVyZXNFbnVtPiB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IE9wdGlvblNldDxMZXhpY2FsU2NvcGVGZWF0dXJlc0VudW0+OworICAgIHN0
YXRpYyBjb25zdGV4cHIgTGV4aWNhbFNjb3BlRmVhdHVyZXNFbnVtIFN0cmljdE1vZGUgPSBMZXhp
Y2FsU2NvcGVGZWF0dXJlc0VudW06OlN0cmljdE1vZGU7CisKKyAgICBMZXhpY2FsU2NvcGVGZWF0
dXJlcygpID0gZGVmYXVsdDsKKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyhib29sIHN0cmljdE1v
ZGUpCisgICAgICAgIDogQmFzZSgpCisgICAgeworICAgICAgICBzZXQoU3RyaWN0TW9kZSwgc3Ry
aWN0TW9kZSk7CisgICAgfQorCisgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVy
biBjb250YWlucyhTdHJpY3RNb2RlKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpz
bG9wcHkoKTsgfQorICAgIGJvb2wgc3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnRhaW5z
KFN0cmljdE1vZGUpOyB9CisgICAgdm9pZCBzZXRTdHJpY3RNb2RlKGJvb2wgc3RyaWN0TW9kZSkg
eyBzZXQoU3RyaWN0TW9kZSwgc3RyaWN0TW9kZSk7IH0gCit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAy
NzUzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1LDEwICsxOTUsMTAgQEAKIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5j
dGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlv
biwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCi0gICAgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2Fs
U2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywKICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKLSAgICAgICAgLCBtX2lz
SW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fbGV4aWNhbFNj
b3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKQEAgLTIyMCwxMCArMjIwLDEwIEBACiBG
dW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAK
LSAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50
IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCisgICAgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3Rh
cnQsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCAKICAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1
bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKLSAg
ICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAs
IG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgICAgICwg
bV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpCiAgICAgICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKQEAgLTI1OCw3ICsy
NTgsNyBAQAogYm9vbCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0b3I9PShjb25zdCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VNb2Rl
ID09IG90aGVyLm1fcGFyc2VNb2RlCi0gICAgICAgICYmIG1faXNJblN0cmljdENvbnRleHQgPT0g
b3RoZXIubV9pc0luU3RyaWN0Q29udGV4dAorICAgICAgICAmJiBtX2xleGljYWxTY29wZUZlYXR1
cmVzID09IG90aGVyLm1fbGV4aWNhbFNjb3BlRmVhdHVyZXMKICAgICAgICAgJiYgbV9zdXBlckJp
bmRpbmcgPT0gb3RoZXIubV9zdXBlckJpbmRpbmcKICAgICAgICAgJiYgbV9jb25zdHJ1Y3Rvcktp
bmQgPT0gb3RoZXIubV9jb25zdHJ1Y3RvcktpbmQKICAgICAgICAgJiYgbV9pc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9PSBvdGhlci5tX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
CkBAIC0yODEsNyArMjgxLDcgQEAKIHZvaWQgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OmR1bXAoUHJp
bnRTdHJlYW0mIHN0cmVhbSkgY29uc3QKIHsKICAgICBzdHJlYW0ucHJpbnRsbigibV9wYXJzZU1v
ZGUgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fcGFyc2VNb2RlKSk7Ci0gICAgc3RyZWFtLnBy
aW50bG4oIm1faXNJblN0cmljdENvbnRleHQgIiwgbV9pc0luU3RyaWN0Q29udGV4dCk7CisgICAg
c3RyZWFtLnByaW50bG4oIm1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgIiwgbV9sZXhpY2FsU2NvcGVG
ZWF0dXJlcy50b1JhdygpKTsKICAgICBzdHJlYW0ucHJpbnRsbigibV9zdXBlckJpbmRpbmcgIiwg
bV9zdXBlckJpbmRpbmcpOwogICAgIHN0cmVhbS5wcmludGxuKCJtX2NvbnN0cnVjdG9yS2luZCAi
LCBtX2NvbnN0cnVjdG9yS2luZCk7CiAgICAgc3RyZWFtLnByaW50bG4oIm1faXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24gIiwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAyNzUzNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxNTUsMTMgKzIxNTUsMTMgQEAKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAg
ICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCi0gICAgICAg
ICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIAorICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAgICAgICBDb25z
dHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAg
ICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgCi0gICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgICAgICAgICAg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2FsU2NvcGVG
ZWF0dXJlcywgCiAgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCkBAIC0yMTk0LDcgKzIxOTQsNyBAQAog
ICAgICAgICB2b2lkIHNldENsYXNzU291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBt
X2NsYXNzU291cmNlID0gc291cmNlOyB9CiAKICAgICAgICAgaW50IHN0YXJ0U3RhcnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0U3RhcnRPZmZzZXQ7IH0KLSAgICAgICAgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAg
ICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdCB7
IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzOyB9CiAgICAgICAgIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJC
aW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0K
ICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIo
KSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CkBAIC0yMjIw
LDcgKzIyMjAsNyBAQAogICAgICAgICB9CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHVuc2lnbmVk
IG1faXNJblN0cmljdENvbnRleHQgOiAxOworICAgICAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBt
X2xleGljYWxTY29wZUZlYXR1cmVzOwogICAgICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6
IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICAgICAgdW5z
aWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw3
ICs1MzMsNyBAQAogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGdlbmVy
YXRvckZ1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBn
ZW5lcmF0b3IiKTsKICAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVp
bGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9Ci0gICAgaW5mby5ib2R5ID0gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUsIGZhbHNlKTsKKyAgICBpbmZvLmJvZHkgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGxleGljYWxTY29wZUZlYXR1cmVzKCksIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQs
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUsIGZhbHNlKTsKIAogICAgIGluZm8u
ZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2Rh
dGEub2Zmc2V0OwpAQCAtNTg0LDcgKzU4NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgcG9wU2Nv
cGUoYXN5bmNGdW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxl
SW5mbyk7CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNv
bHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5k
aW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOworICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0
b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgc291cmNlUGFyc2VNb2Rl
KCksIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgIGluZm8uZW5kTGluZSA9
IHRva2VuTGluZSgpOwogICAgIGluZm8uZW5kT2Zmc2V0ID0gaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24gPyB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IDogbV90b2tlbi5tX2RhdGEub2Zm
c2V0OwpAQCAtNjM1LDcgKzYzNSw3IEBACiAgICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5
bmNGdW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShz
dGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigp
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBp
bmZvLnBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKTsKKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3Rh
cnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IGxleGljYWxTY29wZUZlYXR1cmVzKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJp
bmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogCiAgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW5m
by5lbmRPZmZzZXQgPSBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA/IHRva2VuTG9jYXRp
b24oKS5lbmRPZmZzZXQgOiBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CkBAIC0yMTcwLDcgKzIxNzAs
NyBAQAogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgICAgICBTdXBlckJpbmRpbmcg
ZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBhZGp1c3RTdXBlckJpbmRpbmdGb3JCYXNlQ29uc3RydWN0
b3IoY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIGN1cnJlbnRTY29wZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwg
c291cmNlUGFyc2VNb2RlKCksIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNjb3Bl
RmVhdHVyZXMoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1l
dGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxODksNyArMjE4OSw3IEBACiAgICAgfQogICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgU3VwZXJCaW5kaW5nIGZ1
bmN0aW9uU3VwZXJCaW5kaW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVjdG9y
KGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxv
Y2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVj
dG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJz
ZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigp
LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgY29uc3Ry
dWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBh
cnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdBcnRpY2xlRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBt
b2RlKQpAQCAtMjQzMyw3ICsyNDMzLDcgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgICAgIHN0YXJ0
TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNv
bnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsCisgICAgICAgICAgICAgICAgY2Fj
aGVkSW5mby0+bGV4aWNhbFNjb3BlRmVhdHVyZXMsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25T
dXBlckJpbmRpbmcsCiAgICAgICAgICAgICAgICAgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQs
CiAgICAgICAgICAgICAgICAgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogICAgICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNh
Y2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTY29wZSk7CiAKIHB1YmxpYzoKLSAgICBTY29wZShjb25zdCBW
TSYgdm0sIGJvb2wgaXNGdW5jdGlvbiwgYm9vbCBpc0dlbmVyYXRvciwgYm9vbCBzdHJpY3RNb2Rl
LCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0FzeW5jRnVuY3Rpb24pCisgICAgU2NvcGUo
Y29uc3QgVk0mIHZtLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywg
Ym9vbCBpc0Z1bmN0aW9uLCBib29sIGlzR2VuZXJhdG9yLCBib29sIGlzQXJyb3dGdW5jdGlvbiwg
Ym9vbCBpc0FzeW5jRnVuY3Rpb24pCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX3No
YWRvd3NBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzRXZhbChmYWxzZSkKQEAgLTE1
NSw3ICsxNTUsNyBAQAogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoZmFsc2UpCiAgICAg
ICAgICwgbV9hbGxvd3NWYXJEZWNsYXJhdGlvbnModHJ1ZSkKICAgICAgICAgLCBtX2FsbG93c0xl
eGljYWxEZWNsYXJhdGlvbnModHJ1ZSkKLSAgICAgICAgLCBtX3N0cmljdE1vZGUoc3RyaWN0TW9k
ZSkKKyAgICAgICAgLCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVz
KQogICAgICAgICAsIG1faXNGdW5jdGlvbihpc0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNHZW5l
cmF0b3IoaXNHZW5lcmF0b3IpCiAgICAgICAgICwgbV9pc0dlbmVyYXRvckJvdW5kYXJ5KGZhbHNl
KQpAQCAtNzU1LDggKzc1NSw5IEBACiAgICAgICAgICAgICBjYXB0dXJlZFZhcmlhYmxlcy5hZGQo
aW1wbCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgdm9pZCBzZXRTdHJpY3RNb2RlKCkgeyBtX3N0
cmljdE1vZGUgPSB0cnVlOyB9Ci0gICAgYm9vbCBzdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpY3RNb2RlOyB9CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVh
dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzOyB9CisgICAgdm9p
ZCBzZXRTdHJpY3RNb2RlKCkgeyBtX2xleGljYWxTY29wZUZlYXR1cmVzLnNldFN0cmljdE1vZGUo
dHJ1ZSk7IH0KKyAgICBib29sIHN0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxT
Y29wZUZlYXR1cmVzLnN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWRTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCBzaGFkb3dz
QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzQXJndW1lbnRzOyB9CiAgICAgdm9p
ZCBzZXRIYXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0KCkKQEAgLTc3OSw3ICs3ODAsNyBAQAogICAg
IHsKICAgICAgICAgQVNTRVJUKG1faXNGdW5jdGlvbik7CiAgICAgICAgIHBhcmFtZXRlcnMudXNl
c0V2YWwgPSBtX3VzZXNFdmFsOwotICAgICAgICBwYXJhbWV0ZXJzLnN0cmljdE1vZGUgPSBtX3N0
cmljdE1vZGU7CisgICAgICAgIHBhcmFtZXRlcnMubGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBtX2xl
eGljYWxTY29wZUZlYXR1cmVzOwogICAgICAgICBwYXJhbWV0ZXJzLm5lZWRzRnVsbEFjdGl2YXRp
b24gPSBtX25lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgICAgIHBhcmFtZXRlcnMuaW5uZXJBcnJv
d0Z1bmN0aW9uRmVhdHVyZXMgPSBtX2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzOwogICAgICAg
ICBwYXJhbWV0ZXJzLm5lZWRzU3VwZXJCaW5kaW5nID0gbV9uZWVkc1N1cGVyQmluZGluZzsKQEAg
LTgwMyw3ICs4MDQsNyBAQAogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNGdW5jdGlvbik7CiAg
ICAgICAgIG1fdXNlc0V2YWwgPSBpbmZvLT51c2VzRXZhbDsKLSAgICAgICAgbV9zdHJpY3RNb2Rl
ID0gaW5mby0+c3RyaWN0TW9kZTsKKyAgICAgICAgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA9IGlu
Zm8tPmxleGljYWxTY29wZUZlYXR1cmVzOwogICAgICAgICBtX2lubmVyQXJyb3dGdW5jdGlvbkZl
YXR1cmVzID0gaW5mby0+aW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgICAgIG1fbmVl
ZHNGdWxsQWN0aXZhdGlvbiA9IGluZm8tPm5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgICAgIG1f
bmVlZHNTdXBlckJpbmRpbmcgPSBpbmZvLT5uZWVkc1N1cGVyQmluZGluZzsKQEAgLTkwMyw3ICs5
MDQsNyBAQAogICAgIGJvb2wgbV9uZWVkc1N1cGVyQmluZGluZzsKICAgICBib29sIG1fYWxsb3dz
VmFyRGVjbGFyYXRpb25zOwogICAgIGJvb2wgbV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zOwot
ICAgIGJvb2wgbV9zdHJpY3RNb2RlOworICAgIExleGljYWxTY29wZUZlYXR1cmVzIG1fbGV4aWNh
bFNjb3BlRmVhdHVyZXM7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb247CiAgICAgYm9vbCBtX2lzR2Vu
ZXJhdG9yOwogICAgIGJvb2wgbV9pc0dlbmVyYXRvckJvdW5kYXJ5OwpAQCAtMTMyNCwxOSArMTMy
NSwxOSBAQAogCiAgICAgU2NvcGVSZWYgcHVzaFNjb3BlKCkKICAgICB7CisgICAgICAgIExleGlj
YWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzOwogICAgICAgICBib29sIGlzRnVu
Y3Rpb24gPSBmYWxzZTsKLSAgICAgICAgYm9vbCBpc1N0cmljdCA9IGZhbHNlOwogICAgICAgICBi
b29sIGlzR2VuZXJhdG9yID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIGlm
ICghbV9zY29wZVN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaXNTdHJpY3QgPSBtX3Nj
b3BlU3RhY2subGFzdCgpLnN0cmljdE1vZGUoKTsKKyAgICAgICAgICAgIGxleGljYWxTY29wZUZl
YXR1cmVzID0gbV9zY29wZVN0YWNrLmxhc3QoKS5sZXhpY2FsU2NvcGVGZWF0dXJlcygpOwogICAg
ICAgICAgICAgaXNGdW5jdGlvbiA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNGdW5jdGlvbigpOwog
ICAgICAgICAgICAgaXNHZW5lcmF0b3IgPSBtX3Njb3BlU3RhY2subGFzdCgpLmlzR2VuZXJhdG9y
KCk7CiAgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSBtX3Njb3BlU3RhY2subGFzdCgpLmlz
QXJyb3dGdW5jdGlvbigpOwogICAgICAgICAgICAgaXNBc3luY0Z1bmN0aW9uID0gbV9zY29wZVN0
YWNrLmxhc3QoKS5pc0FzeW5jRnVuY3Rpb24oKTsKICAgICAgICAgfQotICAgICAgICBtX3Njb3Bl
U3RhY2suY29uc3RydWN0QW5kQXBwZW5kKG1fdm0sIGlzRnVuY3Rpb24sIGlzR2VuZXJhdG9yLCBp
c1N0cmljdCwgaXNBcnJvd0Z1bmN0aW9uLCBpc0FzeW5jRnVuY3Rpb24pOworICAgICAgICBtX3Nj
b3BlU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKG1fdm0sIGxleGljYWxTY29wZUZlYXR1cmVzLCBp
c0Z1bmN0aW9uLCBpc0dlbmVyYXRvciwgaXNBcnJvd0Z1bmN0aW9uLCBpc0FzeW5jRnVuY3Rpb24p
OwogICAgICAgICByZXR1cm4gY3VycmVudFNjb3BlKCk7CiAgICAgfQogCkBAIC0xNjcwLDYgKzE2
NzEsNyBAQAogICAgIHZvaWQgZW5kTG9vcCgpIHsgY3VycmVudFNjb3BlKCktPmVuZExvb3AoKTsg
fQogICAgIHZvaWQgc3RhcnRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgpLT5zdGFydFN3aXRjaCgp
OyB9CiAgICAgdm9pZCBlbmRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgpLT5lbmRTd2l0Y2goKTsg
fQorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzKCkgeyByZXR1
cm4gY3VycmVudFNjb3BlKCktPmxleGljYWxTY29wZUZlYXR1cmVzKCk7IH0KICAgICB2b2lkIHNl
dFN0cmljdE1vZGUoKSB7IGN1cnJlbnRTY29wZSgpLT5zZXRTdHJpY3RNb2RlKCk7IH0KICAgICBi
b29sIHN0cmljdE1vZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+c3RyaWN0TW9kZSgpOyB9
CiAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiQ29uc3Ry
dWN0b3JLaW5kLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkxleGljYWxT
Y29wZUZlYXR1cmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCShy
ZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKICAgICB1
bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKICAgICBib29sIG5lZWRzRnVsbEFjdGl2YXRpb247CiAg
ICAgYm9vbCB1c2VzRXZhbDsKLSAgICBib29sIHN0cmljdE1vZGU7CisgICAgTGV4aWNhbFNjb3Bl
RmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgYm9vbCBuZWVkc1N1cGVyQmluZGlu
ZzsKICAgICBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9u
RmVhdHVyZXM7CiAgICAgVmVjdG9yPFVuaXF1ZWRTdHJpbmdJbXBsKiwgOD4gdXNlZFZhcmlhYmxl
czsKQEAgLTgyLDcgKzgyLDcgQEAKICAgICB1bnNpZ25lZCBlbmRGdW5jdGlvbk9mZnNldCA6IDMx
OwogICAgIGJvb2wgdXNlc0V2YWwgOiAxOwogICAgIHVuc2lnbmVkIGxhc3RUb2tlbkxpbmUgOiAz
MTsKLSAgICBib29sIHN0cmljdE1vZGUgOiAxOworICAgIHVuc2lnbmVkIGxleGljYWxTY29wZUZl
YXR1cmVzIDogNjsKICAgICB1bnNpZ25lZCBsYXN0VG9rZW5TdGFydE9mZnNldCA6IDMxOwogICAg
IHVuc2lnbmVkIGV4cGVjdGVkU3VwZXJCaW5kaW5nIDogMTsgLy8gU3VwZXJCaW5kaW5nCiAgICAg
dW5zaWduZWQgbGFzdFRva2VuRW5kT2Zmc2V0OiAzMTsKQEAgLTEyMiw3ICsxMjIsNyBAQAogICAg
ICwgZW5kRnVuY3Rpb25PZmZzZXQocGFyYW1ldGVycy5lbmRGdW5jdGlvbk9mZnNldCkKICAgICAs
IHVzZXNFdmFsKHBhcmFtZXRlcnMudXNlc0V2YWwpCiAgICAgLCBsYXN0VG9rZW5MaW5lKHBhcmFt
ZXRlcnMubGFzdFRva2VuTGluZSkKLSAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5zdHJpY3RN
b2RlKQorICAgICwgbGV4aWNhbFNjb3BlRmVhdHVyZXMocGFyYW1ldGVycy5sZXhpY2FsU2NvcGVG
ZWF0dXJlcy50b1JhdygpKQogICAgICwgbGFzdFRva2VuU3RhcnRPZmZzZXQocGFyYW1ldGVycy5s
YXN0VG9rZW5TdGFydE9mZnNldCkKICAgICAsIGV4cGVjdGVkU3VwZXJCaW5kaW5nKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwYXJhbWV0ZXJzLmV4cGVjdGVkU3VwZXJCaW5kaW5nKSkKICAgICAsIGxh
c3RUb2tlbkVuZE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2tlbkVuZE9mZnNldCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAy
NzUzNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBACiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUdlbmVyYXRvckZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBjb25zdCBJ
ZGVudGlmaWVyJikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQXN5bmNGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBi
b29sLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgPSBOb0lubmVyQXJyb3dGdW5jdGlv
bkZlYXR1cmVzKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRl
RnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCB1bnNpZ25lZCwgdW5zaWduZWQsIGludCwgaW50LCBpbnQsIExleGljYWxTY29wZUZl
YXR1cmVzLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBh
cnNlTW9kZSwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rp
b25FeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tl
cj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0
YXJ0KGludCwgaW50KSB7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZEJ5dGVjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRCeXRlY29kZS5jcHAJKHJldmlzaW9uIDI3NTM3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQAogICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBpdC0+dmFsdWUuYmFzZSgpOwog
ICAgIEFTU0VSVChvZmZzZXQpOwogICAgIGNvcHlMZWFmRXhlY3V0YWJsZXMoYnl0ZWNvZGUuZ2V0
KCkpOwotICAgIG1fdXBkYXRlcy5hcHBlbmQoQ2FjaGVVcGRhdGU6OkZ1bmN0aW9uVXBkYXRlIHsg
b2Zmc2V0LCBraW5kLCB7IGV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIGV4ZWN1dGFibGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkgfSwgV1RGTW92ZShieXRlY29kZS0+bV9wYXlsb2FkKSB9KTsKKyAg
ICBtX3VwZGF0ZXMuYXBwZW5kKENhY2hlVXBkYXRlOjpGdW5jdGlvblVwZGF0ZSB7IG9mZnNldCwg
a2luZCwgeyBleGVjdXRhYmxlLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBleGVjdXRhYmxlLT5m
ZWF0dXJlcygpLCBleGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpIH0sIFdURk1vdmUo
Ynl0ZWNvZGUtPm1fcGF5bG9hZCkgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkQnl0ZWNvZGU6OmNvcHlM
ZWFmRXhlY3V0YWJsZXMoY29uc3QgQ2FjaGVkQnl0ZWNvZGUmIGJ5dGVjb2RlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkocmV2aXNpb24g
Mjc1MzcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDEwICsxODEzLDEwIEBACiAgICAgdW5zaWduZWQgdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldDsgfQogICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJDb3VudDsgfQogCisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3Bl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX211dGFibGVNZXRhZGF0YS5tX2xleGljYWxTY29w
ZUZlYXR1cmVzOyB9CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRhYmxlTWV0YWRhdGEubV9mZWF0dXJlczsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBzb3Vy
Y2VQYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVBhcnNlTW9kZTsgfQogCi0gICAg
dW5zaWduZWQgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RD
b250ZXh0OyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJl
dHVybiBtX211dGFibGVNZXRhZGF0YS5tX2hhc0NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgdW5z
aWduZWQgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0
aW9uOyB9CiAgICAgdW5zaWduZWQgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yOyB9CkBAIC0x
ODQxLDcgKzE4NDEsNiBAQAogICAgIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZU1ldGFkYXRhIG1f
bXV0YWJsZU1ldGFkYXRhOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsK
LSAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2xp
bmVDb3VudCA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAg
IHVuc2lnbmVkIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCA6IDMxOwpAQCAtMjE5OCw2ICsy
MTk3LDcgQEAKIAogQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
JiBleGVjdXRhYmxlKQogeworICAgIG1fbXV0YWJsZU1ldGFkYXRhLm1fbGV4aWNhbFNjb3BlRmVh
dHVyZXMgPSBleGVjdXRhYmxlLm1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgbV9tdXRhYmxl
TWV0YWRhdGEubV9mZWF0dXJlcyA9IGV4ZWN1dGFibGUubV9mZWF0dXJlczsKICAgICBtX211dGFi
bGVNZXRhZGF0YS5tX2hhc0NhcHR1cmVkVmFyaWFibGVzID0gZXhlY3V0YWJsZS5tX2hhc0NhcHR1
cmVkVmFyaWFibGVzOwogCkBAIC0yMjE1LDcgKzIyMTUsNiBAQAogCiAgICAgbV9zb3VyY2VQYXJz
ZU1vZGUgPSBleGVjdXRhYmxlLm1fc291cmNlUGFyc2VNb2RlOwogCi0gICAgbV9pc0luU3RyaWN0
Q29udGV4dCA9IGV4ZWN1dGFibGUubV9pc0luU3RyaWN0Q29udGV4dDsKICAgICBtX2lzQnVpbHRp
bkZ1bmN0aW9uID0gZXhlY3V0YWJsZS5tX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIG1faXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBleGVjdXRhYmxlLm1faXNCdWlsdGluRGVmYXVs
dENsYXNzQ29uc3RydWN0b3I7CiAgICAgbV9jb25zdHJ1Y3RBYmlsaXR5ID0gZXhlY3V0YWJsZS5t
X2NvbnN0cnVjdEFiaWxpdHk7CkBAIC0yMjQ5LDcgKzIyNDgsNyBAQAogQUxXQVlTX0lOTElORSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVj
b2RlciYgZGVjb2RlciwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJiBjYWNoZWRFeGVj
dXRhYmxlKQogICAgIDogQmFzZShkZWNvZGVyLnZtKCksIGRlY29kZXIudm0oKS51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0
KGNhY2hlZEV4ZWN1dGFibGUuZmlyc3RMaW5lT2Zmc2V0KCkpCi0gICAgLCBtX2lzSW5TdHJpY3RD
b250ZXh0KGNhY2hlZEV4ZWN1dGFibGUuaXNJblN0cmljdENvbnRleHQoKSkKKyAgICAsIG1fbGV4
aWNhbFNjb3BlRmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5sZXhpY2FsU2NvcGVGZWF0dXJlcygp
KQogICAgICwgbV9saW5lQ291bnQoY2FjaGVkRXhlY3V0YWJsZS5saW5lQ291bnQoKSkKICAgICAs
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoY2FjaGVkRXhlY3V0YWJsZS5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKQogICAgICwgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KGNhY2hlZEV4ZWN1dGFi
bGUudW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw3IEBACiAvLyBUaGlzIHN0cnVjdCBoYXMgdG8gYmUgdXBkYXRlZCB3aGVuIGluY3Jl
bWVudGFsbHkgd3JpdGluZyB0byB0aGUgYnl0ZWNvZGUKIC8vIGNhY2hlLCBzaW5jZSB0aGlzIHdp
bGwgb25seSBiZSBmaWxsZWQgaW4gd2hlbiB3ZSBwYXJzZSB0aGUgZnVuY3Rpb24KIHN0cnVjdCBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVNZXRhZGF0YSB7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVy
ZXMgbV9sZXhpY2FsU2NvcGVGZWF0dXJlczsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsK
ICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAyNzUzNzIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw3ICs5MSw2IEBACiAgICAgaWYgKGV4ZWN1dGFibGUpCiAgICAgICAgIGV4ZWN1dGFi
bGUtPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVhdHVy
ZSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgp
LCBlbmRDb2x1bW4pOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVy
ZXMoKSAmIFN0cmljdE1vZGVGZWF0dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6
OnNsb3BweSgpOwogICAgIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyID0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIFByaXZh
dGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmU7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVj
dXRhYmxlVHlwZSwgRGlyZWN0RXZhbEV4ZWN1dGFibGU+KSB7CkBAIC0xMTAsNyArMTA5LDggQEAK
ICAgICBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRWYXJpYWJsZXNVbmRlclREWjsK
ICAgICBpZiAodmFyaWFibGVzVW5kZXJURFopCiAgICAgICAgIHBhcmVudFZhcmlhYmxlc1VuZGVy
VERaID0gVERaRW52aXJvbm1lbnRMaW5rOjpjcmVhdGUodm0ubV9jb21wYWN0VmFyaWFibGVNYXAt
PmdldCgqdmFyaWFibGVzVW5kZXJURFopLCBudWxscHRyKTsKLSAgICBlcnJvciA9IEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHBy
aXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJl
cyBsZXhpY2FsU2NvcGVGZWF0dXJlcyhyb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVG
ZWF0dXJlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgcm9v
dE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGxleGlj
YWxTY29wZUZlYXR1cmVzKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTM3MikKKysrIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMDEgIEFsZXhl
eSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEludHJvZHVjZSBM
ZXhpY2FsU2NvcGVGZWF0dXJlcyB0byBlbmFibGUgZnV0dXJlIGJ5dGVjb2RlIG9wdGltaXphdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDA3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6Om9wZXJhdG9yPSk6CisKIDIw
MjEtMDMtMzEgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bGxvdyBBU0NXZWJLaXRTUElTdXBwb3J0IHRvIGJlIHVzZWQgb24gbWFjT1MKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09wdGlv
blNldC5oCShyZXZpc2lvbiAyNzUzNzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSwxMiBAQAogICAgICAgICByZXR1cm4gZnJvbVJh
dyhsaHMubV9zdG9yYWdlIF4gcmhzLm1fc3RvcmFnZSk7CiAgICAgfQogCisgICAgT3B0aW9uU2V0
JiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uU2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3Rv
cmFnZSA9IG90aGVyLm1fc3RvcmFnZTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBlbnVtIEluaXRpYWxpemF0aW9uVGFnIHsgRnJvbVJhd1ZhbHVlIH07CiAg
ICAgY29uc3RleHByIE9wdGlvblNldChFIGUsIEluaXRpYWxpemF0aW9uVGFnKQo=
</data>
<flag name="commit-queue"
          id="444741"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425040</attachid>
            <date>2021-04-02 12:23:51 -0700</date>
            <delta_ts>2021-06-03 14:57:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224072-patch-2.diff</filename>
            <type>text/plain</type>
            <size>55943</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NTQyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzkyLDYgKzc5Miw3IEBACiAgICAgbGxpbnQvTExJbnRPcGNvZGUuaAogCiAgICAgcGFyc2Vy
L0xleGVyLmgKKyAgICBwYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVyZXMuaAogICAgIHBhcnNlci9Q
YXJzZXJBcmVuYS5oCiAgICAgcGFyc2VyL1BhcnNlckVycm9yLmgKICAgICBwYXJzZXIvUGFyc2Vy
TW9kZXMuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzU0MjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsOTggQEAKKzIwMjEtMDQtMDIgQWxleGV5IFNodmF5a2EgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgTGV4aWNhbFNjb3BlRmVhdHVyZXMgdG8gZW5hYmxlIGZ1
dHVyZSBieXRlY29kZSBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgQnl0ZWNvZGVHZW5lcmF0b3Ig
d2FzIGNhcGFibGUgdG8gcmVhc29uIGFib3V0IHRoZSBwcmVzZW5jZSBvZiBgd2l0aGAKKyAgICAg
ICAgc3RhdGVtZW50LCBkaXJlY3QgYGV2YWxgLCBvciBjZXJ0YWluIHZhcmlhYmxlIG5hbWVzIG9u
bHkgd2l0aGluIHRoZSBjdXJyZW50IGV4ZWN1dGFibGU6CisKKyAgICAgICAgICAgIGBgYAorICAg
ICAgICAgICAgd2l0aCAoZm9vKSB7CisgICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhZCBubyB3YXkgdG8gZGV0ZWN0IFdp
dGhTY29wZSBkdXJpbmcgZ2VuZXJhdGlvbi4KKyAgICAgICAgICAgICAgICB9KSgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYGBgCisKKyAgICAgICAgSWYgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUgd291bGQga25vdyB0aGVyZSBpcyBubyBXaXRoU2NvcGUsIGl0IGNvdWxkIGVtaXQgb3Bf
Y2FsbCB3aXRoCisgICAgICAgIGB0aGlzYCB2YWx1ZSBvZiBgdW5kZWZpbmVkYCBhcyBwZXIgc3Bl
YyBbMV0sIGluc3RlYWQgb2YgcmVzb2x2ZWQgc2NvcGUuIFRoaXMgd291bGQ6CisgICAgICAgICAg
LSBzaW1wbGlmeSBvcF90b190aGlzIG9uIGFsbCB0aWVycyBhbmQgcmVtb3ZlIGl0IGZyb20gdGhl
IG1ldGhvZCB0YWJsZTsKKyAgICAgICAgICAtIHNhdmUgMSBpbnN0cnVjdGlvbiBwZXIgc3RyaWN0
IGZ1bmN0aW9uIGJ5IHJlbW92aW5nIG9wX3RvX3RoaXM7CisgICAgICAgICAgLSByZW1vdmUgb2Yg
fjMwIG9jY3VyZW5jZXMgb2YgdG9UaGlzKCkgY2FsbHMgd2l0aCBFQ01BTW9kZTo6c3RyaWN0KCkg
ZnJvbSBidWlsdC1pbnM7CisgICAgICAgICAgLSBmaXggYnVpbHQtaW4gbWV0aG9kcyAvIGFjY2Vz
c29ycyB0aGF0IHdlcmUgKG9ic2VydmFibHkpIGxhY2tpbmcgaXQ7CisgICAgICAgICAgLSB1bmJs
b2NrIFdlYklETCB8dGhpc3wgdmFsdWUgY2FzdGluZyBmaXggKHNlZSAjMjIzNzU4KS4KKworICAg
ICAgICBJZiBSZXNvbHZlTm9kZSB3b3VsZCBrbm93IHRoYXQgdW5mb3JnZWFibGUgZ2xvYmFsIHBy
b3BlcnRpZXMgYXJlIG5vdCBzaGFkb3dlZCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gYHdpdGhg
IHN0YXRlbWVudCBvciBzbG9wcHkgbW9kZSBkaXJlY3QgYGV2YWxgLCBpdCBjb3VsZCBjb25zdGFu
dC1mb2xkIGB1bmRlZmluZWRgIC8KKyAgICAgICAgYEluZmluaXR5YCAvIGBOYU5gIHZhbHVlcy4g
VGhpcyB3b3VsZCBzYXZlIHVwIHRvIDMgYnl0ZWNvZGUgb3BzIHBlciBlYWNoIHVzYWdlIGFuZCBh
bGxvdworICAgICAgICBlbWl0dGluZyBvcF9pc191bmRlZmluZWRfb3JfbnVsbCBmb3IgYHggPT09
IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsYC4KKyAgICAgICAgVjggcGVyZm9ybXMgdGhpcyBvcHRp
bWl6YXRpb24gWzJdLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgTGV4aWNhbFNj
b3BlRmVhdHVyZXMgdG8gYWxsb3cgcGFzc2luZyBzdWNoIG1ldGFkYXRhIHRocm91Z2gKKyAgICAg
ICAgUGFyc2VyID0+IEZ1bmN0aW9uTWV0YWRhdGFOb2RlID0+IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlID0+IEJ5dGVjb2RlR2VuZXJhdG9yCisgICAgICAgIHdpdGggYSBtaW5pbWFsIGNvZGUg
ZGlmZi4KKworICAgICAgICBFQ01BTW9kZSBpcyBhIGdvb2QgZXhhbXBsZSBvZiBzdWNoIGEgZmVh
dHVyZSBhcyBpdCBwcm9wYWdhdGVzIGxleGljYWxseTogZnJvbSBvdXRlcgorICAgICAgICB0byBp
bm5lciBzY29wZS4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMt
ZXZhbHVhdGVjYWxsIChzdGVwIDIpCisgICAgICAgIFsyXTogaHR0cHM6Ly9tZWRpdW0uY29tL0Bi
bWV1cmVyL3NvbWV0aW1lcy11bmRlZmluZWQtaXMtZGVmaW5lZC03NzAxZTFjOWVmZjgKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0NsYXNzRmllbGRJbml0aWFsaXplckZ1bmN0aW9u
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmxleGljYWxTY29wZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBwYXJz
ZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKToKKyAgICAgICAgKiBwYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVyZXMuaDogQWRk
ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25N
ZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bk1ldGFkYXRhTm9kZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6
U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmxleGljYWxTY29wZUZlYXR1cmVz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFN0cmljdE1vZGUpOgorICAgICAgICAo
SlNDOjpTY29wZTo6c3RyaWN0TW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpmaWxs
UGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6
cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpw
dXNoU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmxleGljYWxTY29wZUZlYXR1cmVzKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZUl0
ZW06OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hl
Y2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkQnl0ZWNvZGU6OmFkZEZ1bmN0aW9uVXBkYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxl
OjpsZXhpY2FsU2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjppc0luU3RyaWN0Q29udGV4dCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29k
ZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwp
OgorCiAyMDIxLTA0LTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dURl0gSW50cm9kdWNlIFJvYmluSG9vZEhhc2hUYWJsZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NTQyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMzLDYgKzEyMzMsNyBAQAogCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyog
SlNQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMTg0RTIxMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAwNTkz
NEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVX
cmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzA4OTRENjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDJDNzZGNTI2MTA3QjI4
MDA1MzJFMzggLyogTGV4aWNhbFNjb3BlRmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MkM3NkY0MjYxMDdCMEUwMDUzMkUzOCAvKiBMZXhp
Y2FsU2NvcGVGZWF0dXJlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg0MzIzRTc4MjVENUVDMTkwMEY5Nzc3NiAvKiBOdWxsR2V0dGVyRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDZG
NTIwMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDMyM0U3OTI1RDVFQzI4MDBG
OTc3NzYgLyogTnVsbFNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUyNUZDNDFBNkREM0IzMDA3QjU0OTUgLyogTnVsbFNldHRl
ckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODQzMjNFN0EyNUQ1RUMzQjAwRjk3Nzc2IC8qIEdldHRlclNldHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMzdCREUwRTFBRjBCODAw
NzY5MThBIC8qIEdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTQ1LDYgKzQxNDYsNyBAQAogCQk3RDVGQjE5MjIwNzQ0QkYy
MDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxQbHVyYWxSdWxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUNoYWluLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQyQzc2RjQyNjEwN0IwRTAwNTMyRTM4
IC8qIExleGljYWxTY29wZUZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExleGljYWxTY29wZUZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg0MzIzRTdCMjVENUVDNjkwMEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQzMjNFN0MyNUQ1RUM2OTAwRjk3Nzc2IC8q
IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NDMyM0U3RDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlckZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMTQsNiArNzExNiw3IEBA
CiAJCQkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdvcmRzLnRhYmxlICovLAogCQkJ
CUY2OTJBODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8sCiAJCQkJRjY5MkE4NjYw
MjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCisJCQkJODQyQzc2RjQyNjEwN0IwRTAwNTMy
RTM4IC8qIExleGljYWxTY29wZUZlYXR1cmVzLmggKi8sCiAJCQkJRTM3OTRFNzMxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKIAkJCQlFMzc5NEU3NDFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKIAkJCQkwMDBCRUFGMERGNjA0NDgxQUY2QUI2
OEMgLyogTW9kdWxlU2NvcGVEYXRhLmggKi8sCkBAIC0xMDI1MCw2ICsxMDI1Myw3IEBACiAJCQkJ
MTQwOUVDQkYyMjVFMTc3NDAwQkVERDU0IC8qIExlYWZFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg0MkM3NkY1MjYxMDdCMjgwMDUzMkUzOCAvKiBMZXhpY2FsU2NvcGVGZWF0dXJl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IzQzMxMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNjM3RUU5MjM2RTU2QjAwMDk2QkQwQSAvKiBM
aW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2
MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAko
cmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQAogCiAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUgbWV0YWRhdGEoCiAgICAgICAgIHN0YXJ0LCBlbmQsIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIHNvdXJjZS5zdGFydE9mZnNldCgpICsgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIHNvdXJjZS5zdGFydE9mZnNldCgpICsgZnVuY3Rpb25OYW1lU3RhcnQsIHNvdXJj
ZS5zdGFydE9mZnNldCgpICsgcGFyYW1ldGVyc1N0YXJ0LAotICAgICAgICBpc0luU3RyaWN0Q29u
dGV4dCwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwKKyAgICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXM6OndpdGhTdHJpY3RNb2RlKGlzSW5TdHJp
Y3RDb250ZXh0KSwgY29uc3RydWN0b3JLaW5kLCBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwKICAgICAgICAgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgbWV0YWRhdGEuZmluaXNoUGFyc2luZyhuZXdTb3Vy
Y2UsIElkZW50aWZpZXIoKSwgRnVuY3Rpb25Nb2RlOjpGdW5jdGlvbkV4cHJlc3Npb24pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyNzU0MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw3IEBACiAKICAgICBhdXRvIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzID0gZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKTsKICAgICBQ
cml2YXRlTmFtZUVudmlyb25tZW50IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVj
dXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KCk7Ci0gICAgRUNNQU1vZGUgZWNt
YU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmlj
dCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwgc291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICZwYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50LCBlY21hTW9kZSk7CisgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUodm0sIGZ1bmN0aW9uLmdldCgpLCBzb3VyY2UsIHJlc3VsdCwgY29kZUdlbmVyYXRpb25Nb2Rl
LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgJnBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQs
IGV4ZWN1dGFibGUtPmxleGljYWxTY29wZUZlYXR1cmVzKCkpOwogCiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04Niw3ICs4NSw3IEBACiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IE9wdGlvbmFsPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJv
bm1lbnQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0
Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fZmly
c3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgpIC0gcGFyZW50U291cmNlLmZpcnN0TGluZSgp
Lm9uZUJhc2VkSW50KCkpCi0gICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJp
Y3RDb250ZXh0KCkpCisgICAgLCBtX2xleGljYWxTY29wZUZlYXR1cmVzKG5vZGUtPmxleGljYWxT
Y29wZUZlYXR1cmVzKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0TGluZSgpIC0gbm9k
ZS0+Zmlyc3RMaW5lKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAg
ICwgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KG5vZGUtPmZ1bmN0aW9uTmFtZVN0YXJ0KCkg
LSBwYXJlbnRTb3VyY2Uuc3RhcnRPZmZzZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiAyNzU0MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsOCBA
QAogICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fY2xhc3NTb3VyY2UgPSBzb3VyY2U7CiAgICAg
fQogCi0gICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0
cmljdENvbnRleHQ7IH0KKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0
dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7IH0KKyAgICBib29s
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJl
cy5zdHJpY3RNb2RlKCk7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJp
bmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5k
aW5nPihtX3N1cGVyQmluZGluZyk7IH0KQEAgLTI1NCw3ICsyNTUsNyBAQAogICAgIH0KIAogICAg
IHVuc2lnbmVkIG1fZmlyc3RMaW5lT2Zmc2V0IDogMzE7Ci0gICAgdW5zaWduZWQgbV9pc0luU3Ry
aWN0Q29udGV4dCA6IDE7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhpY2FsU2NvcGVG
ZWF0dXJlczsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudCA6IDMxOwogICAgIHVuc2lnbmVkIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fdW5saW5rZWRGdW5jdGlv
bk5hbWVTdGFydCA6IDMxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3NTQyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICByZXR1cm4gUGFyc2Vy
RXJyb3IoUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4m
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kiwg
RUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIExleGljYWxTY29wZUZlYXR1
cmVzIGxleGljYWxTY29wZUZlYXR1cmVzKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1h
a2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkK
ICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1f
c2NvcGVOb2RlKHByb2dyYW1Ob2RlKQpAQCAtMzAzLDcgKzMwMyw4IEBACiAgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKICAgICAs
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJy
b3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQotICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVh
dHVyZXMpCisgICAgLCBtX2VjbWFNb2RlKGxleGljYWxTY29wZUZlYXR1cmVzLmVjbWFNb2RlKCkp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNj
b3BlVERaVmFyaWFibGVzKTsKIApAQCAtMzM3LDcgKzMzOCw3IEBACiAgICAgfQogfQogCi1CeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCitCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29k
ZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUs
IGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgOiBC
eXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
cj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdl
bmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUoZnVuY3Rpb25Ob2RlKQpAQCAtMzQ3LDcg
KzM0OCw3IEBACiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5p
c0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmdW5jdGlvbk5v
ZGUtPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX3VzZXNOb25T
dHJpY3RFdmFsKGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSAmJiAhbGV4aWNhbFNjb3BlRmVhdHVy
ZXMuc3RyaWN0TW9kZSgpKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBoYXZl
IHRhaWwgY2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBwcm9maWxlcgogICAgIC8vIGVuYWJsZWQu
IFRoaXMgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRoZSBwcm9maWxlciBleHBl
Y3RzCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFpcnMgYmVmb3JlIGFuZCBh
ZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTM1NSwxMSArMzU2LDEzIEBACiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAg
ICAgLy8gTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFr
ZWQgY29uc3RydWN0b3JzIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAi
cmV0dXJuIi4KLSAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkg
JiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUgJiYgZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24o
T3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgbGV4aWNhbFNjb3BlRmVhdHVyZXMu
c3RyaWN0TW9kZSgpKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQo
ZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc0V2
YWwoKSkKLSAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgLCBtX2xleGljYWxTY29wZUZl
YXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQorICAgICwgbV9lY21hTW9kZShsZXhpY2FsU2Nv
cGVGZWF0dXJlcy5lY21hTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJs
b2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKKyAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1f
bGV4aWNhbFNjb3BlRmVhdHVyZXMuZWNtYU1vZGUoKTsKICAgICBwdXNoUHJpdmF0ZUFjY2Vzc05h
bWVzKHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwogCiAgICAgU3ltYm9sVGFibGUqIGZ1
bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtODQ1LDcg
Kzg0OCw3IEBACiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRp
bWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRy
LCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVu
bGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRUNNQU1vZGUgZWNtYU1vZGUpCitCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExp
bms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCogcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4
aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1
ZTxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwg
bV9jb2RlR2VuZXJhdGlvbk1vZGUoY29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5v
ZGUoZXZhbE5vZGUpCkBAIC04NTUsMTAgKzg1OCwxMSBAQAogICAgICwgbV91c2VzRXhjZXB0aW9u
cyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCiAgICAgLCBtX2lzQnVp
bHRpbkZ1bmN0aW9uKGZhbHNlKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChldmFsTm9kZS0+
dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoZXZhbE5vZGUtPnVzZXNFdmFsKCkgJiYgIWxleGljYWxTY29wZUZlYXR1cmVzLnN0cmlj
dE1vZGUoKSkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX25lZWRzVG9V
cGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKLSAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAg
LCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQorICAgICwgbV9l
Y21hTW9kZShsZXhpY2FsU2NvcGVGZWF0dXJlcy5lY21hTW9kZSgpKQogICAgICwgbV9kZXJpdmVk
Q29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAgICBtX2Nv
ZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKQEAgLTkxMCw3ICs5MTQsNyBAQAogICAgIHB1
c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6
ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6
ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2RlLCBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVH
ZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJv
bm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52
aXJvbm1lbnQqLCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kZSwg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmly
b25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVu
dmlyb25tZW50KiwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAg
ICAgOiBCeXRlY29kZUdlbmVyYXRvckJhc2UobWFrZVVuaXF1ZTxVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvcj4odm0sIGNvZGVCbG9jayksIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKQogICAgICwgbV9jb2RlR2VuZXJhdGlvbk1vZGUo
Y29kZUdlbmVyYXRpb25Nb2RlKQogICAgICwgbV9zY29wZU5vZGUobW9kdWxlUHJvZ3JhbU5vZGUp
CkBAIC05MjMsNyArOTI3LDggQEAKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCiAg
ICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwg
bW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFNb2Rl
KQorICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhsZXhpY2FsU2NvcGVGZWF0dXJlcykKKyAg
ICAsIG1fZWNtYU1vZGUobGV4aWNhbFNjb3BlRmVhdHVyZXMuZWNtYU1vZGUoKSkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMpOwogCkBAIC0zMjYyLDggKzMyNjcsNyBAQAogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAgICAg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OwogCi0gICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1
ZTsKLSAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rv
a2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0
cmljdEluQ2xhc3MsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJz
ZU1vZGUsIGZhbHNlKTsKKyAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJB
cmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAs
IDAsIExleGljYWxTY29wZUZlYXR1cmVzOjp3aXRoU3RyaWN0TW9kZSh0cnVlKSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNlTW9kZSwgZmFsc2UpOwogICAgIG1l
dGFkYXRhLmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNvdXJjZSgpLCBJZGVudGlmaWVyKCks
IEZ1bmN0aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7CiAgICAgYXV0byBpbml0aWFsaXplciA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNv
dXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlw
dE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiksIFdURk1vdmUocGFyZW50UHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7CiAgICAgaW5p
dGlhbGl6ZXItPnNldENsYXNzRmllbGRMb2NhdGlvbnMoV1RGTW92ZShjbGFzc0ZpZWxkTG9jYXRp
b25zKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzU0MjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwOCwxMCArNDA4LDEwIEBACiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERl
Y2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52
aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBFQ01BTW9kZSk7
Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBS
ZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSk7Ci0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRXZhbE5vZGUqLCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29u
c3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25t
ZW50KiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVBy
b2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENv
ZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29u
c3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKKyAgICAgICAgQnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mLCBQcm9ncmFtTm9kZSosIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayosIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRM
aW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqLCBMZXhpY2FsU2NvcGVGZWF0dXJl
cyk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rpb25Ob2RlKiwgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBjb25z
dCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgRXZhbE5vZGUqLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiwgTGV4aWNhbFNjb3BlRmVhdHVyZXMpOworICAgICAgICBCeXRl
Y29kZUdlbmVyYXRvcihWTSYsIE1vZHVsZVByb2dyYW1Ob2RlKiwgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0
cjxURFpFbnZpcm9ubWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIExl
eGljYWxTY29wZUZlYXR1cmVzKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3IoKTsKICAg
ICAgICAgCkBAIC00MzIsNyArNDMyLDcgQEAKICAgICAgICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgotICAgICAgICBzdGF0
aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVm
UHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBl
Y21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRlKFZNJiB2bSwgTm9k
ZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2Vu
ZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCogcHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIE1vbm90b25pY1RpbWUgYmVmb3JlOwogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKQpAQCAt
NDM5LDcgKzQzOSw3IEBACiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9y
Pih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50
U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGxleGljYWxT
Y29wZUZlYXR1cmVzKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0
b3ItPmdlbmVyYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBv
cnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkgewpAQCAtMTA2Nyw2ICsxMDY3LDcgQEAKICAgICAg
ICAgYm9vbCBzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVHZW5lcmF0aW9uTW9kZS5jb250YWlucyhDb2RlR2VuZXJhdGlvbk1vZGU6OlR5cGVQcm9maWxl
cik7IH0KICAgICAgICAgYm9vbCBzaG91bGRFbWl0Q29udHJvbEZsb3dQcm9maWxlckhvb2tzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlR2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRp
b25Nb2RlOjpDb250cm9sRmxvd1Byb2ZpbGVyKTsgfQogICAgICAgICAKKyAgICAgICAgTGV4aWNh
bFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2xl
eGljYWxTY29wZUZlYXR1cmVzOyB9CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9lY21hTW9kZTsgfQogICAgICAgICB2b2lkIHNldFVzZXNDaGVja3BvaW50cygp
IHsgbV9jb2RlQmxvY2stPnNldEhhc0NoZWNrcG9pbnRzKCk7IH0KIApAQCAtMTM2Myw2ICsxMzY0
LDcgQEAKICAgICAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsIHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRz
VG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgICAgIExleGljYWxTY29wZUZl
YXR1cmVzIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIEVDTUFNb2RlIG1fZWNtYU1v
ZGU7CiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZSB7IERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQAogICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAog
ICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAotICAgICAgICBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCAKKyAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsCiAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LAogICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKQEAgLTQ2NCw3
ICs0NjQsNyBAQAogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1l
dGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVu
ZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAg
ICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsCisg
ICAgICAgICAgICBsZXhpY2FsU2NvcGVGZWF0dXJlcywgY29uc3RydWN0b3JLaW5kLCBzdXBlckJp
bmRpbmcsCiAgICAgICAgICAgICBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhpY2FsU2NvcGVGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4aWNhbFNjb3BlRmVhdHVyZXMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGljYWxTY29wZUZlYXR1cmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBbGV4
ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkVDTUFNb2RlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBMZXhpY2FsU2NvcGVGZWF0dXJlc0VudW0g
OiB1aW50OF90IHsKKyAgICBOb0ZlYXR1cmVzID0gMCwKKyAgICBTdHJpY3RNb2RlID0gMSA8PCAx
LAorfTsKKworY2xhc3MgTGV4aWNhbFNjb3BlRmVhdHVyZXMgZmluYWwgOiBwdWJsaWMgT3B0aW9u
U2V0PExleGljYWxTY29wZUZlYXR1cmVzRW51bT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBPcHRpb25TZXQ8TGV4aWNhbFNjb3BlRmVhdHVyZXNFbnVtPjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIExleGljYWxTY29wZUZlYXR1cmVzRW51bSBTdHJpY3RNb2RlID0gTGV4aWNhbFNjb3BlRmVh
dHVyZXNFbnVtOjpTdHJpY3RNb2RlOworCisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMoKSA9IGRl
ZmF1bHQ7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMoTGV4aWNhbFNjb3BlRmVhdHVyZXNFbnVt
IGZlYXR1cmVzKQorICAgICAgICA6IEJhc2UoZmVhdHVyZXMpCisgICAgeworICAgIH0KKworICAg
IHN0YXRpYyBMZXhpY2FsU2NvcGVGZWF0dXJlcyBmcm9tUmF3KHVpbnQ4X3QgYml0cykKKyAgICB7
CisgICAgICAgIHJldHVybiBMZXhpY2FsU2NvcGVGZWF0dXJlcyhzdGF0aWNfY2FzdDxMZXhpY2Fs
U2NvcGVGZWF0dXJlc0VudW0+KGJpdHMpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTGV4aWNhbFNj
b3BlRmVhdHVyZXMgd2l0aFN0cmljdE1vZGUoYm9vbCBzdHJpY3RNb2RlKQorICAgIHsKKyAgICAg
ICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgZmVhdHVyZXM7CisgICAgICAgIGZlYXR1cmVzLnNldChT
dHJpY3RNb2RlLCBzdHJpY3RNb2RlKTsKKyAgICAgICAgcmV0dXJuIGZlYXR1cmVzOworICAgIH0K
KworICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gY29udGFpbnMoU3RyaWN0
TW9kZSkgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7IH0KKyAgICBi
b29sIHN0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBjb250YWlucyhTdHJpY3RNb2RlKTsgfQor
ICAgIHZvaWQgc2V0U3RyaWN0TW9kZShib29sIHN0cmljdE1vZGUpIHsgc2V0KFN0cmljdE1vZGUs
IHN0cmljdE1vZGUpOyB9IAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwx
MCArMTk1LDEwIEBACiBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUo
CiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCAKKyAgICBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlv
bk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4
aWNhbFNjb3BlRmVhdHVyZXMsCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
U3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJj
ZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAg
ICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCi0gICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChp
c0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGxleGlj
YWxTY29wZUZlYXR1cmVzKQogICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObykpCkBAIC0yMjAsMTAgKzIyMCwxMCBAQAogRnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCi0gICAgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2FsU2NvcGVG
ZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCi0gICAgICAgICwgbV9pc0luU3Ry
aWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX2xleGljYWxTY29wZUZl
YXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQogICAgICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAs
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCkBAIC0yNTgsNyArMjU4LDcgQEAKIGJvb2wgRnVu
Y3Rpb25NZXRhZGF0YU5vZGU6Om9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUm
IG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlTW9kZSA9PSBvdGhlci5tX3BhcnNl
TW9kZQotICAgICAgICAmJiBtX2lzSW5TdHJpY3RDb250ZXh0ID09IG90aGVyLm1faXNJblN0cmlj
dENvbnRleHQKKyAgICAgICAgJiYgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA9PSBvdGhlci5tX2xl
eGljYWxTY29wZUZlYXR1cmVzCiAgICAgICAgICYmIG1fc3VwZXJCaW5kaW5nID09IG90aGVyLm1f
c3VwZXJCaW5kaW5nCiAgICAgICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29u
c3RydWN0b3JLaW5kCiAgICAgICAgICYmIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
PT0gb3RoZXIubV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbgpAQCAtMjgxLDcgKzI4MSw3
IEBACiB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0p
IGNvbnN0CiB7CiAgICAgc3RyZWFtLnByaW50bG4oIm1fcGFyc2VNb2RlICIsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOwotICAgIHN0cmVhbS5wcmludGxuKCJtX2lzSW5TdHJp
Y3RDb250ZXh0ICIsIG1faXNJblN0cmljdENvbnRleHQpOworICAgIHN0cmVhbS5wcmludGxuKCJt
X2xleGljYWxTY29wZUZlYXR1cmVzICIsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMudG9SYXcoKSk7
CiAgICAgc3RyZWFtLnByaW50bG4oIm1fc3VwZXJCaW5kaW5nICIsIG1fc3VwZXJCaW5kaW5nKTsK
ICAgICBzdHJlYW0ucHJpbnRsbigibV9jb25zdHJ1Y3RvcktpbmQgIiwgbV9jb25zdHJ1Y3Rvcktp
bmQpOwogICAgIHN0cmVhbS5wcmludGxuKCJtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
ICIsIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU1LDEzICsyMTU1LDEz
IEBACiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAotICAgICAgICAgICAgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAK
KyAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwg
TGV4aWNhbFNjb3BlRmVhdHVyZXMsIAogICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LAogICAgICAgICAgICAgU291cmNlUGFy
c2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IAotICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgTGV4aWNhbFNjb3BlRmVhdHVyZXMsIAogICAgICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNv
dW50LAogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKTsKIApAQCAtMjE5NCw3ICsyMTk0LDcgQEAKICAgICAgICAgdm9pZCBzZXRD
bGFzc1NvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9jbGFzc1NvdXJjZSA9IHNv
dXJjZTsgfQogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9zdGFydFN0YXJ0T2Zmc2V0OyB9Ci0gICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgICAgIExleGljYWxTY29w
ZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2Fs
U2NvcGVGZWF0dXJlczsgfQogICAgICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CiAgICAgICAgIGJvb2wgaXND
b25zdHJ1Y3RvckFuZE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjsgfQpAQCAtMjIyMCw3ICsyMjIwLDcgQEAKICAg
ICAgICAgfQogCiAgICAgcHVibGljOgotICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKKyAgICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhpY2FsU2NvcGVGZWF0
dXJlczsKICAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNp
Z25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzMsNyArNTMzLDcgQEAKICAgICAg
ICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5jdGlvbkNvbnRl
eHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9yIik7CiAgICAg
ICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZh
cmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0
b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3Vw
ZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlLCBmYWxzZSk7CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRv
a2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBsZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxp
bmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKQEAgLTU4
NCw3ICs1ODQsNyBAQAogICAgICAgICB9CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25C
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgc291cmNlUGFyc2VNb2RlKCksIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGxl
eGljYWxTY29wZUZlYXR1cmVzKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRp
bmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAg
ICBpbmZvLmVuZE9mZnNldCA9IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID8gdG9rZW5M
b2NhdGlvbigpLmVuZE9mZnNldCA6IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKQEAgLTYzNSw3ICs2
MzUsNyBAQAogICAgICAgICB9CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25Cb2R5U2Nv
cGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAgICBpbmZv
LmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9r
ZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3Vu
dCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgaW5mby5i
b2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBsZXhpY2FsU2NvcGVGZWF0
dXJlcygpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFt
ZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAog
ICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGluZm8uZW5kT2Zmc2V0ID0gaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPyB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IDog
bV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtMjE3MCw3ICsyMTcwLDcgQEAKICAgICAgICAgaWYg
KG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0
b2tlbkNvbHVtbigpOwogICAgICAgICAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5k
aW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2lu
ZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5k
LCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgp
LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGxleGljYWxTY29wZUZlYXR1cmVzKCksIGNvbnN0
cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQ
YXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0yMTg5LDcgKzIxODksNyBAQAogICAgIH0KICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFN1cGVyQmluZGluZyBmdW5jdGlvblN1cGVyQmluZGlu
ZyA9IGFkanVzdFN1cGVyQmluZGluZ0ZvckJhc2VDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQs
IHN1cGVyQmluZGluZywgY3VycmVudFNjb3BlKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENv
bHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9u
U3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgc291cmNlUGFyc2VNb2RlKCksIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIGxleGljYWxTY29wZUZlYXR1cmVzKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5n
QXJ0aWNsZUZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTI0MDQsOCAr
MjQwNCw5IEBACiAKICAgICAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFs
cmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8g
dGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCiAgICAgICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hl
ID8gZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhwYXJhbWV0ZXJzU3RhcnQpIDogbnVsbHB0cikgewor
ICAgICAgICAgICAgYXV0byBsZXhpY2FsU2NvcGVGZWF0dXJlcyA9IExleGljYWxTY29wZUZlYXR1
cmVzOjpmcm9tUmF3KGNhY2hlZEluZm8tPmxleGljYWxTY29wZUZlYXR1cmVzKTsKICAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24g
aW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KLSAgICAgICAgICAgIEFTU0VSVCghc3Ry
aWN0TW9kZSgpIHx8IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOworICAgICAgICAgICAgQVNTRVJU
KCFzdHJpY3RNb2RlKCkgfHwgbGV4aWNhbFNjb3BlRmVhdHVyZXMuc3RyaWN0TW9kZSgpKTsKICAg
ICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmRMb2NhdGlvbjsKIAogICAgICAgICAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCA9IHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2lu
ZD4oY2FjaGVkSW5mby0+Y29uc3RydWN0b3JLaW5kKTsKQEAgLTI0MzMsNyArMjQzNCw3IEBACiAg
ICAgICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSgKICAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgICAg
ICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJC
aW5kaW5nLAorICAgICAgICAgICAgICAgIGxleGljYWxTY29wZUZlYXR1cmVzLCBjb25zdHJ1Y3Rv
cktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nLAogICAgICAgICAgICAgICAgIGNhY2hlZEluZm8t
PnBhcmFtZXRlckNvdW50LAogICAgICAgICAgICAgICAgIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUg
PT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgICAgIGZ1bmN0aW9uSW5m
by5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcg
KzE0Niw3IEBACiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGUpOwogCiBwdWJsaWM6Ci0g
ICAgU2NvcGUoY29uc3QgVk0mIHZtLCBib29sIGlzRnVuY3Rpb24sIGJvb2wgaXNHZW5lcmF0b3Is
IGJvb2wgc3RyaWN0TW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBc3luY0Z1bmN0
aW9uKQorICAgIFNjb3BlKGNvbnN0IFZNJiB2bSwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNh
bFNjb3BlRmVhdHVyZXMsIGJvb2wgaXNGdW5jdGlvbiwgYm9vbCBpc0dlbmVyYXRvciwgYm9vbCBp
c0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBc3luY0Z1bmN0aW9uKQogICAgICAgICA6IG1fdm0odm0p
CiAgICAgICAgICwgbV9zaGFkb3dzQXJndW1lbnRzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc0V2
YWwoZmFsc2UpCkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5k
aW5nKGZhbHNlKQogICAgICAgICAsIG1fYWxsb3dzVmFyRGVjbGFyYXRpb25zKHRydWUpCiAgICAg
ICAgICwgbV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKHRydWUpCi0gICAgICAgICwgbV9zdHJp
Y3RNb2RlKHN0cmljdE1vZGUpCisgICAgICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhsZXhp
Y2FsU2NvcGVGZWF0dXJlcykKICAgICAgICAgLCBtX2lzRnVuY3Rpb24oaXNGdW5jdGlvbikKICAg
ICAgICAgLCBtX2lzR2VuZXJhdG9yKGlzR2VuZXJhdG9yKQogICAgICAgICAsIG1faXNHZW5lcmF0
b3JCb3VuZGFyeShmYWxzZSkKQEAgLTc1NSw4ICs3NTUsOSBAQAogICAgICAgICAgICAgY2FwdHVy
ZWRWYXJpYWJsZXMuYWRkKGltcGwpOwogICAgICAgICB9CiAgICAgfQotICAgIHZvaWQgc2V0U3Ry
aWN0TW9kZSgpIHsgbV9zdHJpY3RNb2RlID0gdHJ1ZTsgfQotICAgIGJvb2wgc3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0TW9kZTsgfQorICAgIExleGljYWxTY29wZUZlYXR1cmVz
IGxleGljYWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0
dXJlczsgfQorICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgbV9sZXhpY2FsU2NvcGVGZWF0dXJl
cy5zZXRTdHJpY3RNb2RlKHRydWUpOyB9CisgICAgYm9vbCBzdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJlcy5zdHJpY3RNb2RlKCk7IH0KICAgICBib29sIGlz
VmFsaWRTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgc2hhZG93c0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0FyZ3Vt
ZW50czsgfQogICAgIHZvaWQgc2V0SGFzTm9uU2ltcGxlUGFyYW1ldGVyTGlzdCgpCkBAIC03Nzks
NyArNzgwLDcgQEAKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzRnVuY3Rpb24pOwogICAgICAg
ICBwYXJhbWV0ZXJzLnVzZXNFdmFsID0gbV91c2VzRXZhbDsKLSAgICAgICAgcGFyYW1ldGVycy5z
dHJpY3RNb2RlID0gbV9zdHJpY3RNb2RlOworICAgICAgICBwYXJhbWV0ZXJzLmxleGljYWxTY29w
ZUZlYXR1cmVzID0gbV9sZXhpY2FsU2NvcGVGZWF0dXJlczsKICAgICAgICAgcGFyYW1ldGVycy5u
ZWVkc0Z1bGxBY3RpdmF0aW9uID0gbV9uZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgICAgICBwYXJh
bWV0ZXJzLmlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzID0gbV9pbm5lckFycm93RnVuY3Rpb25G
ZWF0dXJlczsKICAgICAgICAgcGFyYW1ldGVycy5uZWVkc1N1cGVyQmluZGluZyA9IG1fbmVlZHNT
dXBlckJpbmRpbmc7CkBAIC04MDMsNyArODA0LDcgQEAKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2lzRnVuY3Rpb24pOwogICAgICAgICBtX3VzZXNFdmFsID0gaW5mby0+dXNlc0V2YWw7Ci0gICAg
ICAgIG1fc3RyaWN0TW9kZSA9IGluZm8tPnN0cmljdE1vZGU7CisgICAgICAgIG1fbGV4aWNhbFNj
b3BlRmVhdHVyZXMgPSBMZXhpY2FsU2NvcGVGZWF0dXJlczo6ZnJvbVJhdyhpbmZvLT5sZXhpY2Fs
U2NvcGVGZWF0dXJlcyk7CiAgICAgICAgIG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMgPSBp
bmZvLT5pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlczsKICAgICAgICAgbV9uZWVkc0Z1bGxBY3Rp
dmF0aW9uID0gaW5mby0+bmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICAgICAgbV9uZWVkc1N1cGVy
QmluZGluZyA9IGluZm8tPm5lZWRzU3VwZXJCaW5kaW5nOwpAQCAtOTAzLDcgKzkwNCw3IEBACiAg
ICAgYm9vbCBtX25lZWRzU3VwZXJCaW5kaW5nOwogICAgIGJvb2wgbV9hbGxvd3NWYXJEZWNsYXJh
dGlvbnM7CiAgICAgYm9vbCBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnM7Ci0gICAgYm9vbCBt
X3N0cmljdE1vZGU7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhpY2FsU2NvcGVGZWF0
dXJlczsKICAgICBib29sIG1faXNGdW5jdGlvbjsKICAgICBib29sIG1faXNHZW5lcmF0b3I7CiAg
ICAgYm9vbCBtX2lzR2VuZXJhdG9yQm91bmRhcnk7CkBAIC0xMzI0LDE5ICsxMzI1LDE5IEBACiAK
ICAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQogICAgIHsKKyAgICAgICAgTGV4aWNhbFNjb3BlRmVh
dHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbiA9IGZh
bHNlOwotICAgICAgICBib29sIGlzU3RyaWN0ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaXNHZW5l
cmF0b3IgPSBmYWxzZTsKICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKICAg
ICAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKCFtX3Njb3Bl
U3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpc1N0cmljdCA9IG1fc2NvcGVTdGFjay5s
YXN0KCkuc3RyaWN0TW9kZSgpOworICAgICAgICAgICAgbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBt
X3Njb3BlU3RhY2subGFzdCgpLmxleGljYWxTY29wZUZlYXR1cmVzKCk7CiAgICAgICAgICAgICBp
c0Z1bmN0aW9uID0gbV9zY29wZVN0YWNrLmxhc3QoKS5pc0Z1bmN0aW9uKCk7CiAgICAgICAgICAg
ICBpc0dlbmVyYXRvciA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNHZW5lcmF0b3IoKTsKICAgICAg
ICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNBcnJvd0Z1bmN0
aW9uKCk7CiAgICAgICAgICAgICBpc0FzeW5jRnVuY3Rpb24gPSBtX3Njb3BlU3RhY2subGFzdCgp
LmlzQXN5bmNGdW5jdGlvbigpOwogICAgICAgICB9Ci0gICAgICAgIG1fc2NvcGVTdGFjay5jb25z
dHJ1Y3RBbmRBcHBlbmQobV92bSwgaXNGdW5jdGlvbiwgaXNHZW5lcmF0b3IsIGlzU3RyaWN0LCBp
c0Fycm93RnVuY3Rpb24sIGlzQXN5bmNGdW5jdGlvbik7CisgICAgICAgIG1fc2NvcGVTdGFjay5j
b25zdHJ1Y3RBbmRBcHBlbmQobV92bSwgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGlzRnVuY3Rpb24s
IGlzR2VuZXJhdG9yLCBpc0Fycm93RnVuY3Rpb24sIGlzQXN5bmNGdW5jdGlvbik7CiAgICAgICAg
IHJldHVybiBjdXJyZW50U2NvcGUoKTsKICAgICB9CiAKQEAgLTE2NzAsNiArMTY3MSw3IEBACiAg
ICAgdm9pZCBlbmRMb29wKCkgeyBjdXJyZW50U2NvcGUoKS0+ZW5kTG9vcCgpOyB9CiAgICAgdm9p
ZCBzdGFydFN3aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0U3dpdGNoKCk7IH0KICAgICB2
b2lkIGVuZFN3aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CisgICAgTGV4
aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSB7IHJldHVybiBjdXJyZW50
U2NvcGUoKS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKTsgfQogICAgIHZvaWQgc2V0U3RyaWN0TW9k
ZSgpIHsgY3VycmVudFNjb3BlKCktPnNldFN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgc3RyaWN0
TW9kZSgpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7IH0KICAgICBib29s
IGlzVmFsaWRTdHJpY3RNb2RlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgJKHJldmlzaW9uIDI3NTQyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkNvbnN0cnVjdEFiaWxpdHkuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RvcktpbmQu
aCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTGV4aWNhbFNjb3BlRmVhdHVy
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJKHJldmlzaW9uIDI3
NTQyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICBib29sIHVz
ZXNFdmFsOwotICAgIGJvb2wgc3RyaWN0TW9kZTsKKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBs
ZXhpY2FsU2NvcGVGZWF0dXJlczsKICAgICBib29sIG5lZWRzU3VwZXJCaW5kaW5nOwogICAgIElu
bmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25GZWF0dXJlczsK
ICAgICBWZWN0b3I8VW5pcXVlZFN0cmluZ0ltcGwqLCA4PiB1c2VkVmFyaWFibGVzOwpAQCAtODIs
NyArODIsNyBAQAogICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0IDogMzE7CiAgICAgYm9v
bCB1c2VzRXZhbCA6IDE7CiAgICAgdW5zaWduZWQgbGFzdFRva2VuTGluZSA6IDMxOwotICAgIGJv
b2wgc3RyaWN0TW9kZSA6IDE7CisgICAgdW5zaWduZWQgbGV4aWNhbFNjb3BlRmVhdHVyZXMgOiA2
OwogICAgIHVuc2lnbmVkIGxhc3RUb2tlblN0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQg
ZXhwZWN0ZWRTdXBlckJpbmRpbmcgOiAxOyAvLyBTdXBlckJpbmRpbmcKICAgICB1bnNpZ25lZCBs
YXN0VG9rZW5FbmRPZmZzZXQ6IDMxOwpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgLCBlbmRGdW5j
dGlvbk9mZnNldChwYXJhbWV0ZXJzLmVuZEZ1bmN0aW9uT2Zmc2V0KQogICAgICwgdXNlc0V2YWwo
cGFyYW1ldGVycy51c2VzRXZhbCkKICAgICAsIGxhc3RUb2tlbkxpbmUocGFyYW1ldGVycy5sYXN0
VG9rZW5MaW5lKQotICAgICwgc3RyaWN0TW9kZShwYXJhbWV0ZXJzLnN0cmljdE1vZGUpCisgICAg
LCBsZXhpY2FsU2NvcGVGZWF0dXJlcyhwYXJhbWV0ZXJzLmxleGljYWxTY29wZUZlYXR1cmVzLnRv
UmF3KCkpCiAgICAgLCBsYXN0VG9rZW5TdGFydE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2tlblN0
YXJ0T2Zmc2V0KQogICAgICwgZXhwZWN0ZWRTdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBhcmFtZXRlcnMuZXhwZWN0ZWRTdXBlckJpbmRpbmcpKQogICAgICwgbGFzdFRva2VuRW5k
T2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRva2VuRW5kT2Zmc2V0KQpAQCAtMTM5LDYgKzEzOSw3IEBA
CiAgICAgQVNTRVJUKGlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwYXJhbWV0ZXJzLmlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKSk7CiAgICAgQVNT
RVJUKGNvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGFyYW1ldGVycy5j
b25zdHJ1Y3RvcktpbmQpKTsKICAgICBBU1NFUlQoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBhcmFtZXRlcnMuZXhwZWN0ZWRTdXBlckJpbmRpbmcpKTsKKyAg
ICBBU1NFUlQobGV4aWNhbFNjb3BlRmVhdHVyZXMgPT0gcGFyYW1ldGVycy5sZXhpY2FsU2NvcGVG
ZWF0dXJlcy50b1JhdygpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZhcmlh
Ymxlc0NvdW50OyArK2kpIHsKICAgICAgICAgYXV0byogcG9pbnRlciA9IHBhcmFtZXRlcnMudXNl
ZFZhcmlhYmxlc1tpXTsKICAgICAgICAgcG9pbnRlci0+cmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMjc1NDI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQAogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88
U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVHZW5lcmF0b3JGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgY29uc3QgSWRlbnRpZmll
ciYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFz
eW5jRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGlu
dCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgSW5u
ZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzID0gTm9Jbm5lckFycm93RnVuY3Rpb25GZWF0dXJl
cykgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9u
TWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBpbnQsIGludCwgaW50LCBMZXhpY2FsU2NvcGVGZWF0dXJlcywg
Q29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU1ldGhvZERlZmluaXRpb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyBy
ZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQs
IGludCkgeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRl
Y29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkQnl0ZWNvZGUuY3BwCShyZXZpc2lvbiAyNzU0MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAKICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gaXQtPnZhbHVlLmJhc2UoKTsKICAgICBBU1NF
UlQob2Zmc2V0KTsKICAgICBjb3B5TGVhZkV4ZWN1dGFibGVzKGJ5dGVjb2RlLmdldCgpKTsKLSAg
ICBtX3VwZGF0ZXMuYXBwZW5kKENhY2hlVXBkYXRlOjpGdW5jdGlvblVwZGF0ZSB7IG9mZnNldCwg
a2luZCwgeyBleGVjdXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpIH0sIFdURk1vdmUoYnl0ZWNvZGUtPm1fcGF5bG9hZCkgfSk7CisgICAgbV91cGRh
dGVzLmFwcGVuZChDYWNoZVVwZGF0ZTo6RnVuY3Rpb25VcGRhdGUgeyBvZmZzZXQsIGtpbmQsIHsg
ZXhlY3V0YWJsZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+ZmVhdHVyZXMo
KSwgZXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSB9LCBXVEZNb3ZlKGJ5dGVjb2Rl
LT5tX3BheWxvYWQpIH0pOwogfQogCiB2b2lkIENhY2hlZEJ5dGVjb2RlOjpjb3B5TGVhZkV4ZWN1
dGFibGVzKGNvbnN0IENhY2hlZEJ5dGVjb2RlJiBieXRlY29kZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHJldmlzaW9uIDI3NTQyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgxMywxMCArMTgxMywxMCBAQAogICAgIHVuc2lnbmVkIHR5cGVQcm9maWxp
bmdFbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0K
ICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
Q291bnQ7IH0KIAorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
KCkgY29uc3QgeyByZXR1cm4gbV9tdXRhYmxlTWV0YWRhdGEubV9sZXhpY2FsU2NvcGVGZWF0dXJl
czsgfQogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJs
ZU1ldGFkYXRhLm1fZmVhdHVyZXM7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgc291cmNlUGFyc2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VQYXJzZU1vZGU7IH0KIAotICAgIHVuc2lnbmVk
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsg
fQogICAgIHVuc2lnbmVkIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9t
dXRhYmxlTWV0YWRhdGEubV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAgIHVuc2lnbmVkIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQog
ICAgIHVuc2lnbmVkIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcjsgfQpAQCAtMTg0MSw3ICsx
ODQxLDYgQEAKICAgICBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVNZXRhZGF0YSBtX211dGFibGVN
ZXRhZGF0YTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lT2Zmc2V0IDogMzE7Ci0gICAgdW5z
aWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQg
OiAzMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25l
ZCBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQgOiAzMTsKQEAgLTIxOTgsNiArMjE5Nyw3IEBA
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSYgZXhlY3V0
YWJsZSkKIHsKKyAgICBtX211dGFibGVNZXRhZGF0YS5tX2xleGljYWxTY29wZUZlYXR1cmVzID0g
ZXhlY3V0YWJsZS5tX2xleGljYWxTY29wZUZlYXR1cmVzOwogICAgIG1fbXV0YWJsZU1ldGFkYXRh
Lm1fZmVhdHVyZXMgPSBleGVjdXRhYmxlLm1fZmVhdHVyZXM7CiAgICAgbV9tdXRhYmxlTWV0YWRh
dGEubV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGV4ZWN1dGFibGUubV9oYXNDYXB0dXJlZFZhcmlh
YmxlczsKIApAQCAtMjIxNSw3ICsyMjE1LDYgQEAKIAogICAgIG1fc291cmNlUGFyc2VNb2RlID0g
ZXhlY3V0YWJsZS5tX3NvdXJjZVBhcnNlTW9kZTsKIAotICAgIG1faXNJblN0cmljdENvbnRleHQg
PSBleGVjdXRhYmxlLm1faXNJblN0cmljdENvbnRleHQ7CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlv
biA9IGV4ZWN1dGFibGUubV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICBtX2lzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yID0gZXhlY3V0YWJsZS5tX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yOwogICAgIG1fY29uc3RydWN0QWJpbGl0eSA9IGV4ZWN1dGFibGUubV9jb25zdHJ1
Y3RBYmlsaXR5OwpAQCAtMjI0OSw3ICsyMjQ4LDcgQEAKIEFMV0FZU19JTkxJTkUgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRl
Y29kZXIsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYgY2FjaGVkRXhlY3V0YWJsZSkK
ICAgICA6IEJhc2UoZGVjb2Rlci52bSgpLCBkZWNvZGVyLnZtKCkudW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChjYWNoZWRF
eGVjdXRhYmxlLmZpcnN0TGluZU9mZnNldCgpKQotICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChj
YWNoZWRFeGVjdXRhYmxlLmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAgLCBtX2xleGljYWxTY29w
ZUZlYXR1cmVzKGNhY2hlZEV4ZWN1dGFibGUubGV4aWNhbFNjb3BlRmVhdHVyZXMoKSkKICAgICAs
IG1fbGluZUNvdW50KGNhY2hlZEV4ZWN1dGFibGUubGluZUNvdW50KCkpCiAgICAgLCBtX2hhc0Nh
cHR1cmVkVmFyaWFibGVzKGNhY2hlZEV4ZWN1dGFibGUuaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkK
ICAgICAsIG1fdW5saW5rZWRGdW5jdGlvbk5hbWVTdGFydChjYWNoZWRFeGVjdXRhYmxlLnVubGlu
a2VkRnVuY3Rpb25OYW1lU3RhcnQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuaAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
NyBAQAogLy8gVGhpcyBzdHJ1Y3QgaGFzIHRvIGJlIHVwZGF0ZWQgd2hlbiBpbmNyZW1lbnRhbGx5
IHdyaXRpbmcgdG8gdGhlIGJ5dGVjb2RlCiAvLyBjYWNoZSwgc2luY2UgdGhpcyB3aWxsIG9ubHkg
YmUgZmlsbGVkIGluIHdoZW4gd2UgcGFyc2UgdGhlIGZ1bmN0aW9uCiBzdHJ1Y3QgQ2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlTWV0YWRhdGEgeworICAgIExleGljYWxTY29wZUZlYXR1cmVzIG1fbGV4
aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgYm9v
bCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24gMjc1NDI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NyArOTEsNiBAQAogICAgIGlmIChleGVjdXRhYmxlKQogICAgICAgICBleGVjdXRhYmxlLT5yZWNv
cmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSB8IGFycm93Q29udGV4dEZlYXR1cmUsIHJvb3RO
b2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCByb290Tm9kZS0+bGFzdExpbmUoKSwgZW5kQ29s
dW1uKTsKIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBT
dHJpY3RNb2RlRmVhdHVyZSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHko
KTsKICAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObzsKICAgICBQcml2YXRlQnJhbmRS
ZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVt
ZW50OjpOb25lOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5
cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikgewpAQCAtMTEwLDcgKzEwOSw4IEBACiAgICAgUmVm
UHRyPFREWkVudmlyb25tZW50TGluaz4gcGFyZW50VmFyaWFibGVzVW5kZXJURFo7CiAgICAgaWYg
KHZhcmlhYmxlc1VuZGVyVERaKQogICAgICAgICBwYXJlbnRWYXJpYWJsZXNVbmRlclREWiA9IFRE
WkVudmlyb25tZW50TGluazo6Y3JlYXRlKHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoKnZh
cmlhYmxlc1VuZGVyVERaKSwgbnVsbHB0cik7Ci0gICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2Nr
LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaLCBwcml2YXRlTmFt
ZUVudmlyb25tZW50LCBlY21hTW9kZSk7CisgICAgYXV0byBsZXhpY2FsU2NvcGVGZWF0dXJlcyA9
IExleGljYWxTY29wZUZlYXR1cmVzOjp3aXRoU3RyaWN0TW9kZShyb290Tm9kZS0+ZmVhdHVyZXMo
KSAmIFN0cmljdE1vZGVGZWF0dXJlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNv
ZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1lRW52
aXJvbm1lbnQsIGxleGljYWxTY29wZUZlYXR1cmVzKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQyOSkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDQtMDIgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIEludHJvZHVjZSBMZXhpY2FsU2NvcGVGZWF0dXJlcyB0byBlbmFibGUgZnV0dXJlIGJ5dGVj
b2RlIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6Om9w
ZXJhdG9yPSk6CisKIDIwMjEtMDQtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNPU10gRW5hYmxlIE5TVVJMU2Vzc2lvbiBXZWJTb2NrZXQgY29kZSBw
YXRoIGluIFdlYktpdFRlc3RSdW5uZXIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCShyZXZpc2lvbiAyNzU0
MjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQx
LDYgKzI0MSwxMiBAQAogICAgICAgICByZXR1cm4gZnJvbVJhdyhsaHMubV9zdG9yYWdlIF4gcmhz
Lm1fc3RvcmFnZSk7CiAgICAgfQogCisgICAgT3B0aW9uU2V0JiBvcGVyYXRvcj0oY29uc3QgT3B0
aW9uU2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyLm1fc3RvcmFn
ZTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwogcHJpdmF0ZToKICAgICBlbnVtIElu
aXRpYWxpemF0aW9uVGFnIHsgRnJvbVJhd1ZhbHVlIH07CiAgICAgY29uc3RleHByIE9wdGlvblNl
dChFIGUsIEluaXRpYWxpemF0aW9uVGFnKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430502</attachid>
            <date>2021-06-03 14:57:38 -0700</date>
            <delta_ts>2021-06-03 15:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224072-20210604005736.patch</filename>
            <type>text/plain</type>
            <size>90764</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4NDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBA
QAorMjAyMS0wNi0wMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgSW50cm9kdWNlIExleGljYWxTY29wZUZlYXR1cmVzIHRvIGVuYWJsZSBmdXR1cmUg
Ynl0ZWNvZGUgb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVy
LgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBCeXRlY29kZUdlbmVyYXRvciB3YXMgY2Fw
YWJsZSBvZiByZWFzb25pbmcgYWJvdXQgdGhlIHByZXNlbmNlIG9mIGB3aXRoYAorICAgICAgICBz
dGF0ZW1lbnRzLCBkaXJlY3QgYGV2YWxgLCBvciBhbnkgb3RoZXIgY29kZSBmZWF0dXJlcyBvbmx5
IHdpdGhpbiB0aGUgY3VycmVudCBleGVjdXRhYmxlOgorCisgICAgICAgICAgICBgYGAKKyAgICAg
ICAgICAgIHdpdGggKGZvbykgeworICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHdheSB0byBkZXRlY3QgV2l0aFNjb3BlIGR1
cmluZyBnZW5lcmF0aW9uIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgfSkoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGBgYAorCisgICAgICAgIFRoaXMgY2hhbmdlIGlz
IHJlcXVpcmVkIGZvciBvcF90b190aGlzIHJld3JpdGUgKCMyMjUzOTcpOiBpZiBGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZSBhbmQKKyAgICAgICAgZnJpZW5kcyBrbmV3IHRoZXJlIGlzIG5vIFdpdGhT
Y29wZSwgb3BfY2FsbCBjb3VsZCBiZSBlbWl0dGVkIHdpdGggfHRoaXN8IHZhbHVlIG9mCisgICAg
ICAgIGB1bmRlZmluZWRgIGFzIHBlciBzcGVjIFsxXSwgaW5zdGVhZCBvZiByZXNvbHZlZCBzY29w
ZS4gVGhpcyB3b3VsZDoKKyAgICAgICAgICAtIHNpbXBsaWZ5IG9wX3RvX3RoaXMgb24gYWxsIHRp
ZXJzLCBsaWtlbHkgcmVzdWx0aW5nIGluIG1pbm9yIHBlcmYgYm9vc3Q7CisgICAgICAgICAgLSBz
YXZlIDEgaW5zdHJ1Y3Rpb24gcGVyIHN0cmljdCBmdW5jdGlvbiBieSByZW1vdmluZyBvcF90b190
aGlzOworICAgICAgICAgIC0gcmVtb3ZlIHRvVGhpcygpIGZyb20gdGhlIG1ldGhvZCB0YWJsZSBh
bmQgfjMwIGl0cyBjYWxsIHNpdGVzIGZyb20gYnVpbHQtaW5zOworICAgICAgICAgIC0gZml4IGJ1
aWx0LWluIG1ldGhvZHMgdGhhdCB3ZXJlIG9ic2VydmFibHkgbGFja2luZyB0b1RoaXMoKTsKKyAg
ICAgICAgICAtIGZpeCBfX3Byb3RvX18gZ2V0dGVyIC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9iYWwg
c2NvcGU7CisgICAgICAgICAgLSBmaXggV2ViSURMIGFjY2Vzc29ycyBjYWxsZWQgd2l0aCB8dGhp
c3wgdmFsdWUgb2YgYHVuZGVmaW5lZGAgYW5kIGBudWxsYC4KKworICAgICAgICBBbHNvLCBpZiBS
ZXNvbHZlTm9kZSBrbmV3IHRoYXQgdW5mb3JnZWFibGUgZ2xvYmFsIHByb3BlcnRpZXMgYXJlIG5v
dCBzaGFkb3dlZCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gYHdpdGhgIHN0YXRlbWVudCBvciBz
bG9wcHkgbW9kZSBkaXJlY3QgYGV2YWxgLCB0aGVuIGB1bmRlZmluZWRgIC8gYEluZmluaXR5YCAv
IGBOYU5gCisgICAgICAgIGxvb2t1cHMgY291bGQgYmUgY29uc3RhbnQtZm9sZGVkLiBUaGlzIHdv
dWxkIHNhdmUgdXAgdG8gMyBieXRlY29kZSBvcHMgcGVyIGVhY2ggdXNhZ2UKKyAgICAgICAgYW5k
IGFsbG93IGVtaXR0aW5nIG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsIGZvciBgeCA9PT0gdW5kZWZp
bmVkIHx8IHggPT09IG51bGxgLgorICAgICAgICBWOCBwZXJmb3JtcyB0aGlzIG9wdGltaXphdGlv
biBbMl0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIExleGljYWxTY29wZUZlYXR1
cmVzIHRvIGFsbG93IHBhc3Npbmcgc3VjaCBpbmZvcm1hdGlvbiBmcm9tIFBhcnNlcgorICAgICAg
ICB0byBCeXRlY29kZUdlbmVyYXRvciB3aXRoIGEgbWluaW1hbCBjb2RlIGRpZmYuIFRoZXNlIGZl
YXR1cmVzIGFyZSBrZXB0IHNlcGFyYXRlIGZyb20KKyAgICAgICAgQ29kZUZlYXR1cmUgdG8gc2lt
cGxpZnkgcmVhc29uaW5nIGFib3V0IGZlYXR1cmUncyBzY29wZSBhbmQgYmVjYXVzZSB3ZSBuZWVk
IHRvIHByb3BhZ2F0ZQorICAgICAgICBsZXhpY2FsIGZlYXR1cmVzIGZyb20gcGFyZW50IHRvIGNo
aWxkIHNjb3BlLgorCisgICAgICAgIFN0cmljdCBtb2RlIGlzIHRoZSBmaXJzdCB1c2UgY2FzZSBv
ZiBMZXhpY2FsU2NvcGVGZWF0dXJlcywgd2hpY2ggdGhpcyBjaGFuZ2UgY2FyZWZ1bGx5CisgICAg
ICAgIGZpdHMgaW50byBleGlzdGluZyBhYnN0cmFjdGlvbnMgd2l0aG91dCBpbmNyZWFzaW5nIHRo
ZWlyIG1lbW9yeSB1c2FnZSBldmVuIGJ5IDEgYnl0ZS4KKworICAgICAgICBbMV06IGh0dHBzOi8v
dGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsIChzdGVwIDIpCisgICAgICAgIFsyXTog
aHR0cHM6Ly9tZWRpdW0uY29tL0BibWV1cmVyL3NvbWV0aW1lcy11bmRlZmluZWQtaXMtZGVmaW5l
ZC03NzAxZTFjOWVmZjgKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpsZXhpY2Fs
U2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6bGV4aWNhbFNjb3BlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6
RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5v
ZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9k
ZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2Rl
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjps
ZXhpY2FsU2NvcGVGZWF0dXJlcyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aXNTdHJpY3RN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpsZXhpY2FsU2NvcGVGZWF0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTdHJpY3RNb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OnN0cmljdE1vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6
ZmlsbFBhcmFtZXRlcnNGb3JTb3VyY2VQcm92aWRlckNhY2hlKToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6cHVzaFNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsZXhpY2FsU2NvcGVGZWF0dXJl
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpsZXhpY2Fs
U2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENo
ZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRCeXRlY29kZS5jcHA6CisgICAgICAgIChK
U0M6OkNhY2hlZEJ5dGVjb2RlOjphZGRGdW5jdGlvblVwZGF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bGV4aWNhbFNjb3BlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2Rl
QmxvY2s6OmxleGljYWxTY29wZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBs
KToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbENvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9FQ01BTW9kZS5oOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6
ZnJvbUJvb2wpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpHbG9iYWxF
eGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6
Okdsb2JhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omlz
SW5TdHJpY3RDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
cmVjb3JkUGFyc2UpOgorCiAyMDIxLTA2LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ29jb2FdIGBSZW1vdGVJbnNwZWN0b3Jg
IHdvbid0IGNvbm5lY3QgdG8gYSBuZXcgcmVsYXkgaWYgaXQgaGFzbid0IHlldCBmYWlsZWQgdG8g
Y29tbXVuaWNhdGUgd2l0aCBhIHByZXZpb3VzbHkgY29ubmVjdGVkIHJlbGF5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAKICAgICBGdW5jdGlv
bk1ldGFkYXRhTm9kZSBtZXRhZGF0YSgKICAgICAgICAgc3RhcnQsIGVuZCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgc291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBmdW5jdGlvbktleXdvcmRTdGFydCwg
c291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBmdW5jdGlvbk5hbWVTdGFydCwgc291cmNlLnN0YXJ0T2Zm
c2V0KCkgKyBwYXJhbWV0ZXJzU3RhcnQsCi0gICAgICAgIGlzSW5TdHJpY3RDb250ZXh0LCBjb25z
dHJ1Y3RvcktpbmQsIGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMg
PyBTdXBlckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAorICAgICAg
ICBpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZSA6IE5vTGV4aWNh
bEZlYXR1cmVzLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkV4dGVuZHMgPyBTdXBlckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLAogICAgICAgICBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG5ld1NvdXJj
ZSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6OkZ1bmN0aW9uRXhwcmVzc2lvbik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEx
IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVCbG9jazo6c19pbmYKIAogVW5saW5rZWRD
b2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX3VzZXNDYWxsRXZhbChmYWxz
ZSkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5m
by5pc0NvbnN0cnVjdG9yKCkpCisgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8u
aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAyNzg0MjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDkgKzI0MiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHR5
cGVQcm9maWxlckV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpOwogCi0g
ICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMsIHVuc2lnbmVkIGxpbmVDb3VudCwgdW5zaWduZWQgZW5kQ29sdW1uKQorICAg
IHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0
dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5z
aWduZWQgbGluZUNvdW50LCB1bnNpZ25lZCBlbmRDb2x1bW4pCiAgICAgewogICAgICAgICBtX2Zl
YXR1cmVzID0gZmVhdHVyZXM7CisgICAgICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBsZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGhhc0Nh
cHR1cmVkVmFyaWFibGVzOwogICAgICAgICBtX2xpbmVDb3VudCA9IGxpbmVDb3VudDsKICAgICAg
ICAgLy8gRm9yIHRoZSBVbmxpbmtlZENvZGVCbG9jaywgc3RhcnRDb2x1bW4gaXMgYWx3YXlzIDAu
CkBAIC0yNTcsNiArMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwpIHsgbV9zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTC5pbXBsKCk7IH0KIAogICAgIENvZGVG
ZWF0dXJlcyBjb2RlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CisgICAg
TGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxMZXhpY2FsU2NvcGVGZWF0dXJlcz4obV9sZXhpY2FsU2NvcGVGZWF0dXJl
cyk7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAgIHVuc2lnbmVkIGxpbmVDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUNvdW50OyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTM2OCw5ICszNzAsMTMgQEAgcHJpdmF0ZToK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fc2NvcGVSZWdpc3RlcjsKIAorICAgIHVuc2lnbmVkIG1fbnVtVmFycyA6IDMxOwogICAgIHVu
c2lnbmVkIG1fdXNlc0NhbGxFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxlZUxvY2Fs
cyA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgdW5zaWduZWQg
bV9udW1QYXJhbWV0ZXJzIDogMzE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CisKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNp
Z25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9zY3JpcHRNb2RlOiAxOwpA
QCAtMzg1LDYgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9hZ2UgOiAzOwogICAg
IHN0YXRpY19hc3NlcnQoKCgxVSA8PCAzKSAtIDEpID49IG1heEFnZSk7CiAgICAgYm9vbCBtX2hh
c0NoZWNrcG9pbnRzIDogMTsKKyAgICB1bnNpZ25lZCBtX2xleGljYWxTY29wZUZlYXR1cmVzIDog
NDsKIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKIHByaXZhdGU6CkBAIC0z
OTUsMTAgKzQwMiw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQgeyAwIH07
CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW4geyBVSU5UX01BWCB9OwogCi0gICAgdW5zaWduZWQg
bV9udW1WYXJzIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fbnVtQ2FsbGVlTG9jYWxzIHsgMCB9Owot
ICAgIHVuc2lnbmVkIG1fbnVtUGFyYW1ldGVycyB7IDAgfTsKLQogICAgIFBhY2tlZFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5n
SW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYQog
ICAgIH0KIAogICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwotICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNl
KGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
CisgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0
aW9uLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSk7CiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5k
aW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCkBAIC03Myw4
ICs3Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmEKIAogICAg
IGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpOwogICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50KCk7Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAg
IGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwg
c291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwg
cmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwYXJl
bnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODUsNyArODQsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmly
c3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKLSAgICAs
IG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAsIG1f
aXNHZW5lcmF0ZWRGcm9tQ2FjaGUoZmFsc2UpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0
TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
KGZhbHNlKQogICAgICwgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KG5vZGUtPmZ1bmN0aW9u
TmFtZVN0YXJ0KCkgLSBwYXJlbnRTb3VyY2Uuc3RhcnRPZmZzZXQoKSkKQEAgLTEwMSwxNiArMTAw
LDE2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1f
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KG5vZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV9p
c0NhY2hlZChmYWxzZSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KG5vZGUtPmZ1
bmN0aW9uS2V5d29yZFN0YXJ0KCkpCisgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCiAgICAg
LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9k
ZS0+c291cmNlKCkubGVuZ3RoKCkgLSAxKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5w
YXJhbWV0ZXJDb3VudCgpKQogICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICwgbV9mZWF0dXJl
cygwKQotICAgICwgbV9zb3VyY2VQYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBt
X2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JL
aW5kKCkpKQorICAgICwgbV9zb3VyY2VQYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCisgICAg
LCBtX2xleGljYWxTY29wZUZlYXR1cmVzKG5vZGUtPmxleGljYWxTY29wZUZlYXR1cmVzKCkpCiAg
ICAgLCBtX2Z1bmN0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlcml2ZWRDb250ZXh0VHlwZSkpCi0gICAgLCBtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKGZhbHNl
KQotICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAgICAg
LCBtX25hbWUobm9kZS0+aWRlbnQoKSkKQEAgLTI5MCw3ICsyODksNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVuCiAKIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpCiB7Ci0gICAgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7
CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSBJTlQzMl9NQVg7CiAgICAgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjc4NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgICAgICBlbnN1
cmVSYXJlRGF0YSgpLm1fY2xhc3NTb3VyY2UgPSBzb3VyY2U7CiAgICAgfQogCi0gICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
KyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2Nv
cGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsgfQogICAgIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+
KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtMTM0LDEz
ICsxMzQsMTUgQEAgcHVibGljOgogICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogCi0gICAgdm9pZCByZWNvcmRQYXJzZShD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCisgICAgdm9p
ZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVz
IGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQogICAgIHsK
ICAgICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOworICAgICAgICBtX2xleGljYWxTY29wZUZl
YXR1cmVzID0gbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMgPSBoYXNDYXB0dXJlZFZhcmlhYmxlczsKICAgICB9CiAKLSAgICBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CisgICAgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29kZUZlYXR1cmVzPihtX2Zl
YXR1cmVzKTsgfQorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGV4aWNhbFNjb3BlRmVhdHVyZXM+KG1fbGV4
aWNhbFNjb3BlRmVhdHVyZXMpOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAogICAgIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOyB9CkBAIC0yNTQsNyArMjU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRl
eHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogICAgIHVu
c2lnbmVkIG1fbGluZUNvdW50IDogMzE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlh
YmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0IDogMzE7
CkBAIC0yNjksMTcgKzI3MSwxNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5k
aW5nIDogMTsKICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9mZnNldCA6IDMxOwogICAg
IHVuc2lnbmVkIG1faXNDYWNoZWQgOiAxOwotICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0IDogMzE7
CisgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgdW5z
aWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVy
Q291bnQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
LSAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKLSAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3Vy
Y2VQYXJzZU1vZGU7CisgICAgdW5zaWduZWQgbV9mZWF0dXJlcyA6IDE0OwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJz
ZU1vZGU7CisgICAgdW5zaWduZWQgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA6IDQ7CiAgICAgdW5z
aWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1bnNpZ25lZCBt
X2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKLSAgICB1bnNpZ25lZCBtX2lzR2VuZXJhdGVkRnJvbUNh
Y2hlIDogMTsKLSAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsK
IAogICAgIHVuaW9uIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAg
UGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgIHJldHVybiBQYXJz
ZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
PiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KikKICAgICA6IEJ5dGVjb2Rl
R2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwg
Y29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlv
bk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMwMiw3ICszMDIsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKICAgICAs
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJy
b3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQotICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKKyAgICAsIG1fZWNtYU1vZGUoRUNNQU1vZGU6OmZyb21Cb29sKHByb2dyYW1O
b2RlLT5pc1N0cmljdE1vZGUoKSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKIApAQCAtMzM2LDcgKzMzNiw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICB9CiB9CiAK
LUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVm
UHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01B
TW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdl
bmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0
aW9uTm9kZSkKQEAgLTM0Niw3ICszNDYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHBy
ZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2Nr
LT5pc0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmdW5jdGlv
bk5vZGUtPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSAmJiAhZnVuY3Rpb25Ob2RlLT5p
c1N0cmljdE1vZGUoKSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0
YWlsIGNhbGwgZWxpbWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBU
aGlzIGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0
cwogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0
ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CkBAIC0zNTQsMTEgKzM1NCwxMiBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdl
IGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNp
bmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1f
aW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3Io
KSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENh
bGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUgJiYgZnVuY3Rpb25Ob2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1f
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93
RnVuY3Rpb24oKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2Rl
KGVjbWFNb2RlKQorICAgICwgbV9lY21hTW9kZShFQ01BTW9kZTo6ZnJvbUJvb2woZnVuY3Rpb25O
b2RlLT5pc1N0cmljdE1vZGUoKSkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxv
Y2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogeworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9l
Y21hTW9kZTsKICAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1i
b2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtODQ0LDcgKzg0NSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVO
b2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7
CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxO
b2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBl
Y21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2
YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRy
PFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KQogICAgIDog
Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVH
ZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAtODU0LDEwICs4
NTUsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICwg
bV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2Up
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQotICAgICwgbV91c2VzTm9uU3RyaWN0
RXZhbChldmFsTm9kZS0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoZXZhbE5vZGUtPnVzZXNFdmFsKCkgJiYgIWV2YWxOb2RlLT5p
c1N0cmljdE1vZGUoKSkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKLSAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUp
CisgICAgLCBtX2VjbWFNb2RlKEVDTUFNb2RlOjpmcm9tQm9vbChldmFsTm9kZS0+aXNTdHJpY3RN
b2RlKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKQEAg
LTkwOSw3ICs5MTAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
CiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246
Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJ
bml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3Jh
bU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlx
dWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAs
IG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVO
b2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtOTIyLDcgKzkyMyw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFs
c2UpCiAgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9u
KCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQorICAgICwgbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKIApAQCAtMzI2OSw4ICszMjcwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdDbAogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCi0g
ICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKLSAgICBGdW5jdGlvbk1l
dGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNU
b2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKKyAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9j
YXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIFN0cmljdE1vZGVMZXhp
Y2FsRmVhdHVyZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNl
TW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNv
dXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7CiAg
ICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiks
IFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSk7CiAgICAgaW5pdGlhbGl6ZXItPnNldENsYXNzRmllbGRMb2NhdGlvbnMoV1RG
TW92ZShjbGFzc0ZpZWxkTG9jYXRpb25zKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAy
Nzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOSwxMCArNDA5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwotICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKLSAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3Jh
bU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rp
b25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFs
Tm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9n
cmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3Io
KTsKICAgICAgICAgCkBAIC00MjYsNiArNDI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAg
IGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsg
fQorICAgICAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpOyB9CiAgICAg
ICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0KICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQogICAgICAgICBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9
CkBAIC00MzMsMTQgKzQzNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgot
ICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRl
KFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKICAgICAgICAgewogICAgICAgICAgICAgTW9ub3Rvbmlj
VGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0
ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2Rl
KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVj
b2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9u
TW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsK
IAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGls
ZVRpbWVzKCkpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCi0gICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQs
IAorICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIExl
eGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCAKICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAg
ICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQpAQCAtNDcwLDcgKzQ3MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBl
bmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAg
ICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLAor
ICAgICAgICAgICAgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJC
aW5kaW5nLAogICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDIwICsxMTcsMjEgQEAgYm9v
bCBCbG9ja05vZGU6Omhhc0Vhcmx5QnJlYWtPckNvbnRpbnVlKAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZExvY2F0aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKFBh
cnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBMZXhpY2FsU2NvcGVGZWF0
dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgLCBQYXJzZXJBcmVuYVJvb3QocGFyc2VyQXJlbmEpCiAgICAgLCBtX3N0YXJ0TGlu
ZU51bWJlcihzdGFydExvY2F0aW9uLmxpbmUpCiAgICAgLCBtX3N0YXJ0U3RhcnRPZmZzZXQoc3Rh
cnRMb2NhdGlvbi5zdGFydE9mZnNldCkKICAgICAsIG1fc3RhcnRMaW5lU3RhcnRPZmZzZXQoc3Rh
cnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCi0gICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29u
dGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKKyAgICAsIG1fZmVhdHVyZXMo
Tm9GZWF0dXJlcykKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVh
dHVyZXMpCiAgICAgLCBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyhOb0lubmVyQXJy
b3dGdW5jdGlvbkZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMoMCkKICAgICAsIG1fc3Rh
dGVtZW50cyhudWxscHRyKQogewogfQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmly
b25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lz
dGVkRnVuY3Rpb25zLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNv
ZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCitTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNr
JiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlx
dWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
LCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU3RhdGVtZW50Tm9kZShlbmRMb2NhdGlv
bikKICAgICAsIFBhcnNlckFyZW5hUm9vdChwYXJzZXJBcmVuYSkKICAgICAsIFZhcmlhYmxlRW52
aXJvbm1lbnROb2RlKGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoZnVuY1N0YWNrKSkKQEAgLTEz
OCw2ICsxMzksNyBAQCBTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyCiAg
ICAgLCBtX3N0YXJ0U3RhcnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5zdGFydE9mZnNldCkKICAgICAs
IG1fc3RhcnRMaW5lU3RhcnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCiAg
ICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQorICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhs
ZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICAsIG1faW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1
cmVzKGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcykKICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAsIG1fc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMoV1RGTW92ZShzbG9wcHlNb2Rl
SG9pc3RlZEZ1bmN0aW9ucykpCkBAIC0xNjQsOCArMTY2LDggQEAgYm9vbCBTY29wZU5vZGU6Omhh
c0Vhcmx5QnJlYWtPckNvbnRpbnVlKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5v
ZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9u
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlv
blN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVz
LCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0
YT4mJikKLSAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFj
ayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMp
LCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMp
CitQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1l
bnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRG
dW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlv
bkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4m
JikKKyAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayks
IGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBm
ZWF0dXJlcywgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAg
ICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTE3Myw4ICsxNzUsOCBAQCBQcm9ncmFt
Tm9kZTo6UHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1Nb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9u
bWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYg
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmIG1vZHVsZVNjb3BlRGF0YSkKLSAgICA6
IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJj
ZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxW
YXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywg
aW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCitNb2R1bGVQcm9n
cmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1l
bnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRG
dW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlv
bkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4m
JiBtb2R1bGVTY29wZURhdGEpCisgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9j
YXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RG
TW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lz
dGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGxleGljYWxTY29wZUZlYXR1cmVzLCBpbm5lckFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiAgICAgLCBtX3VzZXNB
d2FpdChmZWF0dXJlcyAmIEF3YWl0RmVhdHVyZSkKQEAgLTE4NCw4ICsxODYsOCBAQCBNb2R1bGVQ
cm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1F
dmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBm
dW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRT
dHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQotICAg
IDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291
cmNlLCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNh
bFZhcmlhYmxlcywgV1RGTW92ZShzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVz
LCBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKK0V2YWxOb2Rl
OjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJp
YWJsZUVudmlyb25tZW50JiB2YXJFbnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFj
aywgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0lt
cGxQdHJTZXQmJiBzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJz
KiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGlj
YWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25D
b2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQorICAgIDogU2NvcGVOb2RlKHBhcnNlckFy
ZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyRW52
aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNhbFZhcmlhYmxlcywgV1RGTW92ZShz
bG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVzLCBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9CkBAIC0xOTUsMTAgKzE5NywxMCBAQCBFdmFsTm9k
ZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyCiBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6
RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgTGV4
aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMsCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCi0gICAgICAgICwg
bV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX2xleGlj
YWxTY29wZUZlYXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQogICAgICAgICAsIG1fc3VwZXJC
aW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQog
ICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCkBAIC0yMjAsMTAgKzIyMiwxMCBA
QCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vCiBGdW5jdGlvbk1ldGFk
YXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9u
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKLSAgICBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIExleGljYWxT
Y29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCAKICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKLSAgICAgICAgLCBtX2lz
SW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fbGV4aWNhbFNj
b3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKQEAgLTI1OCw3ICsyNjAsNyBAQCB2b2lk
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpzZXRFbmRQb3NpdGlvCiBib29sIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wYXJzZU1vZGUgPT0gb3RoZXIubV9wYXJzZU1vZGUKLSAgICAg
ICAgJiYgbV9pc0luU3RyaWN0Q29udGV4dCA9PSBvdGhlci5tX2lzSW5TdHJpY3RDb250ZXh0Cisg
ICAgICAgICYmIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPT0gb3RoZXIubV9sZXhpY2FsU2NvcGVG
ZWF0dXJlcwogICAgICAgICAmJiBtX3N1cGVyQmluZGluZyA9PSBvdGhlci5tX3N1cGVyQmluZGlu
ZwogICAgICAgICAmJiBtX2NvbnN0cnVjdG9yS2luZCA9PSBvdGhlci5tX2NvbnN0cnVjdG9yS2lu
ZAogICAgICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09IG90aGVyLm1f
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KQEAgLTI4MSw3ICsyODMsNyBAQCBib29sIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvCiB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0pIGNvbnN0CiB7CiAgICAgc3RyZWFtLnByaW50
bG4oIm1fcGFyc2VNb2RlICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOwot
ICAgIHN0cmVhbS5wcmludGxuKCJtX2lzSW5TdHJpY3RDb250ZXh0ICIsIG1faXNJblN0cmljdENv
bnRleHQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2xleGljYWxTY29wZUZlYXR1cmVzICIsIG1f
bGV4aWNhbFNjb3BlRmVhdHVyZXMpOwogICAgIHN0cmVhbS5wcmludGxuKCJtX3N1cGVyQmluZGlu
ZyAiLCBtX3N1cGVyQmluZGluZyk7CiAgICAgc3RyZWFtLnByaW50bG4oIm1fY29uc3RydWN0b3JL
aW5kICIsIG1fY29uc3RydWN0b3JLaW5kKTsKICAgICBzdHJlYW0ucHJpbnRsbigibV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiAiLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKQEAgLTMwNCw4ICszMDYsOCBAQCB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wKFBy
aW50U3RyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5j
U3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1
bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVE
YXRhPiYmKQotICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRM
b2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1
bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5j
dGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25z
dGFudHMpCitGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJF
bnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2Rl
SG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29w
ZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVh
dHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBS
ZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQorICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBz
dGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmly
b25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xv
cHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgbGV4aWNhbFNjb3BlRmVhdHVyZXMs
IGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQog
ICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODk3LDggKzE4OTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gbmV3IGZvciBhbGxvY2F0aW9uLgogICAgICAgICB1c2luZyBQ
YXJzZXJBcmVuYVJvb3Q6Om9wZXJhdG9yIG5ldzsKIAotICAgICAgICBTY29wZU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRT
dHJpbmdJbXBsUHRyU2V0JiYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIExleGljYWxTY29wZUZlYXR1cmVzKTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJvbm1l
bnQmLCBGdW5jdGlvblN0YWNrJiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5n
SW1wbFB0clNldCYmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAg
ICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJ
RCgpOyB9CkBAIC0xOTA4LDYgKzE5MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50
IHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydExpbmVTdGFydE9m
ZnNldDsgfQogCiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIHsgcmV0dXJuIG1fZmVh
dHVyZXM7IH0KKyAgICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVy
ZXMoKSB7IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzOyB9CiAgICAgICAgIElubmVyQXJy
b3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMoKSB7
IHJldHVybiBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsgfQogICAgICAgICBib29s
IGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUFueUZlYXR1cmUoKSB7IHJldHVybiBtX2lubmVy
QXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyAhPSBOb0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVz
OyB9CiAgICAgICAgIGJvb2wgZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlQXJndW1lbnRzKCkg
eyByZXR1cm4gbV9pbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgJiBBcmd1bWVudHNJbm5l
ckFycm93RnVuY3Rpb25GZWF0dXJlOyB9CkBAIC0xOTIwLDcgKzE5MjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMg
JiBFdmFsRmVhdHVyZTsgfQogICAgICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJl
dHVybiAobV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmUpICYmICEobV9mZWF0dXJlcyAmIFNo
YWRvd3NBcmd1bWVudHNGZWF0dXJlKTsgfQogICAgICAgICBib29sIHVzZXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFycm93RnVuY3Rpb25GZWF0dXJlOyB9Ci0g
ICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0
cmljdE1vZGVGZWF0dXJlOyB9CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsg
fQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFRo
aXNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1N1cGVyQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXMgJiBTdXBlckNhbGxGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1N1cGVy
UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3VwZXJQcm9wZXJ0eUZlYXR1
cmU7IH0KQEAgLTE5NjIsNiArMTk2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CisgICAgICAgIExleGljYWxTY29w
ZUZlYXR1cmVzIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIElubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcyBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKICAgICAg
ICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3Zh
ckRlY2xhcmF0aW9uczsKQEAgLTE5NzIsNyArMTk3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUHJvZ3JhbU5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CisgICAgICAgIFByb2dyYW1Ob2RlKFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZl
YXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMs
IFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpOwogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMTk4Nyw3ICsxOTg5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsTm9kZSBmaW5hbCA6IHB1Ymxp
YyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVu
dHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmly
b25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKTsKKyAg
ICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVu
Y3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJT
ZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgTGV4aWNhbFNjb3BlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47
IH0KQEAgLTIwMDIsNyArMjAwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTW9k
dWxlUHJvZ3JhbU5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CisgICAgICAgIE1vZHVsZVByb2dyYW1O
b2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2sm
JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0
aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxT
Y29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpOwogCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMjE3MSwx
MyArMjE3MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUoCiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
Ci0gICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
LCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCi0gICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAg
ICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhp
Y2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCkBAIC0yMjEwLDcgKzIy
MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRDbGFzc1NvdXJjZShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9jbGFzc1NvdXJjZSA9IHNvdXJjZTsgfQogCiAgICAg
ICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zm
c2V0OyB9Ci0gICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGlj
YWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGV4aWNhbFNjb3Bl
RmVhdHVyZXM+KG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMpOyB9CiAgICAgICAgIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3Vw
ZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CkBAIC0y
MjM2LDcgKzIyMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHVibGlj
OgotICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5z
aWduZWQgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA6IDQ7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Vw
ZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKQEAgLTIy
NjAsNyArMjI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2Rl
IGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlv
bk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFj
ayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJB
cnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxl
U2NvcGVEYXRhPiYmKTsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYs
IFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29w
ZURhdGE+JiYpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw4ICszMDksNiBA
QCBFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyCiAgICAgfQogCiAgICAg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwotICAgIGlmIChzY29w
ZS0+c3RyaWN0TW9kZSgpKQotICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsK
ICAgICBpZiAoc2NvcGUtPnNoYWRvd3NBcmd1bWVudHMoKSkKICAgICAgICAgZmVhdHVyZXMgfD0g
U2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1fc2VlblRhZ2dlZFRlbXBsYXRlKQpA
QCAtNTMzLDcgKzUzMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUUKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5j
dGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9y
Iik7CiAgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBsZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CiAKICAgICBpbmZvLmVuZExpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKQEAgLTU4NCw3ICs1ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFCiAgICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5bmNGdW5jdGlvbkJvZHlTY29w
ZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8u
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50
LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAg
IGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNj
b3BlRmVhdHVyZXMoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5m
by5wYXJhbWV0ZXJDb3VudCwgc291cmNlUGFyc2VNb2RlKCksIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKIAogICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGluZm8u
ZW5kT2Zmc2V0ID0gaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPyB0b2tlbkxvY2F0aW9u
KCkuZW5kT2Zmc2V0IDogbV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtNjM1LDcgKzYzMyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUUKICAgICAgICAgfQogICAg
ICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNG
cmVlVmFyaWFibGVJbmZvKTsKICAgICB9Ci0gICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
bV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uID8gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCA6IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsK
QEAgLTIxNzAsNyArMjE2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1
bmN0aW8KICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICAgICAgU3VwZXJCaW5kaW5n
IGZ1bmN0aW9uU3VwZXJCaW5kaW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVj
dG9yKGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQs
IHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGxleGljYWxTY29w
ZUZlYXR1cmVzKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFt
ZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTg5LDcgKzIxODcsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvCiAgICAgfQogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5k
aW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2lu
ZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5j
dGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdBcnRpY2xlRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMjQwNSw3
ICsyNDAzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAg
ICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVz
ZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBm
dW5jdGlvbi4KICAgICAgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKHBhcmFtZXRlcnNTdGFydCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVz
dCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCi0gICAgICAgICAgICBBU1NFUlQoIXN0cmljdE1vZGUo
KSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RyaWN0
TW9kZSgpIHx8IChsZXhpY2FsU2NvcGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVy
ZSkpOwogICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uOwogCiAgICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kID0gc3RhdGljX2Nhc3Q8Q29uc3Ry
dWN0b3JLaW5kPihjYWNoZWRJbmZvLT5jb25zdHJ1Y3RvcktpbmQpOwpAQCAtMjQzMyw3ICsyNDMx
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAg
ICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBi
b2R5RW5kQ29sdW1uLCAKICAgICAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICAgICAgY2FjaGVk
SW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywK
KyAgICAgICAgICAgICAgICBjYWNoZWRJbmZvLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBjb25z
dHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nLAogICAgICAgICAgICAgICAgIGNhY2hl
ZEluZm8tPnBhcmFtZXRlckNvdW50LAogICAgICAgICAgICAgICAgIG1vZGUsIGZ1bmN0aW9uQm9k
eVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgICAgIGZ1bmN0
aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMjc4NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2NvcGUpOwogCiBwdWJsaWM6Ci0gICAgU2NvcGUoY29uc3QgVk0mIHZtLCBib29sIGlzRnVuY3Rp
b24sIGJvb2wgaXNHZW5lcmF0b3IsIGJvb2wgc3RyaWN0TW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b24sIGJvb2wgaXNBc3luY0Z1bmN0aW9uKQorICAgIFNjb3BlKGNvbnN0IFZNJiB2bSwgTGV4aWNh
bFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGJvb2wgaXNGdW5jdGlvbiwgYm9v
bCBpc0dlbmVyYXRvciwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBc3luY0Z1bmN0aW9u
KQogICAgICAgICA6IG1fdm0odm0pCiAgICAgICAgICwgbV9zaGFkb3dzQXJndW1lbnRzKGZhbHNl
KQogICAgICAgICAsIG1fdXNlc0V2YWwoZmFsc2UpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGlj
OgogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoZmFsc2UpCiAgICAgICAgICwgbV9hbGxv
d3NWYXJEZWNsYXJhdGlvbnModHJ1ZSkKICAgICAgICAgLCBtX2FsbG93c0xleGljYWxEZWNsYXJh
dGlvbnModHJ1ZSkKLSAgICAgICAgLCBtX3N0cmljdE1vZGUoc3RyaWN0TW9kZSkKKyAgICAgICAg
LCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQogICAgICAgICAs
IG1faXNGdW5jdGlvbihpc0Z1bmN0aW9uKQogICAgICAgICAsIG1faXNHZW5lcmF0b3IoaXNHZW5l
cmF0b3IpCiAgICAgICAgICwgbV9pc0dlbmVyYXRvckJvdW5kYXJ5KGZhbHNlKQpAQCAtNzU2LDgg
Kzc1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhcHR1cmVkVmFyaWFibGVzLmFkZChpbXBs
KTsKICAgICAgICAgfQogICAgIH0KLSAgICB2b2lkIHNldFN0cmljdE1vZGUoKSB7IG1fc3RyaWN0
TW9kZSA9IHRydWU7IH0KLSAgICBib29sIHN0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0
cmljdE1vZGU7IH0KKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7IH0KKyAgICB2b2lkIHNl
dFN0cmljdE1vZGUoKSB7IG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgfD0gU3RyaWN0TW9kZUxleGlj
YWxGZWF0dXJlOyB9CisgICAgYm9vbCBzdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhp
Y2FsU2NvcGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsgfQogICAgIGJvb2wg
aXNWYWxpZFN0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWRTdHJpY3RNb2RlOyB9
CiAgICAgYm9vbCBzaGFkb3dzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzQXJn
dW1lbnRzOyB9CiAgICAgdm9pZCBzZXRIYXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0KCkKQEAgLTc4
MCw3ICs3ODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0Z1bmN0aW9u
KTsKICAgICAgICAgcGFyYW1ldGVycy51c2VzRXZhbCA9IG1fdXNlc0V2YWw7Ci0gICAgICAgIHBh
cmFtZXRlcnMuc3RyaWN0TW9kZSA9IG1fc3RyaWN0TW9kZTsKKyAgICAgICAgcGFyYW1ldGVycy5s
ZXhpY2FsU2NvcGVGZWF0dXJlcyA9IG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIHBh
cmFtZXRlcnMubmVlZHNGdWxsQWN0aXZhdGlvbiA9IG1fbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAg
ICAgICAgcGFyYW1ldGVycy5pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyA9IG1faW5uZXJBcnJv
d0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgICAgIHBhcmFtZXRlcnMubmVlZHNTdXBlckJpbmRpbmcg
PSBtX25lZWRzU3VwZXJCaW5kaW5nOwpAQCAtODA0LDcgKzgwNSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2lzRnVuY3Rpb24pOwogICAgICAgICBtX3VzZXNFdmFsID0gaW5m
by0+dXNlc0V2YWw7Ci0gICAgICAgIG1fc3RyaWN0TW9kZSA9IGluZm8tPnN0cmljdE1vZGU7Cisg
ICAgICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBpbmZvLT5sZXhpY2FsU2NvcGVGZWF0dXJl
cygpOwogICAgICAgICBtX2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzID0gaW5mby0+aW5uZXJB
cnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgICAgIG1fbmVlZHNGdWxsQWN0aXZhdGlvbiA9IGlu
Zm8tPm5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgICAgIG1fbmVlZHNTdXBlckJpbmRpbmcgPSBp
bmZvLT5uZWVkc1N1cGVyQmluZGluZzsKQEAgLTkwNCw3ICs5MDUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9uZWVkc1N1cGVyQmluZGluZzsKICAgICBib29sIG1fYWxsb3dzVmFyRGVjbGFyYXRp
b25zOwogICAgIGJvb2wgbV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zOwotICAgIGJvb2wgbV9z
dHJpY3RNb2RlOworICAgIExleGljYWxTY29wZUZlYXR1cmVzIG1fbGV4aWNhbFNjb3BlRmVhdHVy
ZXM7CiAgICAgYm9vbCBtX2lzRnVuY3Rpb247CiAgICAgYm9vbCBtX2lzR2VuZXJhdG9yOwogICAg
IGJvb2wgbV9pc0dlbmVyYXRvckJvdW5kYXJ5OwpAQCAtMTMyNSwxOSArMTMyNiwxOSBAQCBwcml2
YXRlOgogCiAgICAgU2NvcGVSZWYgcHVzaFNjb3BlKCkKICAgICB7CisgICAgICAgIExleGljYWxT
Y29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzID0gTm9MZXhpY2FsRmVhdHVyZXM7CiAg
ICAgICAgIGJvb2wgaXNGdW5jdGlvbiA9IGZhbHNlOwotICAgICAgICBib29sIGlzU3RyaWN0ID0g
ZmFsc2U7CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxzZTsKICAgICAgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb24gPSBm
YWxzZTsKICAgICAgICAgaWYgKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpc1N0cmljdCA9IG1fc2NvcGVTdGFjay5sYXN0KCkuc3RyaWN0TW9kZSgpOworICAgICAgICAg
ICAgbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBtX3Njb3BlU3RhY2subGFzdCgpLmxleGljYWxTY29w
ZUZlYXR1cmVzKCk7CiAgICAgICAgICAgICBpc0Z1bmN0aW9uID0gbV9zY29wZVN0YWNrLmxhc3Qo
KS5pc0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICBpc0dlbmVyYXRvciA9IG1fc2NvcGVTdGFjay5s
YXN0KCkuaXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IG1fc2Nv
cGVTdGFjay5sYXN0KCkuaXNBcnJvd0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICBpc0FzeW5jRnVu
Y3Rpb24gPSBtX3Njb3BlU3RhY2subGFzdCgpLmlzQXN5bmNGdW5jdGlvbigpOwogICAgICAgICB9
Ci0gICAgICAgIG1fc2NvcGVTdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQobV92bSwgaXNGdW5jdGlv
biwgaXNHZW5lcmF0b3IsIGlzU3RyaWN0LCBpc0Fycm93RnVuY3Rpb24sIGlzQXN5bmNGdW5jdGlv
bik7CisgICAgICAgIG1fc2NvcGVTdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQobV92bSwgbGV4aWNh
bFNjb3BlRmVhdHVyZXMsIGlzRnVuY3Rpb24sIGlzR2VuZXJhdG9yLCBpc0Fycm93RnVuY3Rpb24s
IGlzQXN5bmNGdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBjdXJyZW50U2NvcGUoKTsKICAgICB9
CiAKQEAgLTE2NzEsNiArMTY3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRMb29wKCkgeyBj
dXJyZW50U2NvcGUoKS0+ZW5kTG9vcCgpOyB9CiAgICAgdm9pZCBzdGFydFN3aXRjaCgpIHsgY3Vy
cmVudFNjb3BlKCktPnN0YXJ0U3dpdGNoKCk7IH0KICAgICB2b2lkIGVuZFN3aXRjaCgpIHsgY3Vy
cmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4
aWNhbFNjb3BlRmVhdHVyZXMoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFNjb3Bl
RmVhdHVyZXMoKTsgfQogICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgY3VycmVudFNjb3BlKCkt
PnNldFN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgc3RyaWN0TW9kZSgpIHsgcmV0dXJuIGN1cnJl
bnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7IH0KICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkK
QEAgLTIxNzcsNiArMjE3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8
TGV4ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0LnZh
bHVlKCkucGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpt
X3NvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0
LnZhbHVlKCkuZmVhdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U2NvcGUoKS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5pbm5lckFycm93RnVuY3Rpb25GZWF0
dXJlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSZXN1bHQu
dmFsdWUoKS5udW1Db25zdGFudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKG1fbW9kdWxlU2NvcGVEYXRhKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2
ICszMDYsMTQgQEAgaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoYgogICAg
IHJldHVybiB0cnVlOwogfQogCit0eXBlZGVmIHVpbnQ4X3QgTGV4aWNhbFNjb3BlRmVhdHVyZXM7
CisKK2NvbnN0IExleGljYWxTY29wZUZlYXR1cmVzIE5vTGV4aWNhbEZlYXR1cmVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAwOworY29uc3QgTGV4aWNhbFNjb3BlRmVhdHVyZXMgU3RyaWN0
TW9kZUxleGljYWxGZWF0dXJlICAgICAgICAgICAgICAgPSAxIDw8IDA7CisKK2NvbnN0IExleGlj
YWxTY29wZUZlYXR1cmVzIEFsbExleGljYWxGZWF0dXJlcyA9IE5vTGV4aWNhbEZlYXR1cmVzIHwg
U3RyaWN0TW9kZUxleGljYWxGZWF0dXJlOworc3RhdGljX2Fzc2VydChBbGxMZXhpY2FsRmVhdHVy
ZXMgPD0gMGIxMTExLCAiTGV4aWNhbFNjb3BlRmVhdHVyZXMgbXVzdCBiZSA0Yml0cyIpOworCiB0
eXBlZGVmIHVpbnQxNl90IENvZGVGZWF0dXJlczsKIAogY29uc3QgQ29kZUZlYXR1cmVzIE5vRmVh
dHVyZXMgPSAgICAgICAgICAgICAgICAgICAgICAgICAwOwpAQCAtMzEzLDE4ICszMjEsMTcgQEAg
Y29uc3QgQ29kZUZlYXR1cmVzIEV2YWxGZWF0dXJlID0gICAgICAgIAogY29uc3QgQ29kZUZlYXR1
cmVzIEFyZ3VtZW50c0ZlYXR1cmUgPSAgICAgICAgICAgICAgMSA8PCAxOwogY29uc3QgQ29kZUZl
YXR1cmVzIFdpdGhGZWF0dXJlID0gICAgICAgICAgICAgICAgICAgMSA8PCAyOwogY29uc3QgQ29k
ZUZlYXR1cmVzIFRoaXNGZWF0dXJlID0gICAgICAgICAgICAgICAgICAgMSA8PCAzOwotY29uc3Qg
Q29kZUZlYXR1cmVzIFN0cmljdE1vZGVGZWF0dXJlID0gICAgICAgICAgICAgMSA8PCA0OworY29u
c3QgQ29kZUZlYXR1cmVzIE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlID0gMSA8PCA0Owog
Y29uc3QgQ29kZUZlYXR1cmVzIFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlID0gICAgICAgMSA8PCA1
OwogY29uc3QgQ29kZUZlYXR1cmVzIEFycm93RnVuY3Rpb25GZWF0dXJlID0gICAgICAgICAgMSA8
PCA2OwotY29uc3QgQ29kZUZlYXR1cmVzIEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSA9ICAg
MSA8PCA3OworY29uc3QgQ29kZUZlYXR1cmVzIEF3YWl0RmVhdHVyZSA9ICAgICAgICAgICAgICAg
ICAgMSA8PCA3OwogY29uc3QgQ29kZUZlYXR1cmVzIFN1cGVyQ2FsbEZlYXR1cmUgPSAgICAgICAg
ICAgICAgMSA8PCA4OwogY29uc3QgQ29kZUZlYXR1cmVzIFN1cGVyUHJvcGVydHlGZWF0dXJlID0g
ICAgICAgICAgMSA8PCA5OwogY29uc3QgQ29kZUZlYXR1cmVzIE5ld1RhcmdldEZlYXR1cmUgPSAg
ICAgICAgICAgICAgMSA8PCAxMDsKIGNvbnN0IENvZGVGZWF0dXJlcyBOb0V2YWxDYWNoZUZlYXR1
cmUgPSAgICAgICAgICAgIDEgPDwgMTE7Ci1jb25zdCBDb2RlRmVhdHVyZXMgTm9uU2ltcGxlUGFy
YW1ldGVyTGlzdEZlYXR1cmUgPSAxIDw8IDEyOwotY29uc3QgQ29kZUZlYXR1cmVzIEF3YWl0RmVh
dHVyZSA9ICAgICAgICAgICAgICAgICAgMSA8PCAxMzsKIAotY29uc3QgQ29kZUZlYXR1cmVzIEFs
bEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUg
fCBUaGlzRmVhdHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0ZlYXR1
cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSB8
IFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVhdHVyZSB8IE5ld1RhcmdldEZlYXR1
cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmUgfCBOb25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSB8
IEF3YWl0RmVhdHVyZTsKK2NvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0
dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBOb25T
aW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgQXJy
b3dGdW5jdGlvbkZlYXR1cmUgfCBBd2FpdEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJlIHwgU3Vw
ZXJQcm9wZXJ0eUZlYXR1cmUgfCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJl
Oworc3RhdGljX2Fzc2VydChBbGxGZWF0dXJlcyA8ICgxIDw8IDE0KSwgIkNvZGVGZWF0dXJlcyBt
dXN0IGJlIDE0Yml0cyIpOwogCiB0eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1bmN0aW9uQ29k
ZUZlYXR1cmVzOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMjc4NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbUNyZWF0aW9uUGEKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKICAgICBib29sIG5l
ZWRzRnVsbEFjdGl2YXRpb247CiAgICAgYm9vbCB1c2VzRXZhbDsKLSAgICBib29sIHN0cmljdE1v
ZGU7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAg
Ym9vbCBuZWVkc1N1cGVyQmluZGluZzsKICAgICBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVy
ZXMgaW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgVmVjdG9yPFVuaXF1ZWRTdHJpbmdJ
bXBsKiwgOD4gdXNlZFZhcmlhYmxlczsKQEAgLTc4LDYgKzc4LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHRva2VuOwogICAgIH0KIAorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGlj
YWxTY29wZUZlYXR1cmVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIExleGljYWxTY29wZUZlYXR1
cmVzIGZlYXR1cmVzID0gTm9MZXhpY2FsRmVhdHVyZXM7CisgICAgICAgIGlmIChzdHJpY3RNb2Rl
KQorICAgICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUxleGljYWxGZWF0dXJlOworICAg
ICAgICByZXR1cm4gZmVhdHVyZXM7CisgICAgfQorCiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0
aW9uIDogMTsKICAgICB1bnNpZ25lZCBlbmRGdW5jdGlvbk9mZnNldCA6IDMxOwogICAgIGJvb2wg
dXNlc0V2YWwgOiAxOwpAQCAtMTIyLDcgKzEzMCw3IEBAIGlubGluZSBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbTo6U291cmNlUHIKICAgICAsIGVuZEZ1bmN0aW9uT2Zmc2V0KHBhcmFtZXRlcnMuZW5k
RnVuY3Rpb25PZmZzZXQpCiAgICAgLCB1c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQogICAg
ICwgbGFzdFRva2VuTGluZShwYXJhbWV0ZXJzLmxhc3RUb2tlbkxpbmUpCi0gICAgLCBzdHJpY3RN
b2RlKHBhcmFtZXRlcnMuc3RyaWN0TW9kZSkKKyAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5s
ZXhpY2FsU2NvcGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZSkKICAgICAsIGxh
c3RUb2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRva2VuU3RhcnRPZmZzZXQpCiAgICAg
LCBleHBlY3RlZFN1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGFyYW1ldGVycy5l
eHBlY3RlZFN1cGVyQmluZGluZykpCiAgICAgLCBsYXN0VG9rZW5FbmRPZmZzZXQocGFyYW1ldGVy
cy5sYXN0VG9rZW5FbmRPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsx
OTYsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVj
a2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUdlbmVyYXRvckZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1
cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXN5bmNGdW5jdGlv
bkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5
bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1
bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBJbm5lckFycm93RnVu
Y3Rpb25Db2RlRmVhdHVyZXMgPSBOb0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCB1bnNpZ25lZCwg
dW5zaWduZWQsIGludCwgaW50LCBpbnQsIExleGljYWxTY29wZUZlYXR1cmVzLCBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyBy
ZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJy
b3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rp
b25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5j
dGlvbkV4cHI7IH0KICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGludCwgaW50KSB7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29k
ZS5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZEJ5dGVjb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lk
IENhY2hlZEJ5dGVjb2RlOjphZGRGdW5jdGlvblVwZGF0ZShjCiAgICAgcHRyZGlmZl90IG9mZnNl
dCA9IGl0LT52YWx1ZS5iYXNlKCk7CiAgICAgQVNTRVJUKG9mZnNldCk7CiAgICAgY29weUxlYWZF
eGVjdXRhYmxlcyhieXRlY29kZS5nZXQoKSk7Ci0gICAgbV91cGRhdGVzLmFwcGVuZChDYWNoZVVw
ZGF0ZTo6RnVuY3Rpb25VcGRhdGUgeyBvZmZzZXQsIGtpbmQsIHsgZXhlY3V0YWJsZS0+ZmVhdHVy
ZXMoKSwgZXhlY3V0YWJsZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSB9LCBXVEZNb3ZlKGJ5dGVj
b2RlLT5tX3BheWxvYWQpIH0pOworICAgIG1fdXBkYXRlcy5hcHBlbmQoQ2FjaGVVcGRhdGU6OkZ1
bmN0aW9uVXBkYXRlIHsgb2Zmc2V0LCBraW5kLCB7IGV4ZWN1dGFibGUtPmZlYXR1cmVzKCksIGV4
ZWN1dGFibGUtPmxleGljYWxTY29wZUZlYXR1cmVzKCksIGV4ZWN1dGFibGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkgfSwgV1RGTW92ZShieXRlY29kZS0+bV9wYXlsb2FkKSB9KTsKIH0KIAogdm9p
ZCBDYWNoZWRCeXRlY29kZTo6Y29weUxlYWZFeGVjdXRhYmxlcyhjb25zdCBDYWNoZWRCeXRlY29k
ZSYgYnl0ZWNvZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OTksOSArMTc5OSw5
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVyQ291bnQ7IH0KIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fbXV0YWJsZU1ldGFkYXRhLm1fZmVhdHVyZXM7IH0KKyAgICBMZXhpY2FsU2Nv
cGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJs
ZU1ldGFkYXRhLm1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUg
c291cmNlUGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VQYXJzZU1vZGU7IH0KIAot
ICAgIHVuc2lnbmVkIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3Ry
aWN0Q29udGV4dDsgfQogICAgIHVuc2lnbmVkIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9tdXRhYmxlTWV0YWRhdGEubV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAg
IHVuc2lnbmVkIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQogICAgIHVuc2lnbmVkIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcjsgfQpA
QCAtMTgyNiw3ICsxODI2LDYgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFi
bGVNZXRhZGF0YSBtX211dGFibGVNZXRhZGF0YTsKIAogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5l
T2Zmc2V0IDogMzE7Ci0gICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAg
dW5zaWduZWQgbV9saW5lQ291bnQgOiAzMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQgOiAzMTsK
QEAgLTE5MDIsNiArMTkwMSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBldmFsQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2V2YWxDb250ZXh0VHlwZTsgfQogICAgIHVuc2lnbmVkIGhh
c1RhaWxDYWxscygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGFpbENhbGxzOyB9CiAgICAgdW5zaWdu
ZWQgaGFzQ2hlY2twb2ludHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NoZWNrcG9pbnRzOyB9Cisg
ICAgdW5zaWduZWQgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2xleGlj
YWxTY29wZUZlYXR1cmVzOyB9CiAgICAgdW5zaWduZWQgbGluZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9saW5lQ291bnQ7IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVy
biBtX2VuZENvbHVtbjsgfQogCkBAIC0xOTM0LDYgKzE5MzQsNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1faGFzVGFpbENhbGxzIDogMTsKICAgICB1bnNpZ25lZCBtX2NvZGVUeXBlIDogMjsK
ICAgICB1bnNpZ25lZCBtX2hhc0NoZWNrcG9pbnRzIDogMTsKKyAgICB1bnNpZ25lZCBtX2xleGlj
YWxTY29wZUZlYXR1cmVzIDogNDsKIAogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAg
IFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKQEAgLTIxMTUsOSArMjExNiwxMyBAQCBBTFdB
WVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlCiAgICAgLCBtX3RoaXNSZWdpc3Rl
cihjYWNoZWRDb2RlQmxvY2sudGhpc1JlZ2lzdGVyKCkpCiAgICAgLCBtX3Njb3BlUmVnaXN0ZXIo
Y2FjaGVkQ29kZUJsb2NrLnNjb3BlUmVnaXN0ZXIoKSkKIAorICAgICwgbV9udW1WYXJzKGNhY2hl
ZENvZGVCbG9jay5udW1WYXJzKCkpCiAgICAgLCBtX3VzZXNDYWxsRXZhbChjYWNoZWRDb2RlQmxv
Y2sudXNlc0NhbGxFdmFsKCkpCisgICAgLCBtX251bUNhbGxlZUxvY2FscyhjYWNoZWRDb2RlQmxv
Y2subnVtQ2FsbGVlTG9jYWxzKCkpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoY2FjaGVkQ29kZUJs
b2NrLmlzQ29uc3RydWN0b3IoKSkKKyAgICAsIG1fbnVtUGFyYW1ldGVycyhjYWNoZWRDb2RlQmxv
Y2subnVtUGFyYW1ldGVycygpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRD
b2RlQmxvY2suaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKKwogICAgICwgbV9pc0J1aWx0aW5GdW5j
dGlvbihjYWNoZWRDb2RlQmxvY2suaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fc3VwZXJC
aW5kaW5nKGNhY2hlZENvZGVCbG9jay5zdXBlckJpbmRpbmcoKSkKICAgICAsIG1fc2NyaXB0TW9k
ZShjYWNoZWRDb2RlQmxvY2suc2NyaXB0TW9kZSgpKQpAQCAtMjEzMywxNSArMjEzOCwxMyBAQCBB
TFdBWVNfSU5MSU5FIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlCiAgICAgLCBtX2FnZSgwKQog
ICAgICwgbV9oYXNDaGVja3BvaW50cyhjYWNoZWRDb2RlQmxvY2suaGFzQ2hlY2twb2ludHMoKSkK
IAorICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhjYWNoZWRDb2RlQmxvY2subGV4aWNhbFNj
b3BlRmVhdHVyZXMoKSkKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkQ29kZUJsb2NrLmZlYXR1cmVz
KCkpCiAgICAgLCBtX3BhcnNlTW9kZShjYWNoZWRDb2RlQmxvY2sucGFyc2VNb2RlKCkpCiAgICAg
LCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjYWNoZWRDb2RlQmxvY2suY29kZUdlbmVyYXRpb25Nb2Rl
KCkpCiAKICAgICAsIG1fbGluZUNvdW50KGNhY2hlZENvZGVCbG9jay5saW5lQ291bnQoKSkKICAg
ICAsIG1fZW5kQ29sdW1uKGNhY2hlZENvZGVCbG9jay5lbmRDb2x1bW4oKSkKLSAgICAsIG1fbnVt
VmFycyhjYWNoZWRDb2RlQmxvY2subnVtVmFycygpKQotICAgICwgbV9udW1DYWxsZWVMb2NhbHMo
Y2FjaGVkQ29kZUJsb2NrLm51bUNhbGxlZUxvY2FscygpKQotICAgICwgbV9udW1QYXJhbWV0ZXJz
KGNhY2hlZENvZGVCbG9jay5udW1QYXJhbWV0ZXJzKCkpCiAKICAgICAsIG1fc291cmNlVVJMRGly
ZWN0aXZlKGNhY2hlZENvZGVCbG9jay5zb3VyY2VVUkxEaXJlY3RpdmUoZGVjb2RlcikpCiAgICAg
LCBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoY2FjaGVkQ29kZUJsb2NrLnNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoZGVjb2RlcikpCkBAIC0yMTg0LDYgKzIxODcsNyBAQCBBTFdBWVNfSU5M
SU5FIFVubGlua2VkRXZhbENvZGVCbG9jazo6VW5sCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVk
RnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUmIGV4ZWN1dGFibGUpCiB7CiAgICAgbV9tdXRhYmxlTWV0YWRh
dGEubV9mZWF0dXJlcyA9IGV4ZWN1dGFibGUubV9mZWF0dXJlczsKKyAgICBtX211dGFibGVNZXRh
ZGF0YS5tX2xleGljYWxTY29wZUZlYXR1cmVzID0gZXhlY3V0YWJsZS5tX2xleGljYWxTY29wZUZl
YXR1cmVzOwogICAgIG1fbXV0YWJsZU1ldGFkYXRhLm1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgPSBl
eGVjdXRhYmxlLm1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAKICAgICBtX2ZpcnN0TGluZU9mZnNl
dCA9IGV4ZWN1dGFibGUubV9maXJzdExpbmVPZmZzZXQ7CkBAIC0yMjAwLDcgKzIyMDQsNiBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhCiAKICAgICBtX3NvdXJjZVBh
cnNlTW9kZSA9IGV4ZWN1dGFibGUubV9zb3VyY2VQYXJzZU1vZGU7CiAKLSAgICBtX2lzSW5TdHJp
Y3RDb250ZXh0ID0gZXhlY3V0YWJsZS5tX2lzSW5TdHJpY3RDb250ZXh0OwogICAgIG1faXNCdWls
dGluRnVuY3Rpb24gPSBleGVjdXRhYmxlLm1faXNCdWlsdGluRnVuY3Rpb247CiAgICAgbV9pc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGV4ZWN1dGFibGUubV9pc0J1aWx0aW5EZWZh
dWx0Q2xhc3NDb25zdHJ1Y3RvcjsKICAgICBtX2NvbnN0cnVjdEFiaWxpdHkgPSBleGVjdXRhYmxl
Lm1fY29uc3RydWN0QWJpbGl0eTsKQEAgLTIyMzQsNyArMjIzNyw3IEBAIEFMV0FZU19JTkxJTkUg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUKIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImIGRlY29kZXIs
IGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYgY2FjaGVkRXhlY3V0YWJsZSkKICAgICA6
IEJhc2UoZGVjb2Rlci52bSgpLCBkZWNvZGVyLnZtKCkudW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChjYWNoZWRFeGVjdXRh
YmxlLmZpcnN0TGluZU9mZnNldCgpKQotICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChjYWNoZWRF
eGVjdXRhYmxlLmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAgLCBtX2lzR2VuZXJhdGVkRnJvbUNh
Y2hlKHRydWUpCiAgICAgLCBtX2xpbmVDb3VudChjYWNoZWRFeGVjdXRhYmxlLmxpbmVDb3VudCgp
KQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhjYWNoZWRFeGVjdXRhYmxlLmhhc0NhcHR1
cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoY2FjaGVk
RXhlY3V0YWJsZS51bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KCkpCkBAIC0yMjUwLDE2ICsyMjUz
LDE2IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUKICAgICAsIG1f
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0KCkpCiAgICAgLCBtX2lzQ2FjaGVkKGZhbHNlKQogICAgICwgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSkKKyAg
ICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoY2FjaGVkRXhlY3V0YWJsZS5uZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplcigpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KGNh
Y2hlZEV4ZWN1dGFibGUudHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKQogICAgICwgbV9wYXJhbWV0
ZXJDb3VudChjYWNoZWRFeGVjdXRhYmxlLnBhcmFtZXRlckNvdW50KCkpCiAgICAgLCBtX3ByaXZh
dGVCcmFuZFJlcXVpcmVtZW50KGNhY2hlZEV4ZWN1dGFibGUucHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQoKSkKICAgICAsIG1fZmVhdHVyZXMoY2FjaGVkRXhlY3V0YWJsZS5mZWF0dXJlcygpKQotICAg
ICwgbV9zb3VyY2VQYXJzZU1vZGUoY2FjaGVkRXhlY3V0YWJsZS5zb3VyY2VQYXJzZU1vZGUoKSkK
ICAgICAsIG1fY29uc3RydWN0b3JLaW5kKGNhY2hlZEV4ZWN1dGFibGUuY29uc3RydWN0b3JLaW5k
KCkpCisgICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNvdXJjZVBhcnNl
TW9kZSgpKQorICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxlLmxl
eGljYWxTY29wZUZlYXR1cmVzKCkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShjYWNoZWRFeGVjdXRh
YmxlLmZ1bmN0aW9uTW9kZSgpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY2FjaGVkRXhl
Y3V0YWJsZS5kZXJpdmVkQ29udGV4dFR5cGUoKSkKLSAgICAsIG1faXNHZW5lcmF0ZWRGcm9tQ2Fj
aGUodHJ1ZSkKLSAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoY2FjaGVkRXhlY3V0
YWJsZS5uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpKQogICAgICwgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAK
QEAgLTIzMjAsNiArMjMyMyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRDb2RlQmxvY2s8
Q29kZUIKICAgICBtX251bUNhbGxlZUxvY2FscyA9IGNvZGVCbG9jay5tX251bUNhbGxlZUxvY2Fs
czsKICAgICBtX251bVBhcmFtZXRlcnMgPSBjb2RlQmxvY2subV9udW1QYXJhbWV0ZXJzOwogICAg
IG1fZmVhdHVyZXMgPSBjb2RlQmxvY2subV9mZWF0dXJlczsKKyAgICBtX2xleGljYWxTY29wZUZl
YXR1cmVzID0gY29kZUJsb2NrLm1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgbV9wYXJzZU1v
ZGUgPSBjb2RlQmxvY2subV9wYXJzZU1vZGU7CiAgICAgbV9jb2RlR2VuZXJhdGlvbk1vZGUgPSBj
b2RlQmxvY2subV9jb2RlR2VuZXJhdGlvbk1vZGU7CiAgICAgbV9jb2RlVHlwZSA9IGNvZGVCbG9j
ay5tX2NvZGVUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGVudW0g
Y2xhc3MgU291cmNlQ29kZVR5cGU7CiAvLyBjYWNoZSwgc2luY2UgdGhpcyB3aWxsIG9ubHkgYmUg
ZmlsbGVkIGluIHdoZW4gd2UgcGFyc2UgdGhlIGZ1bmN0aW9uCiBzdHJ1Y3QgQ2FjaGVkRnVuY3Rp
b25FeGVjdXRhYmxlTWV0YWRhdGEgewogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOworICAg
IExleGljYWxTY29wZUZlYXR1cmVzIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgYm9vbCBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nywx
MSArODcsOSBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDCiAgICAg
Ym9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKICAgICB1bnNpZ25lZCB1
bmxpbmtlZEVuZENvbHVtbiA9IHJvb3ROb2RlLT5lbmRDb2x1bW4oKTsKICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4gPSB1bmxpbmtlZEVuZENvbHVtbiArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8g
c3RhcnRDb2x1bW4gOiAxKTsKLSAgICB1bnNpZ25lZCBhcnJvd0NvbnRleHRGZWF0dXJlID0gaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCA/IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSA6IDA7CiAg
ICAgaWYgKGV4ZWN1dGFibGUpCi0gICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJvb3RO
b2RlLT5mZWF0dXJlcygpIHwgYXJyb3dDb250ZXh0RmVhdHVyZSwgcm9vdE5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBlbmRDb2x1bW4pOworICAgICAg
ICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMoKSwgcm9vdE5vZGUt
PmxleGljYWxTY29wZUZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCByb290Tm9kZS0+bGFzdExpbmUoKSwgZW5kQ29sdW1uKTsKIAotICAgIEVDTUFNb2RlIGVjbWFN
b2RlID0gcm9vdE5vZGUtPmZlYXR1cmVzKCkgJiBTdHJpY3RNb2RlRmVhdHVyZSA/IEVDTUFNb2Rl
OjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKICAgICBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyOjpObzsKICAgICBQcml2YXRlQnJhbmRSZXF1aXJlbWVudCBwcml2YXRlQnJhbmRSZXF1
aXJlbWVudCA9IFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lX3Y8RXhlY3V0YWJsZVR5cGUsIERpcmVjdEV2YWxFeGVjdXRhYmxlPikg
ewpAQCAtMTAxLDcgKzk5LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlu
a2VkQwogICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKGZhbHNlLCBwcml2YXRlQnJh
bmRSZXF1aXJlbWVudCwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgc2NyaXB0TW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBl
Pjo6cGFyc2VNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKTsKIAog
ICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtlZENv
ZGVCbG9ja1R5cGU6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZUluZm8sIGNvZGVHZW5lcmF0aW9uTW9k
ZSk7Ci0gICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJl
cygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtl
ZEVuZENvbHVtbik7CisgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJvb3ROb2Rl
LT5mZWF0dXJlcygpLCByb290Tm9kZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgcm9vdE5vZGUt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRFbmRDb2x1bW4pOwog
ICAgIGlmICghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgp
KQogICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CiAgICAgaWYgKCFzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQpAQCAtMTEwLDcg
KzEwOCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZEMKICAgICBS
ZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiBwYXJlbnRWYXJpYWJsZXNVbmRlclREWjsKICAgICBp
ZiAodmFyaWFibGVzVW5kZXJURFopCiAgICAgICAgIHBhcmVudFZhcmlhYmxlc1VuZGVyVERaID0g
VERaRW52aXJvbm1lbnRMaW5rOjpjcmVhdGUodm0ubV9jb21wYWN0VmFyaWFibGVNYXAtPmdldCgq
dmFyaWFibGVzVW5kZXJURFopLCBudWxscHRyKTsKLSAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVO
YW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9IEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSh2bSwgcm9vdE5vZGUuZ2V0KCksIHNvdXJjZSwgdW5saW5rZWRDb2RlQmxvY2ss
IGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50VmFyaWFibGVzVW5kZXJURFosIHByaXZhdGVOYW1l
RW52aXJvbm1lbnQpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNjcsNyArMTY1LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2Rl
Q2FjaGU6OmdldFVubAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHVubGlua2VkQ29k
ZUJsb2NrLT5zdGFydENvbHVtbigpICsgc291cmNlLnN0YXJ0Q29sdW1uKCkub25lQmFzZWRJbnQo
KTsKICAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKICAg
ICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdW5saW5rZWRDb2RlQmxvY2stPmVuZENvbHVtbigp
ICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwotICAgICAgICBl
eGVjdXRhYmxlLT5yZWNvcmRQYXJzZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZUZlYXR1cmVzKCks
IHVubGlua2VkQ29kZUJsb2NrLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBzb3VyY2UuZmlyc3RM
aW5lKCkub25lQmFzZWRJbnQoKSArIGxpbmVDb3VudCwgZW5kQ29sdW1uKTsKKyAgICAgICAgZXhl
Y3V0YWJsZS0+cmVjb3JkUGFyc2UodW5saW5rZWRDb2RlQmxvY2stPmNvZGVGZWF0dXJlcygpLCB1
bmxpbmtlZENvZGVCbG9jay0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgdW5saW5rZWRDb2RlQmxv
Y2stPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZElu
dCgpICsgbGluZUNvdW50LCBlbmRDb2x1bW4pOwogICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxv
Y2stPnNvdXJjZVVSTERpcmVjdGl2ZSgpKQogICAgICAgICAgICAgc291cmNlLnByb3ZpZGVyKCkt
PnNldFNvdXJjZVVSTERpcmVjdGl2ZSh1bmxpbmtlZENvZGVCbG9jay0+c291cmNlVVJMRGlyZWN0
aXZlKCkpOwogICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnNvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFNb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQU1vZGUu
aAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNN
QU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgRUNNQU1vZGUg
ewogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBFQ01BTW9kZSBmcm9tQnl0ZSh1aW50
OF90IGJ5dGUpIHsgcmV0dXJuIEVDTUFNb2RlKGJ5dGUpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBFQ01BTW9kZSBmcm9tQm9vbChib29sIGlzU3RyaWN0KSB7IHJldHVybiBpc1N0cmljdCA/IHN0
cmljdCgpIDogc2xvcHB5KCk7IH0KICAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHN0cmlj
dCgpIHsgcmV0dXJuIEVDTUFNb2RlKFN0cmljdE1vZGUpOyB9CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBFQ01BTW9kZSBzbG9wcHkoKSB7IHJldHVybiBFQ01BTW9kZShTbG9wcHlNb2RlKTsgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxl
OjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0
YWJsZSkgfTsKIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1
bmxpbmtlZEV4ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJblN0
cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwg
ZmFsc2UsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiB8fCAhdW5saW5rZWRFeGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBpbnRyaW5zaWMpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
dm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCB1
bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSwgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uIHx8ICF1bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigp
LCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIGludHJpbnNpYykKICAgICAsIG1fdW5saW5rZWRFeGVj
dXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIXNvdXJjZS5pc051bGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HbG9iYWxFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxhc3RMaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0TGluZTsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIG1fZW5kQ29sdW1uOyB9CiAKLSAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgaW50IGxhc3RMaW5lLCB1bnNp
Z25lZCBlbmRDb2x1bW4pCisgICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0Nh
cHR1cmVkVmFyaWFibGVzLCBpbnQgbGFzdExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikKICAgICB7
Ci0gICAgICAgIEJhc2U6OnJlY29yZFBhcnNlKGZlYXR1cmVzLCBoYXNDYXB0dXJlZFZhcmlhYmxl
cyk7CisgICAgICAgIEJhc2U6OnJlY29yZFBhcnNlKGZlYXR1cmVzLCBsZXhpY2FsU2NvcGVGZWF0
dXJlcywgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpOwogICAgICAgICBtX2xhc3RMaW5lID0gbGFzdExp
bmU7CiAgICAgICAgIG1fZW5kQ29sdW1uID0gZW5kQ29sdW1uOwogICAgICAgICBBU1NFUlQoZW5k
Q29sdW1uICE9IFVJTlRfTUFYKTsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgR2xvYmFsRXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9u
Q29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBl
dmFsQ29udGV4dFR5cGUsIEludHJpbnNpYyBpbnRyaW5zaWMpCi0gICAgICAgIDogQmFzZShzdHJ1
Y3R1cmUsIHZtLCBzb3VyY2VDb2RlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRU
eXBlLCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwg
ZXZhbENvbnRleHRUeXBlLCBpbnRyaW5zaWMpCisgICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIHZt
LCBzb3VyY2VDb2RlLCBpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVMZXhpY2FsRmVhdHVy
ZSA6IE5vTGV4aWNhbEZlYXR1cmVzLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0
aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIGlu
dHJpbnNpYykKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjc4NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDExICs0NiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIFNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFibGUiLCAm
RXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTY3JpcHRFeGVjdXRhYmxlKSB9OwogCi1TY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVj
dXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBJbnRyaW5z
aWMgaW50cmluc2ljKQorU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIExleGljYWxT
Y29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIElu
dHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlKQog
ICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9pbnRyaW5zaWMoaW50cmluc2ljKQotICAg
ICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkK
KyAgICAsIG1fZmVhdHVyZXMoTm9GZWF0dXJlcykKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVy
ZXMobGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZh
bHNlKQogICAgICwgbV9uZXZlcklubGluZShmYWxzZSkKICAgICAsIG1fbmV2ZXJPcHRpbWl6ZShm
YWxzZSkKQEAgLTMyOCw2ICszMjksNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5l
d0NvZGVCbG9jCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVj
b3JkUGFyc2UoCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0
dXJlcygpLCAKKyAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmxleGlj
YWxTY29wZUZlYXR1cmVzKCksCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRh
YmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLAogICAgICAgICBsYXN0TGluZSgpLCBlbmRDb2x1
bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKQEAgLTUyMiwxNSArNTI0LDE1
IEBAIHVuc2lnbmVkIFNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmcKICAgICByZXR1cm4g
c291cmNlKCkubGVuZ3RoKCkgLSAxOwogfQogCi12b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnJlY29y
ZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywg
aW50IGxhc3RMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pCit2b2lkIFNjcmlwdEV4ZWN1dGFibGU6
OnJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMg
bGV4aWNhbFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBsYXN0
TGluZSwgdW5zaWduZWQgZW5kQ29sdW1uKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAg
Y2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOgogICAgICAgICAvLyBTaW5jZSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBob2xkcyB0aGUgaW5mb3JtYXRpb24gdG8gY2FsY3VsYXRlIGxhc3RM
aW5lIGFuZCBlbmRDb2x1bW4sIHdlIGRvIG5vdCBuZWVkIHRvIHJlbWVtYmVyIHRoZW0gaW4gU2Ny
aXB0RXhlY3V0YWJsZSdzIGZpZWxkcy4KLSAgICAgICAganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KHRoaXMpLT5yZWNvcmRQYXJzZShmZWF0dXJlcywgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpOwor
ICAgICAgICBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPnJlY29yZFBhcnNlKGZl
YXR1cmVzLCBsZXhpY2FsU2NvcGVGZWF0dXJlcywgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKLSAgICAgICAganNDYXN0PEdsb2JhbEV4ZWN1dGFi
bGUqPih0aGlzKS0+cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBs
YXN0TGluZSwgZW5kQ29sdW1uKTsKKyAgICAgICAganNDYXN0PEdsb2JhbEV4ZWN1dGFibGUqPih0
aGlzKS0+cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGxleGljYWxTY29wZUZlYXR1cmVzLCBoYXNDYXB0
dXJlZFZhcmlhYmxlcywgbGFzdExpbmUsIGVuZENvbHVtbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29u
dGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogICAgIEV2YWxDb250ZXh0VHlwZSBl
dmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmFsQ29udGV4dFR5
cGU+KG1fZXZhbENvbnRleHRUeXBlKTsgfQotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KKyAgICBib29s
IGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJl
cyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsgfQogICAgIGJvb2wgdXNlc05vblNpbXBsZVBh
cmFtZXRlckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgTm9uU2ltcGxlUGFyYW1l
dGVyTGlzdEZlYXR1cmU7IH0KIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkg
eyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgdm9pZCByZWNvcmRQYXJzZShD
b2RlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBsYXN0TGluZSwgdW5z
aWduZWQgZW5kQ29sdW1uKTsKKyAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcywgTGV4
aWNhbFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBsYXN0TGlu
ZSwgdW5zaWduZWQgZW5kQ29sdW1uKTsKICAgICB2b2lkIGluc3RhbGxDb2RlKENvZGVCbG9jayop
OwogICAgIHZvaWQgaW5zdGFsbENvZGUoVk0mLCBDb2RlQmxvY2sqLCBDb2RlVHlwZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCk7CiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2tGb3IoQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBFeGNlcHRpb24qJik7CkBA
IC0xMjgsMTEgKzEyOCwxMiBAQCBwcml2YXRlOgogICAgIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1
cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0
YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0
LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlLCBJbnRyaW5z
aWMpOworICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgTGV4aWNhbFNjb3BlRmVhdHVyZXMsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0lu
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFs
Q29udGV4dFR5cGUsIEludHJpbnNpYyk7CiAKLSAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKKyAgICB2b2lkIHJlY29y
ZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNh
bFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgewogICAgICAg
ICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CisgICAgICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMg
PSBsZXhpY2FsU2NvcGVGZWF0dXJlczsKICAgICAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9
IGhhc0NhcHR1cmVkVmFyaWFibGVzOwogICAgIH0KIApAQCAtMTQyLDYgKzE0Myw3IEBAIHByb3Rl
Y3RlZDoKICAgICBJbnRyaW5zaWMgbV9pbnRyaW5zaWMgeyBOb0ludHJpbnNpYyB9OwogICAgIGJv
b2wgbV9kaWRUcnlUb0VudGVySW5Mb29wIHsgZmFsc2UgfTsKICAgICBDb2RlRmVhdHVyZXMgbV9m
ZWF0dXJlczsKKyAgICB1bnNpZ25lZCBtX2xleGljYWxTY29wZUZlYXR1cmVzIDogNDsKICAgICBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZUZvckdlbmVy
YXRvckJvZHk7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29s
IG1fbmV2ZXJJbmxpbmUgOiAxOwo=
</data>
<flag name="commit-queue"
          id="451970"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430507</attachid>
            <date>2021-06-03 15:24:59 -0700</date>
            <delta_ts>2021-06-07 18:43:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224072-20210604005736-2.patch</filename>
            <type>text/plain</type>
            <size>90778</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4NDIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBA
QAorMjAyMS0wNi0wMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgSW50cm9kdWNlIExleGljYWxTY29wZUZlYXR1cmVzIHRvIGVuYWJsZSBmdXR1cmUg
Ynl0ZWNvZGUgb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVy
LgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBCeXRlY29kZUdlbmVyYXRvciB3YXMgY2Fw
YWJsZSBvZiByZWFzb25pbmcgYWJvdXQgdGhlIHByZXNlbmNlIG9mIGB3aXRoYAorICAgICAgICBz
dGF0ZW1lbnRzLCBkaXJlY3QgYGV2YWxgLCBvciBhbnkgb3RoZXIgY29kZSBmZWF0dXJlcyBvbmx5
IHdpdGhpbiB0aGUgY3VycmVudCBleGVjdXRhYmxlOgorCisgICAgICAgICAgICBgYGAKKyAgICAg
ICAgICAgIHdpdGggKGZvbykgeworICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHdheSB0byBkZXRlY3QgV2l0aFNjb3BlIGR1
cmluZyBnZW5lcmF0aW9uIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgfSkoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGBgYAorCisgICAgICAgIFRoaXMgY2hhbmdlIGlz
IHJlcXVpcmVkIGZvciBvcF90b190aGlzIHJld3JpdGUgKCMyMjUzOTcpOiBpZiBGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZSBhbmQKKyAgICAgICAgZnJpZW5kcyBrbmV3IHRoZXJlIGlzIG5vIFdpdGhT
Y29wZSwgb3BfY2FsbCBjb3VsZCBiZSBlbWl0dGVkIHdpdGggfHRoaXN8IHZhbHVlIG9mCisgICAg
ICAgIGB1bmRlZmluZWRgIGFzIHBlciBzcGVjIFsxXSwgaW5zdGVhZCBvZiByZXNvbHZlZCBzY29w
ZS4gVGhpcyB3b3VsZDoKKyAgICAgICAgICAtIHNpbXBsaWZ5IG9wX3RvX3RoaXMgb24gYWxsIHRp
ZXJzLCBsaWtlbHkgcmVzdWx0aW5nIGluIG1pbm9yIHBlcmYgYm9vc3Q7CisgICAgICAgICAgLSBz
YXZlIDEgaW5zdHJ1Y3Rpb24gcGVyIHN0cmljdCBmdW5jdGlvbiBieSByZW1vdmluZyBvcF90b190
aGlzOworICAgICAgICAgIC0gcmVtb3ZlIHRvVGhpcygpIGZyb20gdGhlIG1ldGhvZCB0YWJsZSBh
bmQgfjMwIGl0cyBjYWxsIHNpdGVzIGZyb20gYnVpbHQtaW5zOworICAgICAgICAgIC0gZml4IGJ1
aWx0LWluIG1ldGhvZHMgdGhhdCB3ZXJlIG9ic2VydmFibHkgbGFja2luZyB0b1RoaXMoKTsKKyAg
ICAgICAgICAtIGZpeCBfX3Byb3RvX18gZ2V0dGVyIC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9iYWwg
c2NvcGU7CisgICAgICAgICAgLSBmaXggV2ViSURMIGFjY2Vzc29ycyBjYWxsZWQgd2l0aCB8dGhp
c3wgdmFsdWUgb2YgYHVuZGVmaW5lZGAgYW5kIGBudWxsYC4KKworICAgICAgICBBbHNvLCBpZiBS
ZXNvbHZlTm9kZSBrbmV3IHRoYXQgdW5mb3JnZWFibGUgZ2xvYmFsIHByb3BlcnRpZXMgYXJlIG5v
dCBzaGFkb3dlZCBhbmQgdGhlcmUKKyAgICAgICAgaXMgbm8gYHdpdGhgIHN0YXRlbWVudCBvciBz
bG9wcHkgbW9kZSBkaXJlY3QgYGV2YWxgLCB0aGVuIGB1bmRlZmluZWRgIC8gYEluZmluaXR5YCAv
IGBOYU5gCisgICAgICAgIGxvb2t1cHMgY291bGQgYmUgY29uc3RhbnQtZm9sZGVkLiBUaGlzIHdv
dWxkIHNhdmUgdXAgdG8gMyBieXRlY29kZSBvcHMgcGVyIGVhY2ggdXNhZ2UKKyAgICAgICAgYW5k
IGFsbG93IGVtaXR0aW5nIG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsIGZvciBgeCA9PT0gdW5kZWZp
bmVkIHx8IHggPT09IG51bGxgLgorICAgICAgICBWOCBwZXJmb3JtcyB0aGlzIG9wdGltaXphdGlv
biBbMl0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIExleGljYWxTY29wZUZlYXR1
cmVzIHRvIGFsbG93IHBhc3Npbmcgc3VjaCBpbmZvcm1hdGlvbiBmcm9tIFBhcnNlcgorICAgICAg
ICB0byBCeXRlY29kZUdlbmVyYXRvciB3aXRoIGEgbWluaW1hbCBjb2RlIGRpZmYuIFRoZXNlIGZl
YXR1cmVzIGFyZSBrZXB0IHNlcGFyYXRlIGZyb20KKyAgICAgICAgQ29kZUZlYXR1cmUgdG8gc2lt
cGxpZnkgcmVhc29uaW5nIGFib3V0IGZlYXR1cmUncyBzY29wZSBhbmQgYmVjYXVzZSB3ZSBuZWVk
IHRvIHByb3BhZ2F0ZQorICAgICAgICBsZXhpY2FsIGZlYXR1cmVzIGZyb20gcGFyZW50IHRvIGNo
aWxkIHNjb3BlLgorCisgICAgICAgIFN0cmljdCBtb2RlIGlzIHRoZSBmaXJzdCB1c2UgY2FzZSBv
ZiBMZXhpY2FsU2NvcGVGZWF0dXJlcywgd2hpY2ggdGhpcyBjaGFuZ2UgY2FyZWZ1bGx5CisgICAg
ICAgIGZpdHMgaW50byBleGlzdGluZyBhYnN0cmFjdGlvbnMgd2l0aG91dCBpbmNyZWFzaW5nIHRo
ZWlyIG1lbW9yeSB1c2FnZSBldmVuIGJ5IDEgYnl0ZS4KKworICAgICAgICBbMV06IGh0dHBzOi8v
dGMzOS5lcy9lY21hMjYyLyNzZWMtZXZhbHVhdGVjYWxsIChzdGVwIDIpCisgICAgICAgIFsyXTog
aHR0cHM6Ly9tZWRpdW0uY29tL0BibWV1cmVyL3NvbWV0aW1lcy11bmRlZmluZWQtaXMtZGVmaW5l
ZC03NzAxZTFjOWVmZjgKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpsZXhpY2Fs
U2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3Q2xhc3NGaWVsZEluaXRpYWxpemVyRnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6bGV4aWNhbFNjb3BlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6
RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5vZGU6
OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5v
ZGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9k
ZTo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2Rl
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjps
ZXhpY2FsU2NvcGVGZWF0dXJlcyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6aXNTdHJpY3RN
b2RlIGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpsZXhpY2FsU2NvcGVGZWF0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTdHJpY3RNb2RlKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OnN0cmljdE1vZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6
ZmlsbFBhcmFtZXRlcnNGb3JTb3VyY2VQcm92aWRlckNhY2hlKToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6cHVzaFNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsZXhpY2FsU2NvcGVGZWF0dXJl
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpsZXhpY2Fs
U2NvcGVGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENo
ZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRh
ZGF0YSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRCeXRlY29kZS5jcHA6CisgICAgICAgIChK
U0M6OkNhY2hlZEJ5dGVjb2RlOjphZGRGdW5jdGlvblVwZGF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bGV4aWNhbFNjb3BlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRDb2Rl
QmxvY2s6OmxleGljYWxTY29wZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVu
Y3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRDb2RlQmxvY2s8Q29kZUJsb2NrVHlwZT46OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNJblN0cmljdENvbnRleHQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBs
KToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbENvZGVCbG9jayk6
CisgICAgICAgICogcnVudGltZS9FQ01BTW9kZS5oOgorICAgICAgICAoSlNDOjpFQ01BTW9kZTo6
ZnJvbUJvb2wpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2xvYmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpHbG9iYWxF
eGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgIChKU0M6Okdsb2JhbEV4ZWN1dGFibGU6
Okdsb2JhbEV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAg
ICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpyZWNvcmRQYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omlz
SW5TdHJpY3RDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
cmVjb3JkUGFyc2UpOgorCiAyMDIxLTA2LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ29jb2FdIGBSZW1vdGVJbnNwZWN0b3Jg
IHdvbid0IGNvbm5lY3QgdG8gYSBuZXcgcmVsYXkgaWYgaXQgaGFzbid0IHlldCBmYWlsZWQgdG8g
Y29tbXVuaWNhdGUgd2l0aCBhIHByZXZpb3VzbHkgY29ubmVjdGVkIHJlbGF5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAKICAgICBGdW5jdGlv
bk1ldGFkYXRhTm9kZSBtZXRhZGF0YSgKICAgICAgICAgc3RhcnQsIGVuZCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgc291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBmdW5jdGlvbktleXdvcmRTdGFydCwg
c291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBmdW5jdGlvbk5hbWVTdGFydCwgc291cmNlLnN0YXJ0T2Zm
c2V0KCkgKyBwYXJhbWV0ZXJzU3RhcnQsCi0gICAgICAgIGlzSW5TdHJpY3RDb250ZXh0LCBjb25z
dHJ1Y3RvcktpbmQsIGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMg
PyBTdXBlckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAorICAgICAg
ICBpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZSA6IE5vTGV4aWNh
bEZlYXR1cmVzLCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkV4dGVuZHMgPyBTdXBlckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLAogICAgICAgICBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBtZXRhZGF0YS5maW5pc2hQYXJzaW5nKG5ld1NvdXJj
ZSwgSWRlbnRpZmllcigpLCBGdW5jdGlvbk1vZGU6OkZ1bmN0aW9uRXhwcmVzc2lvbik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEx
IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZENvZGVCbG9jazo6c19pbmYKIAogVW5saW5rZWRD
b2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQorICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX3VzZXNDYWxsRXZhbChmYWxz
ZSkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxzKDApCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5m
by5pc0NvbnN0cnVjdG9yKCkpCisgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8u
aXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAyNzg0MjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjQyLDkgKzI0MiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHR5
cGVQcm9maWxlckV4cHJlc3Npb25JbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIHVuc2lnbmVkJiBzdGFydERpdm90LCB1bnNpZ25lZCYgZW5kRGl2b3QpOwogCi0g
ICAgdm9pZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMsIHVuc2lnbmVkIGxpbmVDb3VudCwgdW5zaWduZWQgZW5kQ29sdW1uKQorICAg
IHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0
dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgdW5z
aWduZWQgbGluZUNvdW50LCB1bnNpZ25lZCBlbmRDb2x1bW4pCiAgICAgewogICAgICAgICBtX2Zl
YXR1cmVzID0gZmVhdHVyZXM7CisgICAgICAgIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBsZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGhhc0Nh
cHR1cmVkVmFyaWFibGVzOwogICAgICAgICBtX2xpbmVDb3VudCA9IGxpbmVDb3VudDsKICAgICAg
ICAgLy8gRm9yIHRoZSBVbmxpbmtlZENvZGVCbG9jaywgc3RhcnRDb2x1bW4gaXMgYWx3YXlzIDAu
CkBAIC0yNTcsNiArMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwpIHsgbV9zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTC5pbXBsKCk7IH0KIAogICAgIENvZGVG
ZWF0dXJlcyBjb2RlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CisgICAg
TGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxMZXhpY2FsU2NvcGVGZWF0dXJlcz4obV9sZXhpY2FsU2NvcGVGZWF0dXJl
cyk7IH0KICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNDYXB0dXJlZFZhcmlhYmxlczsgfQogICAgIHVuc2lnbmVkIGxpbmVDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUNvdW50OyB9CiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTM2OCw5ICszNzAsMTMgQEAgcHJpdmF0ZToK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fc2NvcGVSZWdpc3RlcjsKIAorICAgIHVuc2lnbmVkIG1fbnVtVmFycyA6IDMxOwogICAgIHVu
c2lnbmVkIG1fdXNlc0NhbGxFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX251bUNhbGxlZUxvY2Fs
cyA6IDMxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgdW5zaWduZWQg
bV9udW1QYXJhbWV0ZXJzIDogMzE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CisKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNp
Z25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9zY3JpcHRNb2RlOiAxOwpA
QCAtMzg1LDYgKzM5MSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9hZ2UgOiAzOwogICAg
IHN0YXRpY19hc3NlcnQoKCgxVSA8PCAzKSAtIDEpID49IG1heEFnZSk7CiAgICAgYm9vbCBtX2hh
c0NoZWNrcG9pbnRzIDogMTsKKyAgICB1bnNpZ25lZCBtX2xleGljYWxTY29wZUZlYXR1cmVzIDog
NDsKIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKIHByaXZhdGU6CkBAIC0z
OTUsMTAgKzQwMiw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQgeyAwIH07
CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW4geyBVSU5UX01BWCB9OwogCi0gICAgdW5zaWduZWQg
bV9udW1WYXJzIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fbnVtQ2FsbGVlTG9jYWxzIHsgMCB9Owot
ICAgIHVuc2lnbmVkIG1fbnVtUGFyYW1ldGVycyB7IDAgfTsKLQogICAgIFBhY2tlZFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsKICAgICBQYWNrZWRSZWZQdHI8U3RyaW5n
SW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYQog
ICAgIH0KIAogICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwotICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNl
KGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
CisgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0
aW9uLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSk7CiAKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+c3VwZXJCaW5k
aW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCkBAIC03Myw4
ICs3Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmEKIAogICAg
IGF1dG8gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMgPSBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpOwogICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBhcmVudFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgPSBleGVjdXRhYmxlLT5wYXJlbnRQcml2YXRlTmFtZUVudmly
b25tZW50KCk7Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0
Q29udGV4dCgpID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwotICAg
IGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCBmdW5jdGlvbi5nZXQoKSwg
c291cmNlLCByZXN1bHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2RlKTsKKyAgICBlcnJvciA9
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSh2bSwgZnVuY3Rpb24uZ2V0KCksIHNvdXJjZSwg
cmVzdWx0LCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBwYXJl
bnRQcml2YXRlTmFtZUVudmlyb25tZW50KTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODUsNyArODQsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4gcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmly
c3RMaW5lKCkgLSBwYXJlbnRTb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSkKLSAgICAs
IG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKKyAgICAsIG1f
aXNHZW5lcmF0ZWRGcm9tQ2FjaGUoZmFsc2UpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0
TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
KGZhbHNlKQogICAgICwgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0KG5vZGUtPmZ1bmN0aW9u
TmFtZVN0YXJ0KCkgLSBwYXJlbnRTb3VyY2Uuc3RhcnRPZmZzZXQoKSkKQEAgLTEwMSwxNiArMTAw
LDE2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1f
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KG5vZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV9p
c0NhY2hlZChmYWxzZSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KG5vZGUtPmZ1
bmN0aW9uS2V5d29yZFN0YXJ0KCkpCisgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpCiAgICAg
LCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9k
ZS0+c291cmNlKCkubGVuZ3RoKCkgLSAxKQogICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5w
YXJhbWV0ZXJDb3VudCgpKQogICAgICwgbV9wcml2YXRlQnJhbmRSZXF1aXJlbWVudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQpKQogICAgICwgbV9mZWF0dXJl
cygwKQotICAgICwgbV9zb3VyY2VQYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBt
X2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JL
aW5kKCkpKQorICAgICwgbV9zb3VyY2VQYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCisgICAg
LCBtX2xleGljYWxTY29wZUZlYXR1cmVzKG5vZGUtPmxleGljYWxTY29wZUZlYXR1cmVzKCkpCiAg
ICAgLCBtX2Z1bmN0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlcml2ZWRDb250ZXh0VHlwZSkpCi0gICAgLCBtX2lzR2VuZXJhdGVkRnJvbUNhY2hlKGZhbHNl
KQotICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9j
a0ZvckNhbGwoKQogICAgICwgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCgpCiAgICAg
LCBtX25hbWUobm9kZS0+aWRlbnQoKSkKQEAgLTI5MCw3ICsyODksNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVuCiAKIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpCiB7Ci0gICAgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7
CisgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSBJTlQzMl9NQVg7CiAgICAgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjc4NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgICAgICBlbnN1
cmVSYXJlRGF0YSgpLm1fY2xhc3NTb3VyY2UgPSBzb3VyY2U7CiAgICAgfQogCi0gICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
KyAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2Nv
cGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsgfQogICAgIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+
KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQpAQCAtMTM0LDEz
ICsxMzQsMTUgQEAgcHVibGljOgogICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogCi0gICAgdm9pZCByZWNvcmRQYXJzZShD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCisgICAgdm9p
ZCByZWNvcmRQYXJzZShDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVz
IGxleGljYWxTY29wZUZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQogICAgIHsK
ICAgICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOworICAgICAgICBtX2xleGljYWxTY29wZUZl
YXR1cmVzID0gbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMgPSBoYXNDYXB0dXJlZFZhcmlhYmxlczsKICAgICB9CiAKLSAgICBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzOyB9CisgICAgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29kZUZlYXR1cmVzPihtX2Zl
YXR1cmVzKTsgfQorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGV4aWNhbFNjb3BlRmVhdHVyZXM+KG1fbGV4
aWNhbFNjb3BlRmVhdHVyZXMpOyB9CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0KIAogICAgIFByaXZhdGVCcmFu
ZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ+KG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQpOyB9CkBAIC0yNTQsNyArMjU2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBtX2ZpcnN0TGluZU9mZnNldCA6IDMxOwotICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRl
eHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNHZW5lcmF0ZWRGcm9tQ2FjaGUgOiAxOwogICAgIHVu
c2lnbmVkIG1fbGluZUNvdW50IDogMzE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlh
YmxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0IDogMzE7
CkBAIC0yNjksMTcgKzI3MSwxNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5k
aW5nIDogMTsKICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9mZnNldCA6IDMxOwogICAg
IHVuc2lnbmVkIG1faXNDYWNoZWQgOiAxOwotICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0IDogMzE7
CisgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiAgICAgdW5z
aWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVy
Q291bnQgOiAzMTsKICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZFJlcXVpcmVtZW50IDogMTsK
LSAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKLSAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3Vy
Y2VQYXJzZU1vZGU7CisgICAgdW5zaWduZWQgbV9mZWF0dXJlcyA6IDE0OwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9zb3VyY2VQYXJz
ZU1vZGU7CisgICAgdW5zaWduZWQgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA6IDQ7CiAgICAgdW5z
aWduZWQgbV9mdW5jdGlvbk1vZGUgOiAyOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1bnNpZ25lZCBt
X2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKLSAgICB1bnNpZ25lZCBtX2lzR2VuZXJhdGVkRnJvbUNh
Y2hlIDogMTsKLSAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsK
IAogICAgIHVuaW9uIHsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAg
UGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgIHJldHVybiBQYXJz
ZXJFcnJvcihQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKIH0KIAotQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9u
TW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5r
PiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQq
LCBFQ01BTW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KikKICAgICA6IEJ5dGVjb2Rl
R2VuZXJhdG9yQmFzZShtYWtlVW5pcXVlPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPih2bSwg
Y29kZUJsb2NrKSwgQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCkpCiAgICAgLCBtX2NvZGVHZW5lcmF0aW9uTW9kZShjb2RlR2VuZXJhdGlv
bk1vZGUpCiAgICAgLCBtX3Njb3BlTm9kZShwcm9ncmFtTm9kZSkKQEAgLTMwMiw3ICszMDIsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGZhbHNlKQogICAgICwgbV9pblRhaWxQb3NpdGlvbihmYWxzZSkKICAgICAs
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJy
b3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQotICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKKyAgICAsIG1fZWNtYU1vZGUoRUNNQU1vZGU6OmZyb21Cb29sKHByb2dyYW1O
b2RlLT5pc1N0cmljdE1vZGUoKSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKIApAQCAtMzM2LDcgKzMzNiw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICB9CiB9CiAK
LUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
dGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVm
UHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQ
cml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01B
TW9kZSBlY21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVu
dmlyb25tZW50KQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdl
bmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGZ1bmN0
aW9uTm9kZSkKQEAgLTM0Niw3ICszNDYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHBy
ZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2Nr
LT5pc0J1aWx0aW5GdW5jdGlvbigpKQotICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmdW5jdGlv
bk5vZGUtPnVzZXNFdmFsKCkgJiYgIWVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgLCBtX3VzZXNO
b25TdHJpY3RFdmFsKGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSAmJiAhZnVuY3Rpb25Ob2RlLT5p
c1N0cmljdE1vZGUoKSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSB0
YWlsIGNhbGwgZWxpbWluYXRpb24gd2l0aCB0aGUgcHJvZmlsZXIKICAgICAvLyBlbmFibGVkLiBU
aGlzIGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUgYmVjYXVzZSB0aGUgcHJvZmlsZXIgZXhwZWN0
cwogICAgIC8vIG9wX3dpbGxfY2FsbCAvIG9wX2RpZF9jYWxsIHBhaXJzIGJlZm9yZSBhbmQgYWZ0
ZXIgYSBjYWxsLCB3aGljaCBhcmUgbm90CkBAIC0zNTQsMTEgKzM1NCwxMiBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgIC8vCiAgICAgLy8gTm90ZSB0aGF0IHdl
IGludGVudGlvbmFsbHkgZW5hYmxlIHRhaWwgY2FsbCBmb3IgbmFrZWQgY29uc3RydWN0b3JzIHNp
bmNlIGl0IGRvZXMgbm90IGhhdmUgc3BlY2lhbCBjb2RlIGZvciAicmV0dXJuIi4KLSAgICAsIG1f
aW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3Io
KSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKKyAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6dXNlVGFpbENh
bGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUgJiYgZnVuY3Rpb25Ob2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1f
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93
RnVuY3Rpb24oKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2Rl
KGVjbWFNb2RlKQorICAgICwgbV9lY21hTW9kZShFQ01BTW9kZTo6ZnJvbUJvb2woZnVuY3Rpb25O
b2RlLT5pc1N0cmljdE1vZGUoKSkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxv
Y2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogeworICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9l
Y21hTW9kZTsKICAgICBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKHBhcmVudFByaXZhdGVOYW1lRW52
aXJvbm1lbnQpOwogCiAgICAgU3ltYm9sVGFibGUqIGZ1bmN0aW9uU3ltYm9sVGFibGUgPSBTeW1i
b2xUYWJsZTo6Y3JlYXRlKG1fdm0pOwpAQCAtODQ0LDcgKzg0NSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVO
b2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7
CiB9CiAKLUJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxO
b2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlvblNl
dDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRyPFRE
WkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50LCBFQ01BTW9kZSBl
Y21hTW9kZSkKK0J5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2
YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wdGlv
blNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgY29uc3QgUmVmUHRy
PFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBjb25zdCBQcml2
YXRlTmFtZUVudmlyb25tZW50KiBwYXJlbnRQcml2YXRlTmFtZUVudmlyb25tZW50KQogICAgIDog
Qnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlxdWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVH
ZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVOb2RlKGV2YWxOb2RlKQpAQCAtODU0LDEwICs4
NTUsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICwg
bV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2Up
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQotICAgICwgbV91c2VzTm9uU3RyaWN0
RXZhbChldmFsTm9kZS0+dXNlc0V2YWwoKSAmJiAhZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAs
IG1fdXNlc05vblN0cmljdEV2YWwoZXZhbE5vZGUtPnVzZXNFdmFsKCkgJiYgIWV2YWxOb2RlLT5p
c1N0cmljdE1vZGUoKSkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dChldmFsTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSB8fCBldmFsTm9kZS0+dXNlc0V2YWwoKSkKLSAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUp
CisgICAgLCBtX2VjbWFNb2RlKEVDTUFNb2RlOjpmcm9tQm9vbChldmFsTm9kZS0+aXNTdHJpY3RN
b2RlKCkpKQogICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKQEAg
LTkwOSw3ICs5MTAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
CiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246
Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJ
bml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQogCi1CeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3Jh
bU5vZGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrLCBPcHRpb25T
ZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0
ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlIGVjbWFNb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2RlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBjb25zdCBSZWZQdHI8
VERaRW52aXJvbm1lbnRMaW5rPiYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqKQogICAgIDogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlKG1ha2VVbmlx
dWU8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+KHZtLCBjb2RlQmxvY2spLCBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkKICAgICAs
IG1fY29kZUdlbmVyYXRpb25Nb2RlKGNvZGVHZW5lcmF0aW9uTW9kZSkKICAgICAsIG1fc2NvcGVO
b2RlKG1vZHVsZVByb2dyYW1Ob2RlKQpAQCAtOTIyLDcgKzkyMyw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFs
c2UpCiAgICAgLCBtX2luVGFpbFBvc2l0aW9uKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9u
KCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCi0gICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQorICAgICwgbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKTsKIApAQCAtMzI2OSw4ICszMjcwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdDbAogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAgICAgQ29uc3RydWN0QWJpbGl0eSBj
b25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCi0g
ICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbkNsYXNzID0gdHJ1ZTsKLSAgICBGdW5jdGlvbk1l
dGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9jYXRpb24oKSwgSlNU
b2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIGFsd2F5c1N0cmljdEluQ2xhc3MsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgc3VwZXJCaW5kaW5nLCAwLCBwYXJzZU1vZGUsIGZhbHNlKTsKKyAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSBtZXRhZGF0YShwYXJzZXJBcmVuYSgpLCBKU1Rva2VuTG9j
YXRpb24oKSwgSlNUb2tlbkxvY2F0aW9uKCksIDAsIDAsIDAsIDAsIDAsIFN0cmljdE1vZGVMZXhp
Y2FsRmVhdHVyZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBzdXBlckJpbmRpbmcsIDAsIHBhcnNl
TW9kZSwgZmFsc2UpOwogICAgIG1ldGFkYXRhLmZpbmlzaFBhcnNpbmcobV9zY29wZU5vZGUtPnNv
dXJjZSgpLCBJZGVudGlmaWVyKCksIEZ1bmN0aW9uTW9kZTo6TWV0aG9kRGVmaW5pdGlvbik7CiAg
ICAgYXV0byBpbml0aWFsaXplciA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCAmbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNv
bnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJsZXNVbmRlclREWiks
IFdURk1vdmUocGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCksIG5ld0Rlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSk7CiAgICAgaW5pdGlhbGl6ZXItPnNldENsYXNzRmllbGRMb2NhdGlvbnMoV1RG
TW92ZShjbGFzc0ZpZWxkTG9jYXRpb25zKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAy
Nzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOSwxMCArNDA5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiwgUHJvZ3JhbU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29k
ZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25z
dCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwotICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihWTSYsIEZ1bmN0aW9uTm9kZSosIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBP
cHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50
TGluaz4mLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiwgRUNNQU1vZGUpOwotICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcihWTSYsIEV2YWxOb2RlKiwgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9u
bWVudExpbms+JiwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsKLSAg
ICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9ncmFtTm9kZSosIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LCBj
b25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJv
bm1lbnQqLCBFQ01BTW9kZSk7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgUHJvZ3Jh
bU5vZGUqLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mLCBjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50Kik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFZNJiwgRnVuY3Rp
b25Ob2RlKiwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJh
dGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZh
dGVOYW1lRW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBFdmFs
Tm9kZSosIFVubGlua2VkRXZhbENvZGVCbG9jayosIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1v
ZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0IFByaXZhdGVOYW1l
RW52aXJvbm1lbnQqKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoVk0mLCBNb2R1bGVQcm9n
cmFtTm9kZSosIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayosIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+LCBjb25zdCBSZWZQdHI8VERaRW52aXJvbm1lbnRMaW5rPiYsIGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB+Qnl0ZWNvZGVHZW5lcmF0b3Io
KTsKICAgICAgICAgCkBAIC00MjYsNiArNDI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzRXZhbCgpOyB9CiAgICAgICAg
IGJvb2wgdXNlc1RoaXMoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc1RoaXMoKTsg
fQorICAgICAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpOyB9CiAgICAg
ICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnByaXZhdGVCcmFuZFJlcXVpcmVtZW50KCk7IH0KICAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQogICAgICAgICBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnN1cGVyQmluZGluZygpOyB9
CkBAIC00MzMsMTQgKzQzNCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVCbG9jay0+bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKTsgfQogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFVubGlua2VkQ29kZUJsb2NrPgot
ICAgICAgICBzdGF0aWMgUGFyc2VyRXJyb3IgZ2VuZXJhdGUoVk0mIHZtLCBOb2RlKiBub2RlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2ssIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9k
ZSwgY29uc3QgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4mIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiBwcml2YXRlTmFtZUVudmlyb25tZW50
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgc3RhdGljIFBhcnNlckVycm9yIGdlbmVyYXRl
KFZNJiB2bSwgTm9kZSogbm9kZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25N
b2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIGNvbnN0IFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+
JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCog
cHJpdmF0ZU5hbWVFbnZpcm9ubWVudCkKICAgICAgICAgewogICAgICAgICAgICAgTW9ub3Rvbmlj
VGltZSBiZWZvcmU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0
ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQsIGVjbWFNb2Rl
KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVj
b2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9u
TW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHByaXZhdGVOYW1lRW52aXJvbm1lbnQpOwog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsK
IAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGls
ZVRpbWVzKCkpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw3ICs0NjIsNyBAQCBwdWJsaWM6CiAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoCiAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCi0gICAgICAgIGludCBmdW5j
dGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENvbnRleHQs
IAorICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIExl
eGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCAKICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAg
ICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQpAQCAtNDcwLDcgKzQ3MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBl
bmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAg
ICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLAor
ICAgICAgICAgICAgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJC
aW5kaW5nLAogICAgICAgICAgICAgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDIwICsxMTcsMjEgQEAgYm9v
bCBCbG9ja05vZGU6Omhhc0Vhcmx5QnJlYWtPckNvbnRpbnVlKAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZExvY2F0aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKFBh
cnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0
aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCBMZXhpY2FsU2NvcGVGZWF0
dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgLCBQYXJzZXJBcmVuYVJvb3QocGFyc2VyQXJlbmEpCiAgICAgLCBtX3N0YXJ0TGlu
ZU51bWJlcihzdGFydExvY2F0aW9uLmxpbmUpCiAgICAgLCBtX3N0YXJ0U3RhcnRPZmZzZXQoc3Rh
cnRMb2NhdGlvbi5zdGFydE9mZnNldCkKICAgICAsIG1fc3RhcnRMaW5lU3RhcnRPZmZzZXQoc3Rh
cnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCi0gICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29u
dGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKKyAgICAsIG1fZmVhdHVyZXMo
Tm9GZWF0dXJlcykKKyAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVh
dHVyZXMpCiAgICAgLCBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyhOb0lubmVyQXJy
b3dGdW5jdGlvbkZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMoMCkKICAgICAsIG1fc3Rh
dGVtZW50cyhudWxscHRyKQogewogfQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmly
b25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lz
dGVkRnVuY3Rpb25zLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNv
ZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCitTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNr
JiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlx
dWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVz
LCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU3RhdGVtZW50Tm9kZShlbmRMb2NhdGlv
bikKICAgICAsIFBhcnNlckFyZW5hUm9vdChwYXJzZXJBcmVuYSkKICAgICAsIFZhcmlhYmxlRW52
aXJvbm1lbnROb2RlKGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoZnVuY1N0YWNrKSkKQEAgLTEz
OCw2ICsxMzksNyBAQCBTY29wZU5vZGU6OlNjb3BlTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyCiAg
ICAgLCBtX3N0YXJ0U3RhcnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5zdGFydE9mZnNldCkKICAgICAs
IG1fc3RhcnRMaW5lU3RhcnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpCiAg
ICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQorICAgICwgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyhs
ZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICAsIG1faW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1
cmVzKGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcykKICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAsIG1fc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMoV1RGTW92ZShzbG9wcHlNb2Rl
SG9pc3RlZEZ1bmN0aW9ucykpCkBAIC0xNjQsOCArMTY2LDggQEAgYm9vbCBTY29wZU5vZGU6Omhh
c0Vhcmx5QnJlYWtPckNvbnRpbnVlKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5v
ZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9u
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlv
blN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVz
LCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0
YT4mJikKLSAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9j
YXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFj
ayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMp
LCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMp
CitQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1l
bnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRG
dW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlv
bkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4m
JikKKyAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRp
b24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayks
IGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBm
ZWF0dXJlcywgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAg
ICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTE3Myw4ICsxNzUsOCBAQCBQcm9ncmFt
Tm9kZTo6UHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1Nb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9u
bWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYg
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmIG1vZHVsZVNjb3BlRGF0YSkKLSAgICA6
IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJj
ZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxW
YXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywg
aW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCitNb2R1bGVQcm9n
cmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1l
bnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRG
dW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlv
bkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4m
JiBtb2R1bGVTY29wZURhdGEpCisgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9j
YXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RG
TW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lz
dGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGxleGljYWxTY29wZUZlYXR1cmVzLCBpbm5lckFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiAgICAgLCBtX3VzZXNB
d2FpdChmZWF0dXJlcyAmIEF3YWl0RmVhdHVyZSkKQEAgLTE4NCw4ICsxODYsOCBAQCBNb2R1bGVQ
cm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1F
dmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBm
dW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRT
dHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQotICAg
IDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291
cmNlLCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNh
bFZhcmlhYmxlcywgV1RGTW92ZShzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVz
LCBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKK0V2YWxOb2Rl
OjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJp
YWJsZUVudmlyb25tZW50JiB2YXJFbnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFj
aywgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0lt
cGxQdHJTZXQmJiBzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJz
KiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGlj
YWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25D
b2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQorICAgIDogU2NvcGVOb2RlKHBhcnNlckFy
ZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyRW52
aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNhbFZhcmlhYmxlcywgV1RGTW92ZShz
bG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVzLCBsZXhpY2FsU2NvcGVGZWF0dXJl
cywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9CkBAIC0xOTUsMTAgKzE5NywxMCBAQCBFdmFsTm9k
ZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyCiBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6
RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9j
YXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgTGV4
aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMsCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKQogICAgICAgICA6IE5vZGUoZW5kTG9jYXRpb24pCi0gICAgICAgICwg
bV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgLCBtX2xleGlj
YWxTY29wZUZlYXR1cmVzKGxleGljYWxTY29wZUZlYXR1cmVzKQogICAgICAgICAsIG1fc3VwZXJC
aW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKQogICAgICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQog
ICAgICAgICAsIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObykpCkBAIC0yMjAsMTAgKzIyMiwxMCBA
QCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vCiBGdW5jdGlvbk1ldGFk
YXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9u
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKLSAgICBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIExleGljYWxT
Y29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCAKICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKLSAgICAgICAgLCBtX2lz
SW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAsIG1fbGV4aWNhbFNj
b3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVyZXMpCiAgICAgICAgICwgbV9zdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vKSkKQEAgLTI1OCw3ICsyNjAsNyBAQCB2b2lk
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpzZXRFbmRQb3NpdGlvCiBib29sIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wYXJzZU1vZGUgPT0gb3RoZXIubV9wYXJzZU1vZGUKLSAgICAg
ICAgJiYgbV9pc0luU3RyaWN0Q29udGV4dCA9PSBvdGhlci5tX2lzSW5TdHJpY3RDb250ZXh0Cisg
ICAgICAgICYmIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPT0gb3RoZXIubV9sZXhpY2FsU2NvcGVG
ZWF0dXJlcwogICAgICAgICAmJiBtX3N1cGVyQmluZGluZyA9PSBvdGhlci5tX3N1cGVyQmluZGlu
ZwogICAgICAgICAmJiBtX2NvbnN0cnVjdG9yS2luZCA9PSBvdGhlci5tX2NvbnN0cnVjdG9yS2lu
ZAogICAgICAgICAmJiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09IG90aGVyLm1f
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KQEAgLTI4MSw3ICsyODMsNyBAQCBib29sIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvCiB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpkdW1wKFByaW50U3RyZWFtJiBzdHJlYW0pIGNvbnN0CiB7CiAgICAgc3RyZWFtLnByaW50
bG4oIm1fcGFyc2VNb2RlICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3BhcnNlTW9kZSkpOwot
ICAgIHN0cmVhbS5wcmludGxuKCJtX2lzSW5TdHJpY3RDb250ZXh0ICIsIG1faXNJblN0cmljdENv
bnRleHQpOworICAgIHN0cmVhbS5wcmludGxuKCJtX2xleGljYWxTY29wZUZlYXR1cmVzICIsIG1f
bGV4aWNhbFNjb3BlRmVhdHVyZXMpOwogICAgIHN0cmVhbS5wcmludGxuKCJtX3N1cGVyQmluZGlu
ZyAiLCBtX3N1cGVyQmluZGluZyk7CiAgICAgc3RyZWFtLnByaW50bG4oIm1fY29uc3RydWN0b3JL
aW5kICIsIG1fY29uc3RydWN0b3JLaW5kKTsKICAgICBzdHJlYW0ucHJpbnRsbigibV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiAiLCBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KTsKQEAgLTMwNCw4ICszMDYsOCBAQCB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpkdW1wKFBy
aW50U3RyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5j
U3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1
bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVE
YXRhPiYmKQotICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRM
b2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1
bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5j
dGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25z
dGFudHMpCitGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJF
bnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2Rl
SG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIExleGljYWxTY29w
ZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVh
dHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBS
ZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQorICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBz
dGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmly
b25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xv
cHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgbGV4aWNhbFNjb3BlRmVhdHVyZXMs
IGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQog
ICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODk3LDggKzE4OTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgLy8gbmV3IGZvciBhbGxvY2F0aW9uLgogICAgICAgICB1c2luZyBQ
YXJzZXJBcmVuYVJvb3Q6Om9wZXJhdG9yIG5ldzsKIAotICAgICAgICBTY29wZU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRT
dHJpbmdJbXBsUHRyU2V0JiYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIExleGljYWxTY29wZUZlYXR1cmVzKTsKKyAgICAgICAgU2NvcGVOb2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJvbm1l
bnQmLCBGdW5jdGlvblN0YWNrJiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5n
SW1wbFB0clNldCYmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAg
ICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJ
RCgpOyB9CkBAIC0xOTA4LDYgKzE5MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50
IHN0YXJ0TGluZVN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydExpbmVTdGFydE9m
ZnNldDsgfQogCiAgICAgICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIHsgcmV0dXJuIG1fZmVh
dHVyZXM7IH0KKyAgICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVy
ZXMoKSB7IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzOyB9CiAgICAgICAgIElubmVyQXJy
b3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMoKSB7
IHJldHVybiBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsgfQogICAgICAgICBib29s
IGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUFueUZlYXR1cmUoKSB7IHJldHVybiBtX2lubmVy
QXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyAhPSBOb0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVz
OyB9CiAgICAgICAgIGJvb2wgZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlQXJndW1lbnRzKCkg
eyByZXR1cm4gbV9pbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgJiBBcmd1bWVudHNJbm5l
ckFycm93RnVuY3Rpb25GZWF0dXJlOyB9CkBAIC0xOTIwLDcgKzE5MjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMg
JiBFdmFsRmVhdHVyZTsgfQogICAgICAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJl
dHVybiAobV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmUpICYmICEobV9mZWF0dXJlcyAmIFNo
YWRvd3NBcmd1bWVudHNGZWF0dXJlKTsgfQogICAgICAgICBib29sIHVzZXNBcnJvd0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIEFycm93RnVuY3Rpb25GZWF0dXJlOyB9Ci0g
ICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0
cmljdE1vZGVGZWF0dXJlOyB9CisgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsRmVhdHVyZTsg
fQogICAgICAgICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFRo
aXNGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1N1cGVyQ2FsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmVhdHVyZXMgJiBTdXBlckNhbGxGZWF0dXJlOyB9CiAgICAgICAgIGJvb2wgdXNlc1N1cGVy
UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3VwZXJQcm9wZXJ0eUZlYXR1
cmU7IH0KQEAgLTE5NjIsNiArMTk2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CisgICAgICAgIExleGljYWxTY29w
ZUZlYXR1cmVzIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgICAgIElubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcyBtX2lubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKICAgICAg
ICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3Zh
ckRlY2xhcmF0aW9uczsKQEAgLTE5NzIsNyArMTk3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUHJvZ3JhbU5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CisgICAgICAgIFByb2dyYW1Ob2RlKFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZl
YXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMs
IFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpOwogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBl
bmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMTk4Nyw3ICsxOTg5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsTm9kZSBmaW5hbCA6IHB1Ymxp
YyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVu
dHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmly
b25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKTsKKyAg
ICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVu
Y3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJT
ZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgTGV4aWNhbFNjb3BlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47
IH0KQEAgLTIwMDIsNyArMjAwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTW9k
dWxlUHJvZ3JhbU5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CisgICAgICAgIE1vZHVsZVByb2dyYW1O
b2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2sm
JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0
aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxT
Y29wZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpOwogCiAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMjE3MSwx
MyArMjE3MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUoCiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
Ci0gICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhpY2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQsCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAg
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
LCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCi0gICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAg
ICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBMZXhp
Y2FsU2NvcGVGZWF0dXJlcywgCiAgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZywgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsCiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCkBAIC0yMjEwLDcgKzIy
MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRDbGFzc1NvdXJjZShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9jbGFzc1NvdXJjZSA9IHNvdXJjZTsgfQogCiAgICAg
ICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFN0YXJ0T2Zm
c2V0OyB9Ci0gICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGlj
YWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGV4aWNhbFNjb3Bl
RmVhdHVyZXM+KG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMpOyB9CiAgICAgICAgIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3Vw
ZXJCaW5kaW5nKTsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yQW5kTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOyB9CkBAIC0y
MjM2LDcgKzIyMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHVibGlj
OgotICAgICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKKyAgICAgICAgdW5z
aWduZWQgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA6IDQ7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Vw
ZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKQEAgLTIy
NjAsNyArMjI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2Rl
IGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlv
bk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFj
ayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJB
cnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxl
U2NvcGVEYXRhPiYmKTsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYs
IFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIExleGljYWxTY29wZUZlYXR1cmVzLCBJbm5lckFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29w
ZURhdGE+JiYpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOSw4ICszMDksNiBA
QCBFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyCiAgICAgfQogCiAgICAg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwotICAgIGlmIChzY29w
ZS0+c3RyaWN0TW9kZSgpKQotICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsK
ICAgICBpZiAoc2NvcGUtPnNoYWRvd3NBcmd1bWVudHMoKSkKICAgICAgICAgZmVhdHVyZXMgfD0g
U2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1fc2VlblRhZ2dlZFRlbXBsYXRlKQpA
QCAtNTMzLDcgKzUzMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUUKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JGdW5j
dGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJhdG9y
Iik7CiAgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBsZXhpY2FsU2NvcGVGZWF0dXJlcygpLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CiAKICAgICBpbmZvLmVuZExpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKQEAgLTU4NCw3ICs1ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFCiAgICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5bmNGdW5jdGlvbkJvZHlTY29w
ZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8u
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50
LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAg
IGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNj
b3BlRmVhdHVyZXMoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5m
by5wYXJhbWV0ZXJDb3VudCwgc291cmNlUGFyc2VNb2RlKCksIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKIAogICAgIGluZm8uZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGluZm8u
ZW5kT2Zmc2V0ID0gaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPyB0b2tlbkxvY2F0aW9u
KCkuZW5kT2Zmc2V0IDogbV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtNjM1LDcgKzYzMyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUUKICAgICAgICAgfQogICAg
ICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNG
cmVlVmFyaWFibGVJbmZvKTsKICAgICB9Ci0gICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
bV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uID8gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCA6IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsK
QEAgLTIxNzAsNyArMjE2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1
bmN0aW8KICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICAgICAgU3VwZXJCaW5kaW5n
IGZ1bmN0aW9uU3VwZXJCaW5kaW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVj
dG9yKGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQs
IHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGxleGljYWxTY29w
ZUZlYXR1cmVzKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFt
ZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTg5LDcgKzIxODcsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvCiAgICAgfQogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5k
aW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2lu
ZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5j
dGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdBcnRpY2xlRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMjQwNSw3
ICsyNDAzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAg
ICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVz
ZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBm
dW5jdGlvbi4KICAgICAgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKHBhcmFtZXRlcnNTdGFydCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVz
dCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCi0gICAgICAgICAgICBBU1NFUlQoIXN0cmljdE1vZGUo
KSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIEFTU0VSVCghc3RyaWN0
TW9kZSgpIHx8IChjYWNoZWRJbmZvLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpICYgU3RyaWN0TW9k
ZUxleGljYWxGZWF0dXJlKSk7CiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gZW5kTG9jYXRp
b247CiAKICAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQgPSBzdGF0
aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KGNhY2hlZEluZm8tPmNvbnN0cnVjdG9yS2luZCk7CkBA
IC0yNDMzLDcgKzI0MzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyCiAgICAgICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSgKICAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAg
ICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9u
U3VwZXJCaW5kaW5nLAorICAgICAgICAgICAgICAgIGNhY2hlZEluZm8tPmxleGljYWxTY29wZUZl
YXR1cmVzKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsCiAgICAgICAg
ICAgICAgICAgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsCiAgICAgICAgICAgICAgICAgbW9k
ZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAg
ICAgICAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9u
T2Zmc2V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lv
biAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTY29wZSk7CiAKIHB1YmxpYzoKLSAgICBTY29wZShjb25zdCBWTSYgdm0s
IGJvb2wgaXNGdW5jdGlvbiwgYm9vbCBpc0dlbmVyYXRvciwgYm9vbCBzdHJpY3RNb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0FzeW5jRnVuY3Rpb24pCisgICAgU2NvcGUoY29uc3Qg
Vk0mIHZtLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBp
c0Z1bmN0aW9uLCBib29sIGlzR2VuZXJhdG9yLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBp
c0FzeW5jRnVuY3Rpb24pCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX3NoYWRvd3NB
cmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzRXZhbChmYWxzZSkKQEAgLTE1Niw3ICsx
NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhmYWxzZSkKICAg
ICAgICAgLCBtX2FsbG93c1ZhckRlY2xhcmF0aW9ucyh0cnVlKQogICAgICAgICAsIG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyh0cnVlKQotICAgICAgICAsIG1fc3RyaWN0TW9kZShzdHJpY3RN
b2RlKQorICAgICAgICAsIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMobGV4aWNhbFNjb3BlRmVhdHVy
ZXMpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uKGlzRnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0dl
bmVyYXRvcihpc0dlbmVyYXRvcikKICAgICAgICAgLCBtX2lzR2VuZXJhdG9yQm91bmRhcnkoZmFs
c2UpCkBAIC03NTYsOCArNzU2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgY2FwdHVyZWRWYXJp
YWJsZXMuYWRkKGltcGwpOwogICAgICAgICB9CiAgICAgfQotICAgIHZvaWQgc2V0U3RyaWN0TW9k
ZSgpIHsgbV9zdHJpY3RNb2RlID0gdHJ1ZTsgfQotICAgIGJvb2wgc3RyaWN0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaWN0TW9kZTsgfQorICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGlj
YWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsU2NvcGVGZWF0dXJlczsg
fQorICAgIHZvaWQgc2V0U3RyaWN0TW9kZSgpIHsgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyB8PSBT
dHJpY3RNb2RlTGV4aWNhbEZlYXR1cmU7IH0KKyAgICBib29sIHN0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2xleGljYWxTY29wZUZlYXR1cmVzICYgU3RyaWN0TW9kZUxleGljYWxGZWF0dXJl
OyB9CiAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxp
ZFN0cmljdE1vZGU7IH0KICAgICBib29sIHNoYWRvd3NBcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX3NoYWRvd3NBcmd1bWVudHM7IH0KICAgICB2b2lkIHNldEhhc05vblNpbXBsZVBhcmFtZXRl
ckxpc3QoKQpAQCAtNzgwLDcgKzc4MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2lzRnVuY3Rpb24pOwogICAgICAgICBwYXJhbWV0ZXJzLnVzZXNFdmFsID0gbV91c2VzRXZh
bDsKLSAgICAgICAgcGFyYW1ldGVycy5zdHJpY3RNb2RlID0gbV9zdHJpY3RNb2RlOworICAgICAg
ICBwYXJhbWV0ZXJzLmxleGljYWxTY29wZUZlYXR1cmVzID0gbV9sZXhpY2FsU2NvcGVGZWF0dXJl
czsKICAgICAgICAgcGFyYW1ldGVycy5uZWVkc0Z1bGxBY3RpdmF0aW9uID0gbV9uZWVkc0Z1bGxB
Y3RpdmF0aW9uOwogICAgICAgICBwYXJhbWV0ZXJzLmlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVz
ID0gbV9pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlczsKICAgICAgICAgcGFyYW1ldGVycy5uZWVk
c1N1cGVyQmluZGluZyA9IG1fbmVlZHNTdXBlckJpbmRpbmc7CkBAIC04MDQsNyArODA1LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNGdW5jdGlvbik7CiAgICAgICAgIG1f
dXNlc0V2YWwgPSBpbmZvLT51c2VzRXZhbDsKLSAgICAgICAgbV9zdHJpY3RNb2RlID0gaW5mby0+
c3RyaWN0TW9kZTsKKyAgICAgICAgbV9sZXhpY2FsU2NvcGVGZWF0dXJlcyA9IGluZm8tPmxleGlj
YWxTY29wZUZlYXR1cmVzKCk7CiAgICAgICAgIG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMg
PSBpbmZvLT5pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlczsKICAgICAgICAgbV9uZWVkc0Z1bGxB
Y3RpdmF0aW9uID0gaW5mby0+bmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICAgICAgbV9uZWVkc1N1
cGVyQmluZGluZyA9IGluZm8tPm5lZWRzU3VwZXJCaW5kaW5nOwpAQCAtOTA0LDcgKzkwNSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX25lZWRzU3VwZXJCaW5kaW5nOwogICAgIGJvb2wgbV9hbGxv
d3NWYXJEZWNsYXJhdGlvbnM7CiAgICAgYm9vbCBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnM7
Ci0gICAgYm9vbCBtX3N0cmljdE1vZGU7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhp
Y2FsU2NvcGVGZWF0dXJlczsKICAgICBib29sIG1faXNGdW5jdGlvbjsKICAgICBib29sIG1faXNH
ZW5lcmF0b3I7CiAgICAgYm9vbCBtX2lzR2VuZXJhdG9yQm91bmRhcnk7CkBAIC0xMzI1LDE5ICsx
MzI2LDE5IEBAIHByaXZhdGU6CiAKICAgICBTY29wZVJlZiBwdXNoU2NvcGUoKQogICAgIHsKKyAg
ICAgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBOb0xleGlj
YWxGZWF0dXJlczsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uID0gZmFsc2U7Ci0gICAgICAgIGJv
b2wgaXNTdHJpY3QgPSBmYWxzZTsKICAgICAgICAgYm9vbCBpc0dlbmVyYXRvciA9IGZhbHNlOwog
ICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBib29sIGlzQXN5
bmNGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoIW1fc2NvcGVTdGFjay5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIGlzU3RyaWN0ID0gbV9zY29wZVN0YWNrLmxhc3QoKS5zdHJpY3RNb2Rl
KCk7CisgICAgICAgICAgICBsZXhpY2FsU2NvcGVGZWF0dXJlcyA9IG1fc2NvcGVTdGFjay5sYXN0
KCkubGV4aWNhbFNjb3BlRmVhdHVyZXMoKTsKICAgICAgICAgICAgIGlzRnVuY3Rpb24gPSBtX3Nj
b3BlU3RhY2subGFzdCgpLmlzRnVuY3Rpb24oKTsKICAgICAgICAgICAgIGlzR2VuZXJhdG9yID0g
bV9zY29wZVN0YWNrLmxhc3QoKS5pc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgaXNBcnJvd0Z1
bmN0aW9uID0gbV9zY29wZVN0YWNrLmxhc3QoKS5pc0Fycm93RnVuY3Rpb24oKTsKICAgICAgICAg
ICAgIGlzQXN5bmNGdW5jdGlvbiA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNBc3luY0Z1bmN0aW9u
KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9zY29wZVN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCht
X3ZtLCBpc0Z1bmN0aW9uLCBpc0dlbmVyYXRvciwgaXNTdHJpY3QsIGlzQXJyb3dGdW5jdGlvbiwg
aXNBc3luY0Z1bmN0aW9uKTsKKyAgICAgICAgbV9zY29wZVN0YWNrLmNvbnN0cnVjdEFuZEFwcGVu
ZChtX3ZtLCBsZXhpY2FsU2NvcGVGZWF0dXJlcywgaXNGdW5jdGlvbiwgaXNHZW5lcmF0b3IsIGlz
QXJyb3dGdW5jdGlvbiwgaXNBc3luY0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRT
Y29wZSgpOwogICAgIH0KIApAQCAtMTY3MSw2ICsxNjcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGVuZExvb3AoKSB7IGN1cnJlbnRTY29wZSgpLT5lbmRMb29wKCk7IH0KICAgICB2b2lkIHN0YXJ0
U3dpdGNoKCkgeyBjdXJyZW50U2NvcGUoKS0+c3RhcnRTd2l0Y2goKTsgfQogICAgIHZvaWQgZW5k
U3dpdGNoKCkgeyBjdXJyZW50U2NvcGUoKS0+ZW5kU3dpdGNoKCk7IH0KKyAgICBMZXhpY2FsU2Nv
cGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgp
LT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpOyB9CiAgICAgdm9pZCBzZXRTdHJpY3RNb2RlKCkgeyBj
dXJyZW50U2NvcGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBzdHJpY3RNb2RlKCkg
eyByZXR1cm4gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgaXNWYWxp
ZFN0cmljdE1vZGUoKQpAQCAtMjE3Nyw2ICsyMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2VSZXN1bHQudmFsdWUoKS5wYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VSZXN1bHQudmFsdWUoKS5mZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPmlubmVyQXJy
b3dGdW5jdGlvbkZlYXR1cmVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJzZVJlc3VsdC52YWx1ZSgpLm51bUNvbnN0YW50cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdURk1vdmUobV9tb2R1bGVTY29wZURhdGEpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHJldmlzaW9uIDI3ODQyMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzA2LDYgKzMwNiwxNCBAQCBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVTY29wZUlz
RHluYW1pYyhiCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3R5cGVkZWYgdWludDhfdCBMZXhpY2Fs
U2NvcGVGZWF0dXJlczsKKworY29uc3QgTGV4aWNhbFNjb3BlRmVhdHVyZXMgTm9MZXhpY2FsRmVh
dHVyZXMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7Citjb25zdCBMZXhpY2FsU2NvcGVG
ZWF0dXJlcyBTdHJpY3RNb2RlTGV4aWNhbEZlYXR1cmUgICAgICAgICAgICAgICA9IDEgPDwgMDsK
KworY29uc3QgTGV4aWNhbFNjb3BlRmVhdHVyZXMgQWxsTGV4aWNhbEZlYXR1cmVzID0gTm9MZXhp
Y2FsRmVhdHVyZXMgfCBTdHJpY3RNb2RlTGV4aWNhbEZlYXR1cmU7CitzdGF0aWNfYXNzZXJ0KEFs
bExleGljYWxGZWF0dXJlcyA8PSAwYjExMTEsICJMZXhpY2FsU2NvcGVGZWF0dXJlcyBtdXN0IGJl
IDRiaXRzIik7CisKIHR5cGVkZWYgdWludDE2X3QgQ29kZUZlYXR1cmVzOwogCiBjb25zdCBDb2Rl
RmVhdHVyZXMgTm9GZWF0dXJlcyA9ICAgICAgICAgICAgICAgICAgICAgICAgIDA7CkBAIC0zMTMs
MTggKzMyMSwxNyBAQCBjb25zdCBDb2RlRmVhdHVyZXMgRXZhbEZlYXR1cmUgPSAgICAgICAgCiBj
b25zdCBDb2RlRmVhdHVyZXMgQXJndW1lbnRzRmVhdHVyZSA9ICAgICAgICAgICAgICAxIDw8IDE7
CiBjb25zdCBDb2RlRmVhdHVyZXMgV2l0aEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgICAxIDw8
IDI7CiBjb25zdCBDb2RlRmVhdHVyZXMgVGhpc0ZlYXR1cmUgPSAgICAgICAgICAgICAgICAgICAx
IDw8IDM7Ci1jb25zdCBDb2RlRmVhdHVyZXMgU3RyaWN0TW9kZUZlYXR1cmUgPSAgICAgICAgICAg
ICAxIDw8IDQ7Citjb25zdCBDb2RlRmVhdHVyZXMgTm9uU2ltcGxlUGFyYW1ldGVyTGlzdEZlYXR1
cmUgPSAxIDw8IDQ7CiBjb25zdCBDb2RlRmVhdHVyZXMgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUg
PSAgICAgICAxIDw8IDU7CiBjb25zdCBDb2RlRmVhdHVyZXMgQXJyb3dGdW5jdGlvbkZlYXR1cmUg
PSAgICAgICAgICAxIDw8IDY7Ci1jb25zdCBDb2RlRmVhdHVyZXMgQXJyb3dGdW5jdGlvbkNvbnRl
eHRGZWF0dXJlID0gICAxIDw8IDc7Citjb25zdCBDb2RlRmVhdHVyZXMgQXdhaXRGZWF0dXJlID0g
ICAgICAgICAgICAgICAgICAxIDw8IDc7CiBjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJDYWxsRmVh
dHVyZSA9ICAgICAgICAgICAgICAxIDw8IDg7CiBjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9w
ZXJ0eUZlYXR1cmUgPSAgICAgICAgICAxIDw8IDk7CiBjb25zdCBDb2RlRmVhdHVyZXMgTmV3VGFy
Z2V0RmVhdHVyZSA9ICAgICAgICAgICAgICAxIDw8IDEwOwogY29uc3QgQ29kZUZlYXR1cmVzIE5v
RXZhbENhY2hlRmVhdHVyZSA9ICAgICAgICAgICAgMSA8PCAxMTsKLWNvbnN0IENvZGVGZWF0dXJl
cyBOb25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSA9IDEgPDwgMTI7Ci1jb25zdCBDb2RlRmVh
dHVyZXMgQXdhaXRGZWF0dXJlID0gICAgICAgICAgICAgICAgICAxIDw8IDEzOwogCi1jb25zdCBD
b2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBFdmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUg
fCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJlIHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dz
QXJndW1lbnRzRmVhdHVyZSB8IEFycm93RnVuY3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNv
bnRleHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVhdHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwg
TmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hlRmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRl
ckxpc3RGZWF0dXJlIHwgQXdhaXRGZWF0dXJlOworY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1
cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlz
RmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50
c0ZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEF3YWl0RmVhdHVyZSB8IFN1cGVyQ2Fs
bEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVhdHVyZSB8IE5ld1RhcmdldEZlYXR1cmUgfCBOb0V2
YWxDYWNoZUZlYXR1cmU7CitzdGF0aWNfYXNzZXJ0KEFsbEZlYXR1cmVzIDwgKDEgPDwgMTQpLCAi
Q29kZUZlYXR1cmVzIG11c3QgYmUgMTRiaXRzIik7CiAKIHR5cGVkZWYgdWludDhfdCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXM7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCShyZXZpc2lv
biAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYQogICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICBib29sIHVzZXNFdmFsOwotICAg
IGJvb2wgc3RyaWN0TW9kZTsKKyAgICBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlczsKICAgICBib29sIG5lZWRzU3VwZXJCaW5kaW5nOwogICAgIElubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25GZWF0dXJlczsKICAgICBWZWN0b3I8
VW5pcXVlZFN0cmluZ0ltcGwqLCA4PiB1c2VkVmFyaWFibGVzOwpAQCAtNzgsNiArNzgsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgfQogCisgICAgTGV4aWNhbFNjb3Bl
RmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgTGV4
aWNhbFNjb3BlRmVhdHVyZXMgZmVhdHVyZXMgPSBOb0xleGljYWxGZWF0dXJlczsKKyAgICAgICAg
aWYgKHN0cmljdE1vZGUpCisgICAgICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlTGV4aWNh
bEZlYXR1cmU7CisgICAgICAgIHJldHVybiBmZWF0dXJlczsKKyAgICB9CisKICAgICBib29sIG5l
ZWRzRnVsbEFjdGl2YXRpb24gOiAxOwogICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0IDog
MzE7CiAgICAgYm9vbCB1c2VzRXZhbCA6IDE7CkBAIC0xMjIsNyArMTMwLDcgQEAgaW5saW5lIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcgogICAgICwgZW5kRnVuY3Rpb25PZmZzZXQo
cGFyYW1ldGVycy5lbmRGdW5jdGlvbk9mZnNldCkKICAgICAsIHVzZXNFdmFsKHBhcmFtZXRlcnMu
dXNlc0V2YWwpCiAgICAgLCBsYXN0VG9rZW5MaW5lKHBhcmFtZXRlcnMubGFzdFRva2VuTGluZSkK
LSAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5zdHJpY3RNb2RlKQorICAgICwgc3RyaWN0TW9k
ZShwYXJhbWV0ZXJzLmxleGljYWxTY29wZUZlYXR1cmVzICYgU3RyaWN0TW9kZUxleGljYWxGZWF0
dXJlKQogICAgICwgbGFzdFRva2VuU3RhcnRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9rZW5TdGFy
dE9mZnNldCkKICAgICAsIGV4cGVjdGVkU3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihwYXJhbWV0ZXJzLmV4cGVjdGVkU3VwZXJCaW5kaW5nKSkKICAgICAsIGxhc3RUb2tlbkVuZE9m
ZnNldChwYXJhbWV0ZXJzLmxhc3RUb2tlbkVuZE9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVG
dW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlR2VuZXJhdG9yRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGNvbnN0IElkZW50
aWZpZXImKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVBc3luY0Z1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAg
ICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2ws
IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyA9IE5vSW5uZXJBcnJvd0Z1bmN0aW9uRmVh
dHVyZXMpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50LCBpbnQsIGludCwgTGV4aWNhbFNjb3BlRmVhdHVy
ZXMsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlLCBib29sKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVNZXRob2REZWZpbml0aW9uKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQo
aW50LCBpbnQpIHsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
Qnl0ZWNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZEJ5dGVjb2RlLmNwcAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHZvaWQgQ2FjaGVkQnl0ZWNvZGU6OmFkZEZ1bmN0aW9uVXBkYXRlKGMKICAgICBw
dHJkaWZmX3Qgb2Zmc2V0ID0gaXQtPnZhbHVlLmJhc2UoKTsKICAgICBBU1NFUlQob2Zmc2V0KTsK
ICAgICBjb3B5TGVhZkV4ZWN1dGFibGVzKGJ5dGVjb2RlLmdldCgpKTsKLSAgICBtX3VwZGF0ZXMu
YXBwZW5kKENhY2hlVXBkYXRlOjpGdW5jdGlvblVwZGF0ZSB7IG9mZnNldCwga2luZCwgeyBleGVj
dXRhYmxlLT5mZWF0dXJlcygpLCBleGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpIH0s
IFdURk1vdmUoYnl0ZWNvZGUtPm1fcGF5bG9hZCkgfSk7CisgICAgbV91cGRhdGVzLmFwcGVuZChD
YWNoZVVwZGF0ZTo6RnVuY3Rpb25VcGRhdGUgeyBvZmZzZXQsIGtpbmQsIHsgZXhlY3V0YWJsZS0+
ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgZXhlY3V0YWJs
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSB9LCBXVEZNb3ZlKGJ5dGVjb2RlLT5tX3BheWxvYWQp
IH0pOwogfQogCiB2b2lkIENhY2hlZEJ5dGVjb2RlOjpjb3B5TGVhZkV4ZWN1dGFibGVzKGNvbnN0
IENhY2hlZEJ5dGVjb2RlJiBieXRlY29kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc5OSw5ICsxNzk5LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQogCiAgICAgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9tdXRhYmxlTWV0YWRhdGEubV9mZWF0dXJlczsgfQor
ICAgIExleGljYWxTY29wZUZlYXR1cmVzIGxleGljYWxTY29wZUZlYXR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdXRhYmxlTWV0YWRhdGEubV9sZXhpY2FsU2NvcGVGZWF0dXJlczsgfQogICAgIFNv
dXJjZVBhcnNlTW9kZSBzb3VyY2VQYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVBh
cnNlTW9kZTsgfQogCi0gICAgdW5zaWduZWQgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgdW5zaWduZWQgaGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX211dGFibGVNZXRhZGF0YS5tX2hhc0NhcHR1cmVkVmFy
aWFibGVzOyB9CiAgICAgdW5zaWduZWQgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAgICAgdW5zaWduZWQgaXNCdWlsdGluRGVmYXVsdENs
YXNzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yOyB9CkBAIC0xODI2LDcgKzE4MjYsNiBAQCBwcml2YXRlOgogICAgIENhY2hlZEZ1
bmN0aW9uRXhlY3V0YWJsZU1ldGFkYXRhIG1fbXV0YWJsZU1ldGFkYXRhOwogCiAgICAgdW5zaWdu
ZWQgbV9maXJzdExpbmVPZmZzZXQgOiAzMTsKLSAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudCA6IDMxOwogICAgIHVuc2lnbmVkIG1f
aXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fdW5saW5rZWRGdW5jdGlvbk5h
bWVTdGFydCA6IDMxOwpAQCAtMTkwMiw2ICsxOTAxLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvbnRleHRUeXBlOyB9CiAg
ICAgdW5zaWduZWQgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7
IH0KICAgICB1bnNpZ25lZCBoYXNDaGVja3BvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2hl
Y2twb2ludHM7IH0KKyAgICB1bnNpZ25lZCBsZXhpY2FsU2NvcGVGZWF0dXJlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXM7IH0KICAgICB1bnNpZ25lZCBsaW5lQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CiAKQEAgLTE5MzQsNiArMTkzNCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOwogICAgIHVuc2lnbmVkIG1f
Y29kZVR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faGFzQ2hlY2twb2ludHMgOiAxOworICAgIHVu
c2lnbmVkIG1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgOiA0OwogCiAgICAgQ29kZUZlYXR1cmVzIG1f
ZmVhdHVyZXM7CiAgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwpAQCAtMjExNSw5ICsy
MTE2LDEzIEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2UKICAgICAs
IG1fdGhpc1JlZ2lzdGVyKGNhY2hlZENvZGVCbG9jay50aGlzUmVnaXN0ZXIoKSkKICAgICAsIG1f
c2NvcGVSZWdpc3RlcihjYWNoZWRDb2RlQmxvY2suc2NvcGVSZWdpc3RlcigpKQogCisgICAgLCBt
X251bVZhcnMoY2FjaGVkQ29kZUJsb2NrLm51bVZhcnMoKSkKICAgICAsIG1fdXNlc0NhbGxFdmFs
KGNhY2hlZENvZGVCbG9jay51c2VzQ2FsbEV2YWwoKSkKKyAgICAsIG1fbnVtQ2FsbGVlTG9jYWxz
KGNhY2hlZENvZGVCbG9jay5udW1DYWxsZWVMb2NhbHMoKSkKICAgICAsIG1faXNDb25zdHJ1Y3Rv
cihjYWNoZWRDb2RlQmxvY2suaXNDb25zdHJ1Y3RvcigpKQorICAgICwgbV9udW1QYXJhbWV0ZXJz
KGNhY2hlZENvZGVCbG9jay5udW1QYXJhbWV0ZXJzKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzKGNhY2hlZENvZGVCbG9jay5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKQorCiAgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGNhY2hlZENvZGVCbG9jay5pc0J1aWx0aW5GdW5jdGlvbigpKQog
ICAgICwgbV9zdXBlckJpbmRpbmcoY2FjaGVkQ29kZUJsb2NrLnN1cGVyQmluZGluZygpKQogICAg
ICwgbV9zY3JpcHRNb2RlKGNhY2hlZENvZGVCbG9jay5zY3JpcHRNb2RlKCkpCkBAIC0yMTMzLDE1
ICsyMTM4LDEzIEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2UKICAg
ICAsIG1fYWdlKDApCiAgICAgLCBtX2hhc0NoZWNrcG9pbnRzKGNhY2hlZENvZGVCbG9jay5oYXND
aGVja3BvaW50cygpKQogCisgICAgLCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGNhY2hlZENvZGVC
bG9jay5sZXhpY2FsU2NvcGVGZWF0dXJlcygpKQogICAgICwgbV9mZWF0dXJlcyhjYWNoZWRDb2Rl
QmxvY2suZmVhdHVyZXMoKSkKICAgICAsIG1fcGFyc2VNb2RlKGNhY2hlZENvZGVCbG9jay5wYXJz
ZU1vZGUoKSkKICAgICAsIG1fY29kZUdlbmVyYXRpb25Nb2RlKGNhY2hlZENvZGVCbG9jay5jb2Rl
R2VuZXJhdGlvbk1vZGUoKSkKIAogICAgICwgbV9saW5lQ291bnQoY2FjaGVkQ29kZUJsb2NrLmxp
bmVDb3VudCgpKQogICAgICwgbV9lbmRDb2x1bW4oY2FjaGVkQ29kZUJsb2NrLmVuZENvbHVtbigp
KQotICAgICwgbV9udW1WYXJzKGNhY2hlZENvZGVCbG9jay5udW1WYXJzKCkpCi0gICAgLCBtX251
bUNhbGxlZUxvY2FscyhjYWNoZWRDb2RlQmxvY2subnVtQ2FsbGVlTG9jYWxzKCkpCi0gICAgLCBt
X251bVBhcmFtZXRlcnMoY2FjaGVkQ29kZUJsb2NrLm51bVBhcmFtZXRlcnMoKSkKIAogICAgICwg
bV9zb3VyY2VVUkxEaXJlY3RpdmUoY2FjaGVkQ29kZUJsb2NrLnNvdXJjZVVSTERpcmVjdGl2ZShk
ZWNvZGVyKSkKICAgICAsIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjYWNoZWRDb2RlQmxv
Y2suc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShkZWNvZGVyKSkKQEAgLTIxODQsNiArMjE4Nyw3
IEBAIEFMV0FZU19JTkxJTkUgVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpVbmwKIEFMV0FZU19JTkxJ
TkUgdm9pZCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSYgZXhlY3V0YWJsZSkKIHsKICAgICBt
X211dGFibGVNZXRhZGF0YS5tX2ZlYXR1cmVzID0gZXhlY3V0YWJsZS5tX2ZlYXR1cmVzOworICAg
IG1fbXV0YWJsZU1ldGFkYXRhLm1fbGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBleGVjdXRhYmxlLm1f
bGV4aWNhbFNjb3BlRmVhdHVyZXM7CiAgICAgbV9tdXRhYmxlTWV0YWRhdGEubV9oYXNDYXB0dXJl
ZFZhcmlhYmxlcyA9IGV4ZWN1dGFibGUubV9oYXNDYXB0dXJlZFZhcmlhYmxlczsKIAogICAgIG1f
Zmlyc3RMaW5lT2Zmc2V0ID0gZXhlY3V0YWJsZS5tX2ZpcnN0TGluZU9mZnNldDsKQEAgLTIyMDAs
NyArMjIwNCw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGEKIAog
ICAgIG1fc291cmNlUGFyc2VNb2RlID0gZXhlY3V0YWJsZS5tX3NvdXJjZVBhcnNlTW9kZTsKIAot
ICAgIG1faXNJblN0cmljdENvbnRleHQgPSBleGVjdXRhYmxlLm1faXNJblN0cmljdENvbnRleHQ7
CiAgICAgbV9pc0J1aWx0aW5GdW5jdGlvbiA9IGV4ZWN1dGFibGUubV9pc0J1aWx0aW5GdW5jdGlv
bjsKICAgICBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZXhlY3V0YWJsZS5t
X2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yOwogICAgIG1fY29uc3RydWN0QWJpbGl0
eSA9IGV4ZWN1dGFibGUubV9jb25zdHJ1Y3RBYmlsaXR5OwpAQCAtMjIzNCw3ICsyMjM3LDcgQEAg
QUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZQogQUxXQVlTX0lOTElORSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoRGVj
b2RlciYgZGVjb2RlciwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJiBjYWNoZWRFeGVj
dXRhYmxlKQogICAgIDogQmFzZShkZWNvZGVyLnZtKCksIGRlY29kZXIudm0oKS51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0
KGNhY2hlZEV4ZWN1dGFibGUuZmlyc3RMaW5lT2Zmc2V0KCkpCi0gICAgLCBtX2lzSW5TdHJpY3RD
b250ZXh0KGNhY2hlZEV4ZWN1dGFibGUuaXNJblN0cmljdENvbnRleHQoKSkKKyAgICAsIG1faXNH
ZW5lcmF0ZWRGcm9tQ2FjaGUodHJ1ZSkKICAgICAsIG1fbGluZUNvdW50KGNhY2hlZEV4ZWN1dGFi
bGUubGluZUNvdW50KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGNhY2hlZEV4ZWN1
dGFibGUuaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1fdW5saW5rZWRGdW5jdGlvbk5h
bWVTdGFydChjYWNoZWRFeGVjdXRhYmxlLnVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSkKQEAg
LTIyNTAsMTYgKzIyNTMsMTYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZQogICAgICwgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKSkKICAgICAsIG1faXNDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3R5
cGVQcm9maWxpbmdTdGFydE9mZnNldChjYWNoZWRFeGVjdXRhYmxlLnR5cGVQcm9maWxpbmdTdGFy
dE9mZnNldCgpKQorICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcihjYWNoZWRFeGVj
dXRhYmxlLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkpCiAgICAgLCBtX3R5cGVQcm9maWxp
bmdFbmRPZmZzZXQoY2FjaGVkRXhlY3V0YWJsZS50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpCiAg
ICAgLCBtX3BhcmFtZXRlckNvdW50KGNhY2hlZEV4ZWN1dGFibGUucGFyYW1ldGVyQ291bnQoKSkK
ICAgICAsIG1fcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQoY2FjaGVkRXhlY3V0YWJsZS5wcml2YXRl
QnJhbmRSZXF1aXJlbWVudCgpKQogICAgICwgbV9mZWF0dXJlcyhjYWNoZWRFeGVjdXRhYmxlLmZl
YXR1cmVzKCkpCi0gICAgLCBtX3NvdXJjZVBhcnNlTW9kZShjYWNoZWRFeGVjdXRhYmxlLnNvdXJj
ZVBhcnNlTW9kZSgpKQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoY2FjaGVkRXhlY3V0YWJsZS5j
b25zdHJ1Y3RvcktpbmQoKSkKKyAgICAsIG1fc291cmNlUGFyc2VNb2RlKGNhY2hlZEV4ZWN1dGFi
bGUuc291cmNlUGFyc2VNb2RlKCkpCisgICAgLCBtX2xleGljYWxTY29wZUZlYXR1cmVzKGNhY2hl
ZEV4ZWN1dGFibGUubGV4aWNhbFNjb3BlRmVhdHVyZXMoKSkKICAgICAsIG1fZnVuY3Rpb25Nb2Rl
KGNhY2hlZEV4ZWN1dGFibGUuZnVuY3Rpb25Nb2RlKCkpCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0
VHlwZShjYWNoZWRFeGVjdXRhYmxlLmRlcml2ZWRDb250ZXh0VHlwZSgpKQotICAgICwgbV9pc0dl
bmVyYXRlZEZyb21DYWNoZSh0cnVlKQotICAgICwgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
cihjYWNoZWRFeGVjdXRhYmxlLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkpCiAgICAgLCBt
X3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCgpCiAgICAgLCBtX3VubGlua2VkQ29kZUJsb2NrRm9y
Q29uc3RydWN0KCkKIApAQCAtMjMyMCw2ICsyMzIzLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIENh
Y2hlZENvZGVCbG9jazxDb2RlQgogICAgIG1fbnVtQ2FsbGVlTG9jYWxzID0gY29kZUJsb2NrLm1f
bnVtQ2FsbGVlTG9jYWxzOwogICAgIG1fbnVtUGFyYW1ldGVycyA9IGNvZGVCbG9jay5tX251bVBh
cmFtZXRlcnM7CiAgICAgbV9mZWF0dXJlcyA9IGNvZGVCbG9jay5tX2ZlYXR1cmVzOworICAgIG1f
bGV4aWNhbFNjb3BlRmVhdHVyZXMgPSBjb2RlQmxvY2subV9sZXhpY2FsU2NvcGVGZWF0dXJlczsK
ICAgICBtX3BhcnNlTW9kZSA9IGNvZGVCbG9jay5tX3BhcnNlTW9kZTsKICAgICBtX2NvZGVHZW5l
cmF0aW9uTW9kZSA9IGNvZGVCbG9jay5tX2NvZGVHZW5lcmF0aW9uTW9kZTsKICAgICBtX2NvZGVU
eXBlID0gY29kZUJsb2NrLm1fY29kZVR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDcgQEAgZW51bSBjbGFzcyBTb3VyY2VDb2RlVHlwZTsKIC8vIGNhY2hlLCBzaW5jZSB0aGlz
IHdpbGwgb25seSBiZSBmaWxsZWQgaW4gd2hlbiB3ZSBwYXJzZSB0aGUgZnVuY3Rpb24KIHN0cnVj
dCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVNZXRhZGF0YSB7CiAgICAgQ29kZUZlYXR1cmVzIG1f
ZmVhdHVyZXM7CisgICAgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbV9sZXhpY2FsU2NvcGVGZWF0dXJl
czsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDI3ODQyMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3LDExICs4Nyw5IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVV
bmxpbmtlZEMKICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50Owog
ICAgIHVuc2lnbmVkIHVubGlua2VkRW5kQ29sdW1uID0gcm9vdE5vZGUtPmVuZENvbHVtbigpOwog
ICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHVubGlua2VkRW5kQ29sdW1uICsgKGVuZENvbHVtbklz
T25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwotICAgIHVuc2lnbmVkIGFycm93Q29udGV4
dEZlYXR1cmUgPSBpc0Fycm93RnVuY3Rpb25Db250ZXh0ID8gQXJyb3dGdW5jdGlvbkNvbnRleHRG
ZWF0dXJlIDogMDsKICAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAgICAgZXhlY3V0YWJsZS0+cmVj
b3JkUGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCkgfCBhcnJvd0NvbnRleHRGZWF0dXJlLCByb290
Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgcm9vdE5vZGUtPmxhc3RMaW5lKCksIGVuZENv
bHVtbik7CisgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHJvb3ROb2RlLT5mZWF0dXJl
cygpLCByb290Tm9kZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwgcm9vdE5vZGUtPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCksIHJvb3ROb2RlLT5sYXN0TGluZSgpLCBlbmRDb2x1bW4pOwogCi0gICAg
RUNNQU1vZGUgZWNtYU1vZGUgPSByb290Tm9kZS0+ZmVhdHVyZXMoKSAmIFN0cmljdE1vZGVGZWF0
dXJlID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIE5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyID0gTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vOwogICAgIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHBy
aXZhdGVCcmFuZFJlcXVpcmVtZW50ID0gUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmU7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFeGVjdXRhYmxlVHlwZSwgRGlyZWN0RXZh
bEV4ZWN1dGFibGU+KSB7CkBAIC0xMDEsNyArOTksNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IGdlbmVyYXRlVW5saW5rZWRDCiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oZmFs
c2UsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGZhbHNlLCBldmFsQ29u
dGV4dFR5cGUpOwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9j
ayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlSW5mbywgY29k
ZUdlbmVyYXRpb25Nb2RlKTsKLSAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3JkUGFyc2Uocm9v
dE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBsaW5l
Q291bnQsIHVubGlua2VkRW5kQ29sdW1uKTsKKyAgICB1bmxpbmtlZENvZGVCbG9jay0+cmVjb3Jk
UGFyc2Uocm9vdE5vZGUtPmZlYXR1cmVzKCksIHJvb3ROb2RlLT5sZXhpY2FsU2NvcGVGZWF0dXJl
cygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGluZUNvdW50LCB1bmxpbmtl
ZEVuZENvbHVtbik7CiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0
aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VVUkxE
aXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKICAgICBp
ZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkuaXNOdWxs
KCkpCkBAIC0xMTAsNyArMTA4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVu
bGlua2VkQwogICAgIFJlZlB0cjxURFpFbnZpcm9ubWVudExpbms+IHBhcmVudFZhcmlhYmxlc1Vu
ZGVyVERaOwogICAgIGlmICh2YXJpYWJsZXNVbmRlclREWikKICAgICAgICAgcGFyZW50VmFyaWFi
bGVzVW5kZXJURFogPSBURFpFbnZpcm9ubWVudExpbms6OmNyZWF0ZSh2bS5tX2NvbXBhY3RWYXJp
YWJsZU1hcC0+Z2V0KCp2YXJpYWJsZXNVbmRlclREWiksIG51bGxwdHIpOwotICAgIGVycm9yID0g
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1
bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRl
clREWiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgZWNtYU1vZGUpOworICAgIGVycm9yID0gQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZtLCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxp
bmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBwYXJlbnRWYXJpYWJsZXNVbmRlclRE
WiwgcHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Nyw3ICsxNjUsNyBAQCBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0VW5sCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gdW5saW5rZWRDb2RlQmxvY2stPnN0YXJ0Q29sdW1uKCkgKyBzb3VyY2Uuc3RhcnRDb2x1bW4o
KS5vbmVCYXNlZEludCgpOwogICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAh
bGluZUNvdW50OwogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDog
MSk7Ci0gICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZUJsb2NrLT5j
b2RlRmVhdHVyZXMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpICsgbGluZUNvdW50LCBlbmRDb2x1bW4p
OworICAgICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZSh1bmxpbmtlZENvZGVCbG9jay0+Y29k
ZUZlYXR1cmVzKCksIHVubGlua2VkQ29kZUJsb2NrLT5sZXhpY2FsU2NvcGVGZWF0dXJlcygpLCB1
bmxpbmtlZENvZGVCbG9jay0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgc291cmNlLmZpcnN0TGlu
ZSgpLm9uZUJhc2VkSW50KCkgKyBsaW5lQ291bnQsIGVuZENvbHVtbik7CiAgICAgICAgIGlmICh1
bmxpbmtlZENvZGVCbG9jay0+c291cmNlVVJMRGlyZWN0aXZlKCkpCiAgICAgICAgICAgICBzb3Vy
Y2UucHJvdmlkZXIoKS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHVubGlua2VkQ29kZUJsb2NrLT5z
b3VyY2VVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+c291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRUNNQU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FQ01BTW9kZS5oCShyZXZpc2lvbiAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FQ01BTW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHN0
cnVjdCBFQ01BTW9kZSB7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEVDTUFNb2Rl
IGZyb21CeXRlKHVpbnQ4X3QgYnl0ZSkgeyByZXR1cm4gRUNNQU1vZGUoYnl0ZSk7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIEVDTUFNb2RlIGZyb21Cb29sKGJvb2wgaXNTdHJpY3QpIHsgcmV0dXJu
IGlzU3RyaWN0ID8gc3RyaWN0KCkgOiBzbG9wcHkoKTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIg
RUNNQU1vZGUgc3RyaWN0KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0KICAgICBz
dGF0aWMgY29uc3RleHByIEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3Bw
eU1vZGUpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjc4NDIxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENsYXNzSW5mbyBGdW5j
dGlvbkV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRF
eGVjdXRhYmxlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
RnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgSW50cmluc2ljIGludHJpbnNpYywgYm9v
bCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRD
b250ZXh0VHlwZSgpLCBmYWxzZSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uIHx8ICF1bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIGlu
dHJpbnNpYykKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxleGljYWxTY29w
ZUZlYXR1cmVzKCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZh
bHNlLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gfHwgIXVubGlua2VkRXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCksIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgaW50cmluc2ljKQogICAgICwg
bV91bmxpbmtlZEV4ZWN1dGFibGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmlzTnVsbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HbG9iYWxFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI3ODQy
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dsb2JhbEV4ZWN1dGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGFz
dExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAgICAgdW5zaWduZWQgZW5kQ29s
dW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAotICAgIHZvaWQgcmVjb3JkUGFy
c2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBpbnQg
bGFzdExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikKKyAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVy
ZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMsIGludCBsYXN0TGluZSwgdW5zaWduZWQgZW5k
Q29sdW1uKQogICAgIHsKLSAgICAgICAgQmFzZTo6cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGhhc0Nh
cHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgQmFzZTo6cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGxl
eGljYWxTY29wZUZlYXR1cmVzLCBoYXNDYXB0dXJlZFZhcmlhYmxlcyk7CiAgICAgICAgIG1fbGFz
dExpbmUgPSBsYXN0TGluZTsKICAgICAgICAgbV9lbmRDb2x1bW4gPSBlbmRDb2x1bW47CiAgICAg
ICAgIEFTU0VSVChlbmRDb2x1bW4gIT0gVUlOVF9NQVgpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICBHbG9iYWxFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJ
bkFycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljIGludHJpbnNpYykKLSAgICAg
ICAgOiBCYXNlKHN0cnVjdHVyZSwgdm0sIHNvdXJjZUNvZGUsIGlzSW5TdHJpY3RDb250ZXh0LCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIGludHJpbnNpYykKKyAgICAgICAgOiBCYXNl
KHN0cnVjdHVyZSwgdm0sIHNvdXJjZUNvZGUsIGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9k
ZUxleGljYWxGZWF0dXJlIDogTm9MZXhpY2FsRmVhdHVyZXMsIGRlcml2ZWRDb250ZXh0VHlwZSwg
aXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIGV2YWxD
b250ZXh0VHlwZSwgaW50cmluc2ljKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAyNzg0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0
RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKLVNjcmlwdEV4ZWN1dGFi
bGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUsIEludHJpbnNpYyBpbnRyaW5zaWMpCitTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVj
dXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgTGV4aWNhbFNjb3BlRmVhdHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250
ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxD
b250ZXh0VHlwZSwgSW50cmluc2ljIGludHJpbnNpYykKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2ludHJpbnNpYyhp
bnRyaW5zaWMpCi0gICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9k
ZUZlYXR1cmUgOiAwKQorICAgICwgbV9mZWF0dXJlcyhOb0ZlYXR1cmVzKQorICAgICwgbV9sZXhp
Y2FsU2NvcGVGZWF0dXJlcyhsZXhpY2FsU2NvcGVGZWF0dXJlcykKICAgICAsIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX25ldmVySW5saW5lKGZhbHNlKQogICAgICwgbV9u
ZXZlck9wdGltaXplKGZhbHNlKQpAQCAtMzI4LDYgKzMyOSw3IEBAIENvZGVCbG9jayogU2NyaXB0
RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcnNlTW9k
ZSgpKTsKICAgICByZWNvcmRQYXJzZSgKICAgICAgICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4
ZWN1dGFibGUtPmZlYXR1cmVzKCksIAorICAgICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXhl
Y3V0YWJsZS0+bGV4aWNhbFNjb3BlRmVhdHVyZXMoKSwKICAgICAgICAgZXhlY3V0YWJsZS0+bV91
bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksCiAgICAgICAgIGxhc3RM
aW5lKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewpAQCAt
NTIyLDE1ICs1MjQsMTUgQEAgdW5zaWduZWQgU2NyaXB0RXhlY3V0YWJsZTo6dHlwZVByb2ZpbGlu
ZwogICAgIHJldHVybiBzb3VyY2UoKS5sZW5ndGgoKSAtIDE7CiB9CiAKLXZvaWQgU2NyaXB0RXhl
Y3V0YWJsZTo6cmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1
cmVkVmFyaWFibGVzLCBpbnQgbGFzdExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikKK3ZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6cmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2Fs
U2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcywgaW50IGxhc3RMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pCiB7CiAgICAgc3dpdGNoICh0
eXBlKCkpIHsKICAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIC8vIFNp
bmNlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGhvbGRzIHRoZSBpbmZvcm1hdGlvbiB0byBj
YWxjdWxhdGUgbGFzdExpbmUgYW5kIGVuZENvbHVtbiwgd2UgZG8gbm90IG5lZWQgdG8gcmVtZW1i
ZXIgdGhlbSBpbiBTY3JpcHRFeGVjdXRhYmxlJ3MgZmllbGRzLgotICAgICAgICBqc0Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPnJlY29yZFBhcnNlKGZlYXR1cmVzLCBoYXNDYXB0dXJl
ZFZhcmlhYmxlcyk7CisgICAgICAgIGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+
cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGxleGljYWxTY29wZUZlYXR1cmVzLCBoYXNDYXB0dXJlZFZh
cmlhYmxlcyk7CiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgotICAgICAgICBqc0Nhc3Q8
R2xvYmFsRXhlY3V0YWJsZSo+KHRoaXMpLT5yZWNvcmRQYXJzZShmZWF0dXJlcywgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMsIGxhc3RMaW5lLCBlbmRDb2x1bW4pOworICAgICAgICBqc0Nhc3Q8R2xvYmFs
RXhlY3V0YWJsZSo+KHRoaXMpLT5yZWNvcmRQYXJzZShmZWF0dXJlcywgbGV4aWNhbFNjb3BlRmVh
dHVyZXMsIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBsYXN0TGluZSwgZW5kQ29sdW1uKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI3ODQyMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9Ci0gICAgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVy
ZTsgfQorICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2xleGlj
YWxTY29wZUZlYXR1cmVzICYgU3RyaWN0TW9kZUxleGljYWxGZWF0dXJlOyB9CiAgICAgYm9vbCB1
c2VzTm9uU2ltcGxlUGFyYW1ldGVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBO
b25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZTsgfQogCiAgICAgdm9pZCBzZXROZXZlcklubGlu
ZShib29sIHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQpAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICB2b2lk
IHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgaW50
IGxhc3RMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pOworICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29k
ZUZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxl
cywgaW50IGxhc3RMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4pOwogICAgIHZvaWQgaW5zdGFsbENv
ZGUoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBpbnN0YWxsQ29kZShWTSYsIENvZGVCbG9jayosIENv
ZGVUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVC
bG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIEV4
Y2VwdGlvbiomKTsKQEAgLTEyOCwxMSArMTI4LDEyIEBAIHByaXZhdGU6CiAgICAgVGVtcGxhdGVP
YmplY3RNYXAmIGVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJik7CiAKIHByb3RlY3RlZDoKLSAg
ICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dG
dW5jdGlvbkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4
dFR5cGUsIEludHJpbnNpYyk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBMZXhpY2FsU2NvcGVGZWF0dXJlcywgRGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljKTsKIAotICAgIHZvaWQgcmVjb3Jk
UGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQor
ICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVG
ZWF0dXJlcyBsZXhpY2FsU2NvcGVGZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykK
ICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKKyAgICAgICAgbV9sZXhpY2Fs
U2NvcGVGZWF0dXJlcyA9IGxleGljYWxTY29wZUZlYXR1cmVzOwogICAgICAgICBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzID0gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgfQogCkBAIC0xNDIsNiAr
MTQzLDcgQEAgcHJvdGVjdGVkOgogICAgIEludHJpbnNpYyBtX2ludHJpbnNpYyB7IE5vSW50cmlu
c2ljIH07CiAgICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AgeyBmYWxzZSB9OwogICAgIENv
ZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOworICAgIHVuc2lnbmVkIG1fbGV4aWNhbFNjb3BlRmVhdHVy
ZXMgOiA0OwogICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IG1fY29kZUdlbmVyYXRp
b25Nb2RlRm9yR2VuZXJhdG9yQm9keTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
OiAxOwogICAgIGJvb2wgbV9uZXZlcklubGluZSA6IDE7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>