<?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>233648</bug_id>
          
          <creation_ts>2021-11-30 11:16:11 -0800</creation_ts>
          <short_desc>Move Subspaces from VM to Heap.</short_desc>
          <delta_ts>2021-11-30 20:39:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818842</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-30 11:16:11 -0800</bug_when>
    <thetext>Subspaces are Heap data structures to begin with, and this refactoring is needed in preparation for the global GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818843</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-30 11:17:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/85875751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818935</commentid>
    <comment_count>2</comment_count>
      <attachid>445469</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-30 14:06:03 -0800</bug_when>
    <thetext>Created attachment 445469
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818957</commentid>
    <comment_count>3</comment_count>
      <attachid>445469</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-11-30 14:44:06 -0800</bug_when>
    <thetext>Comment on attachment 445469
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818960</commentid>
    <comment_count>4</comment_count>
      <attachid>445472</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-30 14:52:32 -0800</bug_when>
    <thetext>Created attachment 445472
patch for landing.

Thanks for the review.  This patch also includes a fix for the watchOS EWS build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818995</commentid>
    <comment_count>5</comment_count>
      <attachid>445484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-30 16:18:29 -0800</bug_when>
    <thetext>Created attachment 445484
patch for landing + speculative fix for Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819067</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-30 20:39:56 -0800</bug_when>
    <thetext>Landed in r286347: &lt;http://trac.webkit.org/r286347&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445469</attachid>
            <date>2021-11-30 14:06:03 -0800</date>
            <delta_ts>2021-11-30 14:59:02 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233648.patch</filename>
            <type>text/plain</type>
            <size>430605</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MzE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4OSBA
QAorMjAyMS0xMS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBTdWJzcGFjZXMgZnJvbSBWTSB0byBIZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjQ4CisgICAgICAgIHJkYXI6Ly84NTg3NTc1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1YnNwYWNl
cyBhcmUgSGVhcCBkYXRhIHN0cnVjdHVyZXMgdG8gYmVnaW4gd2l0aCwgYW5kIHRoaXMgcmVmYWN0
b3JpbmcgaXMgbmVlZGVkCisgICAgICAgIGluIHByZXBhcmF0aW9uIGZvciB0aGUgZ2xvYmFsIEdD
LgorCisgICAgICAgIDEuIEVtYmVkIEhlYXBDZWxsVHlwZSBhbmQgSXNvSGVhcENlbGxUeXBlIGlu
c3RhbmNlcyBpbiBIZWFwIGRpcmVjdGx5IGluc3RlYWQgb2YKKyAgICAgICAgICAgbWFsbG9jJ2lu
ZyB0aGVtIHNlcGFyYXRlbHkgYW5kIHJlZmVyZW5jaW5nIHRoZW0gdmlhIHVuaXF1ZV9wdHJzLiAg
VGhlc2UKKyAgICAgICAgICAgaW5zdGFuY2VzIGFyZSBhbHdheXMgaW5zdGFudGlhdGVkIHVuY29u
ZGl0aW9uYWxseSBhbnl3YXkuICBUaGlzIGNoYW5nZQorICAgICAgICAgICBlbGltaW5hdGVzIHRo
ZSB1bm5lZWRlZCBidXN5IHdvcmsgdG8gYWxsb2NhdGUgdGhlbSBzZXBhcmF0ZWx5LgorCisgICAg
ICAgIDIuIEludHJvZHVjZSBhIEhlYXBTdWJzcGFjZVR5cGVzLmggdGhhdCAjaW5jbHVkZSBhbGwg
dGhlIHR5cGVzIHRoYXQgd2UgaGF2ZQorICAgICAgICAgICBzdWJzcGFjZXMgZm9yLiAgVGhpcyBt
YWtlcyBpdCBzbyB0aGF0IEhlYXAuY3BwJ3MgI2luY2x1ZGUgbGlzdCBpcyBub3QgZmxvb2RlZAor
ICAgICAgICAgICB3aXRoIHRoZXNlIHR5cGVzIHdpdGggc3Vic3BhY2VzLCBhbmQgdGhhdCBpdCds
bCBiZSBlYXNpZXIgdG8gZGlzY2VybiBiZXR3ZWVuCisgICAgICAgICAgIHRoZXNlIFN1YnNwYWNl
IHR5cGVzIGZyb20gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5n
IEhlYXAuCisKKyAgICAgICAgMy4gQWRkIFZNIGFjY2Vzc29yIG1ldGhvZHMgZm9yIHN1YnNwYWNl
cyB0aGF0IGZvcndhcmQgdG8gSGVhcC4gIFRoaXMgd2lsbCBtYWtlIGl0CisgICAgICAgICAgIGVh
c2llciBmb3IgdXMgdG8gcmVkaXJlY3QgdG8gYSB0aHJlYWQgbG9jYWwgYWxsb2NhdG9yIGxhdGVy
IGZvciB0aGUgZ2xvYmFsIEdDLgorCisgICAgICAgIDQuIFJlbW92ZSB1bm5lZWRlZCAjaW5jbHVk
ZXMgaW4gVk0uaC4KKworICAgICAgICA1LiBSZW1vdmUgdW51c2VkIENvZGVCbG9ja1NldDo6aXRl
cmF0ZVZpYVN1YnNwYWNlcygpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9GdW5jdGlv
bkNvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2su
aDoKKyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wu
cmI6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKiBoZWFwL0NvZGVC
bG9ja1NldElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjppdGVyYXRlVmlh
U3Vic3BhY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAo
SlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3Mp
OgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChK
U0M6OkhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVD
b25zdHJhaW50cyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6
OmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UpOgorICAgICAgICAoSlNDOjpIZWFwOjpTcGFjZUFuZFNl
dDo6U3BhY2VBbmRTZXQpOgorICAgICAgICAoSlNDOjpIZWFwOjpTcGFjZUFuZFNldDo6c2V0Rm9y
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaENvZGVCbG9ja1NwYWNlKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSk6CisgICAgICAgICogaGVh
cC9IZWFwU3Vic3BhY2VUeXBlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL0lzb0hlYXBDZWxs
VHlwZS5oOgorICAgICAgICAqIGhlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oOgorICAgICAg
ICAqIGhlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaDogQWRkZWQuCisgICAgICAg
IChKU0M6Oklzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpJc29JbmxpbmVkSGVhcENl
bGxUeXBlKToKKyAgICAgICAgKEpTQzo6SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46
OkRlc3Ryb3lGdW5jOjpvcGVyYXRvciBjb25zdCk6CisgICAgICAgIChKU0M6Oklzb0lubGluZWRI
ZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpmaW5pc2hTd2VlcCBjb25zdCk6CisgICAgICAgIChKU0M6
Oklzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpkZXN0cm95IGNvbnN0KToKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDTWVtb3J5Rm9vdHByaW50Ojpz
dWJzcGFjZUZvcik6CisgICAgICAgIChKU0ZpbGVEZXNjcmlwdG9yOjpzdWJzcGFjZUZvcik6Cisg
ICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvQXRvbWljc09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmg6CisgICAgICAgICog
cnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6Y3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6dHJ5Q3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6QnV0dGVyZmx5Ojpncm93QXJyYXlSaWdodCk6CisgICAgICAgIChKU0M6OkJ1dHRl
cmZseTo6cmVhbGxvY0FycmF5UmlnaHRJZlBvc3NpYmxlKToKKyAgICAgICAgKiBydW50aW1lL0Nh
Y2hlZFR5cGVzLmg6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbnNvbGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdl
dHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OnN1YnNwYWNl
Rm9yKToKKyAgICAgICAgKiBydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9EYXRlUHJv
dG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0
b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRlci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6SGFzaE1hcEJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxT
ZWdtZW50c1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZCk6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5Lmg6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnN1YnNwYWNlRm9yKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNv
bnN0cnVjdGlvbkNvbnRleHQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgICogcnVudGlt
ZS9KU0JpZ0ludC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDYWxsZWUuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsZWU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oOgorICAgICAgICAoSlNDOjpKU0ltbXV0YWJsZUJ1dHRlcmZseTo6c3Vic3BhY2VGb3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmg6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVj
dDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmg6CisgICAgICAg
IChKU0M6OkpTUHJvbWlzZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9t
aXNlUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZVByb3RvdHlwZTo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3h5Lmg6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvTWFwUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvUmVmbGVjdE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OlNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAgICogcnVudGlt
ZS9TY29wZWRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9TZXRQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50
aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlN0cmlu
Z09iamVjdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE5vdy5oOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9UaHJvd1Njb3BlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgIChKU0M6OlZNOjpjZWxsSGVhcENlbGxUeXBlKToKKyAgICAgICAgKEpTQzo6
Vk06OmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OlZNOjpw
cmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmltbXV0YWJsZUJ1
dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06
OmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Y2VsbFNwYWNlKToK
KyAgICAgICAgKEpTQzo6Vk06OnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UpOgorICAgICAgICAoSlND
OjpWTTo6ZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6YXJyYXlT
cGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpiaWdJbnRTcGFjZSk6CisgICAgICAgIChKU0M6OlZN
OjpjYWxsZWVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpjbG9uZWRBcmd1bWVudHNTcGFjZSk6
CisgICAgICAgIChKU0M6OlZNOjpjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSk6CisgICAgICAgIChK
U0M6OlZNOjpkYXRlSW5zdGFuY2VTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpkb21BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXJTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpleGNlcHRpb25TcGFjZSk6
CisgICAgICAgIChKU0M6OlZNOjpleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpOgorICAg
ICAgICAoSlNDOjpWTTo6ZnVuY3Rpb25TcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpnZXR0ZXJT
ZXR0ZXJTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRT
cGFjZSk6CisgICAgICAgIChKU0M6OlZNOjppbnRlcm5hbEZ1bmN0aW9uU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6anNQcm94eVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06Om5hdGl2ZUV4ZWN1
dGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpudW1iZXJPYmplY3RTcGFjZSk6CisgICAg
ICAgIChKU0M6OlZNOjpwbGFpbk9iamVjdFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnByb21p
c2VTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2Up
OgorICAgICAgICAoSlNDOjpWTTo6cHJvcGVydHlUYWJsZVNwYWNlKToKKyAgICAgICAgKEpTQzo6
Vk06OnJlZ0V4cFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnJlZ0V4cE9iamVjdFNwYWNlKToK
KyAgICAgICAgKEpTQzo6Vk06OnJvcGVTdHJpbmdTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpz
Y29wZWRBcmd1bWVudHNTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpzcGFyc2VBcnJheVZhbHVl
TWFwU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6c3RyaW5nU3BhY2UpOgorICAgICAgICAoSlND
OjpWTTo6c3RyaW5nT2JqZWN0U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6c3RydWN0dXJlQ2hh
aW5TcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKToKKyAg
ICAgICAgKEpTQzo6Vk06OnN0cnVjdHVyZVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmJyYW5k
ZWRTdHJ1Y3R1cmVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpzeW1ib2xUYWJsZVNwYWNlKToK
KyAgICAgICAgKEpTQzo6Vk06OmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFp
bnRzKToKKyAgICAgICAgKEpTQzo6Vk06OmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMpOgorICAgICAgICAoSlNDOjpWTTo6Y29kZUJsb2NrU3BhY2UpOgorICAgICAgICAo
SlNDOjpWTTo6ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6cHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjp1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnNldEZ1enplckFnZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Vk06OlNwYWNlQW5kU2V0OjpTcGFjZUFuZFNldCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OlZNOjpTcGFjZUFuZFNldDo6c2V0Rm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Vk06OmZvckVhY2hDb2RlQmxvY2tTcGFjZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OlZNOjpmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpWTTo6c2V0RnV6emVyQWdl
bnQpOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuaDoK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmg6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oOgorCiAyMDIx
LTExLTMwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgInF1ZXVlVGFza1RvRXZlbnRMb29wIiB0byAicXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9v
cCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNzYwLDkgKzc2MCwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBCiAgICAgaGVhcC9IZWFwSW5saW5lcy5oCiAgICAgaGVhcC9IZWFwT2JzZXJ2ZXIuaAog
ICAgIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5oCisgICAgaGVhcC9IZWFwU3Vic3BhY2VUeXBl
cy5oCiAgICAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAogICAgIGhlYXAvSXNvQ2VsbFNldC5o
CiAgICAgaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5saW5lZEhlYXBDZWxs
VHlwZS5oCisgICAgaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCiAgICAgaGVh
cC9Jc29TdWJzcGFjZS5oCiAgICAgaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAogICAgIGhlYXAv
SXNvU3Vic3BhY2VQZXJWTS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MjksNyArMTQyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBKU0NNZW1vcnlGb290cHJpbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKQEAgLTE3NjIsNyArMTc2Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTk1OCw3ICsxOTU4LDcgQEAKIAkJRTNDNjk0QjMyMzAyNjg3NzAw
NkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzY5NEIxMjMwMjY4NzMwMDZGQkU0MiAvKiBXYXNtT1NSRW50
cnlEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNDNzNBOTEyNUJGQTczQjAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3M0E5MDI1QkZBNzM0
MDBFRkUzMDMgLyogV2FzbVN0cmVhbWluZ1BsYW4uaCAqLzsgfTsKIAkJRTNDNzlDQUIxREI5QTRE
QzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRENjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUUz
QzhFRDQzMjNBMURCQ0IwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M4RUQ0MjIzQTFEQkM1
MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovOyB9OworCQlFM0M4RUQ0MzIz
QTFEQkNCMDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4
IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0NBM0E0RTI1MjdBQjJGMDA0ODAyQkYgLyogSklUT3Bl
cmF0aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNDQTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDOTFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJl
ZkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0QzNTE1RDI0MUI4OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi87IH07
CkBAIC0yMDA5LDYgKzIwMDksNyBAQAogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTI4N0QwMjI1MkZCMkU4MDBENzIz
RjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyODdEMDEyNTJGQjJFODAwRDcyM0Y5IC8qIFZlcmlmaWVyU2xv
dFZpc2l0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4NzVG
MUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9OworCQlG
RTJDQzkzMDI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkNDOTJGMjc1NkIyQjkwMDNG
NUFCOCAvKiBIZWFwU3Vic3BhY2VUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFMzAyMkQzMUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxD
cmFzaEFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTMwMjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzAyMkQ3
MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5z
cGVjdG9yLmggKi87IH07CiAJCUZFMzM2QjUzMjVEQjQ5N0QwMDk4RjAzNCAvKiBNYXJraW5nQ29u
c3RyYWludEV4ZWN1dG9yUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzMzZCNTIyNURCNDk3RDAwOThGMDM0IC8qIE1hcmtpbmdDb25zdHJhaW50
RXhlY3V0b3JQYWlyLmggKi87IH07CkBAIC0yMDQwLDYgKzIwNDEsNyBAQAogCQlGRTYzREQ1NDFF
QTlCNjFFMDAxMDNBNjkgLyogUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2M0RENTMxRUE5QjYwRTAwMTAzQTY5IC8qIFByaW50ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY0ODcy
RTIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9w
Y29kZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTY0OTEzNzFENzhGMDFEMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjQ5MTM2MUQ3OEYw
MTMwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNjVCMTUxMjc0ODYwMUYwMERCNUIxNiAvKiBJc29J
bmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGVJbmxpbmVzLmggKi87IH07CiAJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjU2REQxRTY0RTkyMDAwRDE3ODAx
IC8qIFZNVHJhcHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTc0OTdFNjIwOTAwMUIxMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTc0OTdFNTIwOTAwMUIwMDAw
MzU2NUIgLyogSlNDUHRyVGFnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU0MzQsNiArNTQzNiw3IEBACiAJCUZFMjg3RDAxMjUyRkIyRTgwMEQ3
MjNGOSAvKiBWZXJpZmllclNsb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMkJENjZFMjVDMERDODIwMDk5OUQzQiAvKiBWZXJpZmllclNsb3RW
aXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcmlmaWVy
U2xvdFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJDQzkyRjI3
NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGVhcFN1YnNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxD
cmFzaEFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNp
Z2lsbENyYXNoQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMw
MjJEMTFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NDk2LDYgKzU0OTksNyBAQAogCQlGRTY0ODcyRDIxNDFEMDQ4
MDBBQjBEM0UgLyogT3Bjb2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcGNvZGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjQ5
MTM2MUQ3OEYwMTMwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTY0OTEzODFENzhGM0EzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uU2NvcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY1QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyog
SXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclByaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY4QzYz
NjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTZGNTZEQzFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTVRyYXBzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1ODYsNiArNjU5MCw3IEBACiAJCQkJQTU0QzJB
QUYxQzY1NDREMTAwQTE4RDc4IC8qIEhlYXBTbmFwc2hvdC5oICovLAogCQkJCUE1MzExQzM0MUM3
N0NFQUMwMEU2QjFCNiAvKiBIZWFwU25hcHNob3RCdWlsZGVyLmNwcCAqLywKIAkJCQlBNTMxMUMz
NTFDNzdDRUFDMDBFNkIxQjYgLyogSGVhcFNuYXBzaG90QnVpbGRlci5oICovLAorCQkJCUZFMkND
OTJGMjc1NkIyQjkwMDNGNUFCOCAvKiBIZWFwU3Vic3BhY2VUeXBlcy5oICovLAogCQkJCTBGQURF
NjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKQEAgLTY1OTcsNiArNjYw
Miw3IEBACiAJCQkJRTNDOEVENDEyM0ExREJDNDAwMTMxOTU4IC8qIElzb0hlYXBDZWxsVHlwZS5j
cHAgKi8sCiAJCQkJRTNCRjFCQUQyMzhBQUVEMTAwM0ExQzJCIC8qIElzb0hlYXBDZWxsVHlwZS5o
ICovLAogCQkJCUUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxU
eXBlLmggKi8sCisJCQkJRkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGVJbmxpbmVzLmggKi8sCiAJCQkJMEZEQ0UxMkMxRkFGQjRERTAwNkYzOTAxIC8qIElz
b1N1YnNwYWNlLmNwcCAqLywKIAkJCQkwRkRDRTEyQjFGQUZCNERFMDA2RjM5MDEgLyogSXNvU3Vi
c3BhY2UuaCAqLywKIAkJCQkwRkQyRkQ5MjIwQjUyQkRDMDBGMDk0NDEgLyogSXNvU3Vic3BhY2VJ
bmxpbmVzLmggKi8sCkBAIC0xMDQwNyw2ICsxMDQxMyw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlB
NDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTY1QjE1MTI3NDg2
MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwOTM0LDYgKzEwOTQxLDcgQEAKIAkJCQlFMzM3Qjk2NzIyNDMyNEVBMDA5M0E4
MjAgLyogV2FzbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3
N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkQy
Qjc2MjJGMjc1MDIwMDExNzY1QyAvKiBXYXNtQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTJDQzkzMDI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21D
b250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFG
RkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IG5ld1N0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICogc2l6ZW9mKEpTVmFsdWUpOwogCiAgICAgICAgICAg
ICBpZiAoYWxsb2NhdGluZ0lubGluZSkgewotICAgICAgICAgICAgICAgIEFsbG9jYXRvciBhbGxv
Y2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3IobmV3
U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICAgICAg
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRvckZvcihuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4
aXN0cyk7CiAKICAgICAgICAgICAgICAgICBqaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hHUFIsIEpJ
VEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIz
LCBzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihuZXdTaXplICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHNjcmF0Y2hHUFIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsMTEgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOworCituYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgRnJlcXVlbnRFeGl0U2l0
ZSB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
dmFsQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJs
b2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRXZhbENvZGVCbG9jayogY3Jl
YXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBFdmFsQ29kZUJsb2NrJiBvdGhlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2U6OnZpc2l0Q2hpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2Nr
KTsKICAgICAKICAgICBpZiAoIXZpc2l0b3IuaXNNYXJrZWQoY29kZUJsb2NrKSkKLSAgICAgICAg
dm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycy5hZGQoZWRnZSk7Cisg
ICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKS5hZGQo
ZWRnZSk7CiAgICAgCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2st
PmppdFR5cGUoKSkpIHsKICAgICAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vyc2VsdmVzIHdlJ2xs
IGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBpdApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGkKICAgICAv
LyBub3QgeWV0IG1hcmtlZCBiZWNhdXNlIGl0IHdlYWtseSBkZXBlbmRzIG9uIGEgc3RydWN0dXJl
IHRoYXQgd2UgZGlkIG5vdCB5ZXQgbWFyaywgdGhlbiB3ZQogICAgIC8vIHdpbGwga2VlcCBmaXhw
b2ludGluZyB1bnRpbCB0aGUgZW5kLgogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZXNXaXRoQ29uc3RyYWludHMuYWRkKGVkZ2UpOworICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkuYWRkKGVkZ2UpOwogICAgIGVkZ2UtPnJ1bkNvbnN0cmFp
bnQobG9ja2VyLCB2bSwgdmlzaXRvcik7CiB9CiAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lkIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmZpbmFsaXplCiAgICAgICAgIG1fY29kZUJsb2NrLmNs
ZWFyKCk7CiAgICAgfQogICAgIAotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0
aEZpbmFsaXplcnMucmVtb3ZlKHRoaXMpOwotICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkucmVtb3ZlKHRoaXMpOworICAgIHZtLmV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQogCiBp
bmxpbmUgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjphY3RpdmF0ZSgpCkBAIC0yMDEs
NyArMjAxLDcgQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdAogICAg
IGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2aXNpdG9yKTsKIAogICAgIGlm
ICh2aXNpdG9yLmlzTWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKS5yZW1vdmUodGhpcyk7CiB9
CiAKIHRlbXBsYXRlIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6cnVuQ29uc3RyYWlu
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEFic3RyYWN0U2xvdFZpc2l0b3ImKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1bmN0
aW9uQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29k
ZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5z
cGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rpb25Db2RlQmxvY2smIG90aGVyKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZ3JhbUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJz
cGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMg
UHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQcm9n
cmFtQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBA
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QKICAgICAgICAgbV91bmxp
bmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdC5zZXQodm0sIHRoaXMsIHJlc3VsdCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNl
dC5hZGQodGhpcyk7CisgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNl
dC5hZGQodGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBA
IHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXoKICAgICAgICAgY2xlYXJJ
ZkRlYWQobV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBjbGVhcklmRGVhZCht
X3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICAgICAgaWYgKGlzQ2xlYXJlZCAm
JiAhaXNTdGlsbFZhbGlkKQotICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgdm0udW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSgpLnNldC5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDEzICs0MiwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQ2FjaGVk
RnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25NZXRhZGF0
YU5vZGU7CiBjbGFzcyBQYXJzZXJFcnJvcjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFz
cyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFz
cyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
ewogICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0K
IAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkg
Y29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxU
RFpFbnZpcm9ubWVudExpbms+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBzdGQ6Om9wdGlvbmFs
PFByaXZhdGVOYW1lRW52aXJvbm1lbnQ+IHBhcmVudFByaXZhdGVOYW1lRW52aXJvbm1lbnQsIERl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIE5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyIG5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVu
dCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25z
dHJ1Y3RvciA9IGZhbHNlKQpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsLmNsZWFyKCk7CiAgICAgICAgIG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKLSAgICAgICAgdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZS5zZXQucmVtb3ZlKHRoaXMpOworICAgICAgICB2bS51bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAg
ICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgTGV4aWNhbFNjb3BlRmVh
dHVyZXMgbGV4aWNhbFNjb3BlRmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIGlmIChzaXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChz
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKKyAgICAgICAgaWYg
KEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpKSB7CiAgICAgICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc3RvcmFnZUdQUiwg
SklUQWxsb2NhdG9yOjpjb25zdGFudChhbGxvY2F0b3IpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQ
Uiwgc2xvd0Nhc2VzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKApA
QCAtMTA3MzgsNyArMTA3MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVQcm9wCiAgICAgCiAgICAgc2l6ZV90IHNpemUgPSBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHkg
KiBzaXplb2YoSlNWYWx1ZSk7CiAKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2Nh
dG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAg
ICAgaWYgKCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRI
YXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEwNzgyLDcgKzEwNzgyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBuZXdTaXplID0gb2xk
U2l6ZSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3U2l6ZSA9PSBub2Rl
LT50cmFuc2l0aW9uKCktPm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1
ZSkpOwogICAgIAotICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwobmV3U2l6ZSwgQWxsb2NhdG9y
Rm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVh
bChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBp
ZiAoIWFsbG9jYXRvciB8fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJ
bmRleGluZ0hlYWRlcigpKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTE0OTksNyArMTE0OTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdpCiAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJ
bW0zMih+NyksIHNjcmF0Y2hHUFIpOwogICAgIH0KICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJp
YWJsZVNpemVkKAotICAgICAgICBzdG9yYWdlR1BSLCB2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgIHN0b3JhZ2VHUFIs
IHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoR1BSLCBzY3Jh
dGNoR1BSLAogICAgICAgICBzY3JhdGNoR1BSMiwgc2xvd0Nhc2VzKTsKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBzaXplR1BSKTsKQEAgLTEzNzAwLDcgKzEzNzAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdEFsbG9jYXRlQnV0dGVyZgogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0
KTsKICNlbmRpZgogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAg
IHN0b3JhZ2VSZXN1bHRHUFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIHNj
cmF0Y2gyLCBzY3JhdGNoMSwgc2NyYXRjaDMsIHNsb3dDYXNlcyk7CisgICAgICAgIHN0b3JhZ2VS
ZXN1bHRHUFIsIHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgc2NyYXRjaDIs
IHNjcmF0Y2gxLCBzY3JhdGNoMywgc2xvd0Nhc2VzKTsKICAgICBtX2ppdC5hZGRQdHIoVHJ1c3Rl
ZEltbTMyKHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzdG9yYWdlUmVzdWx0R1BSKTsKIAogICAg
IG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJl
c3VsdEdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzMDEsNyArODMwMSw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5H
U19FTkQKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cih+c3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDcpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxs
b2NhdG9yRm9yU2l6ZSh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UsIGJ5dGVT
aXplLCBzbG93Q2FzZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JT
aXplKHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBieXRlU2l6ZSwgc2xv
d0Nhc2UpOwogICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoYWxsb2Nh
dG9yLCBzbG93Q2FzZSk7CiAKICAgICAgICAgc3BsYXRXb3JkcygKQEAgLTEzOTIyLDcgKzEzOTIy
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5vQnV0dGVyZmx5ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBzdGFydE9mU3RvcmFnZSA9IGFs
bG9jYXRlSGVhcENlbGwoCi0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvckZvclNpemUodm0o
KS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgp
LAorICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JGb3JTaXplKHZtKCkuanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgc2xvd1BhdGgpLAogICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aCk7CiAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdEJ1dHRl
cmZseVZhbHVlID0gbV9vdXQuYWRkKApAQCAtMTUwMTcsNyArMTUwMTcsNyBAQCBJR05PUkVfQ0xB
TkdfV0FSTklOR1NfRU5ECiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5z
ZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMgPSBzaXplSW5WYWx1ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBh
bGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRvckZv
ck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhp
c3RzKTsKKyAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVJbkJ5dGVzLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAgICAgICAgIExWYWx1ZSBzdGFydE9m
U3RvcmFnZSA9IGFsbG9jYXRlSGVhcENlbGwoCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihhbGxvY2F0b3IubG9jYWxBbGxvY2F0b3IoKSksIHNsb3dQYXRoKTsKICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdEJ1dHRlcmZseSA9IG1fb3V0LmFuY2hvcigKQEAgLTE3MDM5LDcgKzE3MDM5
LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMVmFsdWUgYnV0dGVyZmx5
U2l6ZSA9IG1fb3V0LmFkZCgKICAgICAgICAgICAgIHBheWxvYWRTaXplLCBtX291dC5jb25zdElu
dFB0cihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSk7CiAKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRv
ciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwg
YnV0dGVyZmx5U2l6ZSwgZmFpbENhc2UpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxs
b2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ1dHRl
cmZseVNpemUsIGZhaWxDYXNlKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxs
b2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIGZhaWxDYXNlKTsKIAogICAgICAgICBMVmFsdWUgYnV0
dGVyZmx5ID0gbV9vdXQuYWRkKHN0YXJ0T2ZTdG9yYWdlLCBtX291dC5jb25zdEludFB0cihzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9y
L0RTTC5yYgkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ3LDYgKzE0Nyw4IEBAIG1vZHVsZSBEU0wKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2NsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKKwogdm9pZCBkdW1wQnl0ZWNvZGUo
Qnl0ZWNvZGVEdW1wZXJCYXNlKiBkdW1wZXIsIEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQsIGNv
bnN0IEluc3RydWN0aW9uKik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDggKzY2LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuY3Rv
ciYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlVmlhU3Vi
c3BhY2VzKFZNJiwgY29uc3QgRnVuY3RvciYpOwotICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZUN1cnJlbnRseUV4ZWN1dGluZyhjb25zdCBGdW5jdG9yJik7
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgQ29kZUJsb2NrU2V0
OjppdGVyYXRlKGNvbnN0IEFic3RyYWMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LXZvaWQgQ29kZUJsb2NrU2V0OjppdGVyYXRlVmlhU3Vic3BhY2VzKFZNJiB2bSwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKLXsKLSAgICB2bS5mb3JFYWNoQ29kZUJsb2NrU3BhY2UoCi0gICAgICAg
IFsmXSAoYXV0byYgc3BhY2VBbmRTZXQpIHsKLSAgICAgICAgICAgIHNwYWNlQW5kU2V0LnNwYWNl
LmZvckVhY2hMaXZlQ2VsbCgKLSAgICAgICAgICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsLCBI
ZWFwQ2VsbDo6S2luZCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jdG9yKGpzQ2FzdDxDb2Rl
QmxvY2sqPihzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSkpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgQ29k
ZUJsb2NrU2V0OjppdGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgpAQCAtNDAsMTAgKzQxLDEyIEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSGVhcFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSGVhcFNu
YXBzaG90LmgiCisjaW5jbHVkZSAiSGVhcFN1YnNwYWNlVHlwZXMuaCIKICNpbmNsdWRlICJIZWFw
VmVyaWZpZXIuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGlu
ZVNldC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRmlu
YWxpemF0aW9uUmVnaXN0cnkuaCIKQEAgLTI4Niw2ICsyODksMTE0IEBAIEhlYXA6OkhlYXAoVk0m
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVy
UG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBt
X3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQorCisg
ICAgLy8gSGVhcENlbGxUeXBlcworICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKENlbGxBdHRy
aWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKQorICAg
ICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1dGVzKERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKQorICAg
ICwgY2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9u
LCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUo
Q2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCisgICAg
LCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQVBJ
R2xvYmFsT2JqZWN0PigpKQorICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQorICAgICwgY2Fs
bGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tPYmplY3RIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5h
bE9iamVjdD4+KCkpCisgICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKKyAgICAsIGN1c3Rv
bVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0N1c3Rv
bVNldHRlckZ1bmN0aW9uPigpKQorICAgICwgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6QXJnczxEYXRlSW5zdGFuY2U+KCkpCisgICAgLCBlcnJvckluc3RhbmNlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxFcnJvckluc3RhbmNlPigpKQorICAgICwg
ZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNGaW5h
bGl6YXRpb25SZWdpc3RyeT4oKSkKKyAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ+
KCkpCisgICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTR2xvYmFsT2JqZWN0PigpKQorICAgICwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhv
c3Q+KCkpCisgICAgLCBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4oKSkKKyAgICAsIGpz
TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01vZHVsZVJl
Y29yZD4oKSkKKyAgICAsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCisgICAgLCBuYXRpdmVT
dGRGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNOYXRpdmVTdGRG
dW5jdGlvbj4oKSkKKyAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTV2Vha01hcD4oKSkKKyAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTV2Vha1NldD4oKSkKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgICwg
YXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQorICAgICwgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPE9iakNDYWxsYmFja0Z1bmN0
aW9uPigpKQorI2VuZGlmCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyAgICAsIGFwaVdy
YXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKKyAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09i
amVjdDxKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQorICAgICwganNjQ2FsbGJhY2tGdW5j
dGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDQ2FsbGJhY2tGdW5jdGlv
bj4oKSkKKyNlbmRpZgorICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxJbnRsQ29sbGF0b3I+KCkpCisgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxEYXRlVGltZUZvcm1hdD4oKSkKKyAg
ICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPElu
dGxEaXNwbGF5TmFtZXM+KCkpCisgICAgLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bExpc3RGb3JtYXQ+KCkpCisgICAgLCBpbnRsTG9jYWxlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTG9jYWxlPigpKQorICAgICwgaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bE51bWJl
ckZvcm1hdD4oKSkKKyAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50bFJlbGF0aXZlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFJlbGF0aXZlVGltZUZv
cm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBpbnRsU2VnbWVudGVy
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2VnbWVudGVyPigpKQorICAg
ICwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsU2Vn
bWVudHM+KCkpCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgICwgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s+KCkpCisgICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKKyAgICAsIHdlYkFzc2Vt
Ymx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPFdlYkFzc2VtYmx5
RnVuY3Rpb24+KCkpCisgICAgLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5
SW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5TWVtb3J5PigpKQorICAgICwgd2ViQXNzZW1ibHlN
b2R1bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlNb2R1
bGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkpCisgICAgLCB3ZWJBc3Nl
bWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2VtYmx5
VGFibGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SlNXZWJBc3NlbWJseVRhZz4oKSkKKyNlbmRpZgorCisgICAgLy8gQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcnMKKyAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdl
QWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdh
Y2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQor
CisgICAgLy8gU3Vic3BhY2VzCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxs
VHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2
MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2Ug
QXV4aWxpYXJ5IiwgKnRoaXMsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgorICAgICwgaW1tdXRhYmxlQnV0dGVy
Zmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdh
Y2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCAqdGhpcywgaW1tdXRhYmxlQnV0dGVyZmx5
SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3
YTk0NTMwMAorICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCAqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5CisgICAgLCB2
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBTaXplZCBKU0NlbGwiLCAqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2
OWNjCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3Qi
LCAqdGhpcywgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKKyAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXkpCisgICAgLCBiaWdJbnRT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQp
CisgICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxs
VHlwZSwgSlNDYWxsZWUpCisgICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ2xvbmVkQXJndW1lbnRzKQorICAgICwgY3Vz
dG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKKyAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5j
ZSkKKyAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCisgICAg
LCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24p
IC8vIEhhc2g6MHg4MDBmY2E3MgorICAgICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEdldHRlclNldHRlcikKKyAgICAsIGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KQorICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBj
ZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKKyAg
ICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNQcm94eSkKKyAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDY3NTY3Zjk1CisgICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgTnVtYmVyT2JqZWN0KQorICAgICwgcGxhaW5P
YmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNO
b25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCisgICAgLCBwcm9t
aXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJv
bWlzZSkKKyAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQorICAg
ICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAg
ICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHApCisgICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQorICAgICwgcm9w
ZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUs
IEpTUm9wZVN0cmluZykKKyAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHMpCisgICAgLCBzcGFy
c2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFsdWVNYXApCisgICAgLCBzdHJpbmdTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykg
Ly8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgU3RyaW5nT2JqZWN0KQorICAgICwgc3RydWN0
dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwg
U3RydWN0dXJlQ2hhaW4pCisgICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJl
RGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAv
LyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVj
dHVyZSkKKyAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVh
ZmQKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKKyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQorICAgICwg
Y29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMworICAg
ICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1Mjdj
NzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQorCiB7CiAgICAgbV93b3JsZFN0YXRlLnN0
b3JlKDApOwogCkBAIC01NzksMzEgKzY5MCwzMSBAQCB2b2lkIEhlYXA6OmZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplCiB7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBmaW5hbGl6
ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0uZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHZtLnN5bWJvbFRhYmxlU3BhY2UpOwotICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4odm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdl
IHJ1biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5j
ZSBDb2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29k
ZUJsb2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KLSAgICB2bS5mb3JFYWNoQ29k
ZUJsb2NrU3BhY2UoCisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxG
dW5jdGlvbkV4ZWN1dGFibGU+KGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNwYWNlKTsKKyAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFN5bWJvbFRhYmxlPihzeW1ib2xU
YWJsZVNwYWNlKTsKKyAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+KGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZp
bmFsaXplcnMpOyAvLyBXZSBydW4gdGhpcyBiZWZvcmUgQ29kZUJsb2NrJ3MgdW5jb25kaXRpb25h
bCBmaW5hbGl6ZXIgc2luY2UgQ29kZUJsb2NrIGxvb2tzIGF0IHRoZSBvd25lciBleGVjdXRhYmxl
J3MgaW5zdGFsbGVkIENvZGVCbG9jayBpbiBpdHMgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkuCisg
ICAgZm9yRWFjaENvZGVCbG9ja1NwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlKSB7CiAg
ICAgICAgICAgICB0aGlzLT5maW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPENv
ZGVCbG9jaz4oc3BhY2Uuc2V0KTsKICAgICAgICAgfSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4odm0uc3RydWN0dXJlUmFyZURh
dGFTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0udW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zZXQpOwotICAgIGlmICh2bS5tX3dlYWtTZXRTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJr
ZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCp2bS5tX3dlYWtTZXRTcGFjZSk7
Ci0gICAgaWYgKHZtLm1fd2Vha01hcFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKnZtLm1fd2Vha01hcFNwYWNlKTsKLSAgICBp
ZiAodm0ubV93ZWFrT2JqZWN0UmVmU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqdm0ubV93ZWFrT2JqZWN0UmVmU3Bh
Y2UpOwotICAgIGlmICh2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqdm0ubV9lcnJvcklu
c3RhbmNlU3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
U3RydWN0dXJlUmFyZURhdGE+KHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UpOworICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0KTsKKyAgICBpZiAobV93ZWFrU2V0
U3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNX
ZWFrU2V0PigqbV93ZWFrU2V0U3BhY2UpOworICAgIGlmIChtX3dlYWtNYXBTcGFjZSkKKyAgICAg
ICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtNYXA+KCptX3dl
YWtNYXBTcGFjZSk7CisgICAgaWYgKG1fd2Vha09iamVjdFJlZlNwYWNlKQorICAgICAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha09iamVjdFJlZj4oKm1fd2Vh
a09iamVjdFJlZlNwYWNlKTsKKyAgICBpZiAobV9lcnJvckluc3RhbmNlU3BhY2UpCisgICAgICAg
IGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXJyb3JJbnN0YW5jZT4oKm1f
ZXJyb3JJbnN0YW5jZVNwYWNlKTsKIAogICAgIC8vIEZpbmFsaXphdGlvblJlZ2lzdHJpZXMgY3Vy
cmVudGx5IHJlbHkgb24gc2VyaWFsIGZpbmFsaXphdGlvbiBiZWNhdXNlIHRoZXkgY2FuIHBvc3Qg
dGFza3MgdG8gdGhlIGRlZmVycmVkV29ya1RpbWVyLCB3aGljaCBub3JtYWxseSBleHBlY3RzIHRh
c2tzIHRvIG9ubHkgYmUgcG9zdGVkIGJ5IHRoZSBBUEkgbG9jayBob2xkZXIuCi0gICAgaWYgKHZt
Lm1fZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigqdm0ubV9maW5hbGl6
YXRpb25SZWdpc3RyeVNwYWNlKTsKKyAgICBpZiAobV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNl
KQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTRmluYWxp
emF0aW9uUmVnaXN0cnk+KCptX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpOwogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQotICAgIGlmICh2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Up
Ci0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNXZWJBc3Nl
bWJseUNvZGVCbG9jaz4oKnZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSk7CisgICAgaWYg
KG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqbV93ZWJBc3NlbWJs
eUNvZGVCbG9ja1NwYWNlKTsKICNlbmRpZgogfQogCkBAIC05MDUsNyArMTAxNiw3IEBAIHZvaWQg
SGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKIAogICAgIGNvbXBsZXRlQWxsSklU
UGxhbnMoKTsKIAotICAgIHZtLmZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoCisgICAgZm9y
RWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKICAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFuZFNl
dCkgewogICAgICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZSgq
dGhpcyk7CiAgICAgICAgICAgICBhdXRvJiBzZXQgPSBzcGFjZUFuZFNldC5zZXQ7CkBAIC05MjQs
OCArMTAzNSw4IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcyhEZWxldGVBbGwKICAg
ICAgICAgLy8gcG9pbnRzIGludG8gYSBDb2RlQmxvY2sgdGhhdCBjb3VsZCBiZSBkZWFkLiBUaGUg
SUMgd2lsbCBzdGlsbCBzdWNjZWVkIGJlY2F1c2UKICAgICAgICAgLy8gaXQgdXNlcyBhIGNhbGxl
ZSBjaGVjaywgYnV0IHRoZW4gaXQgd2lsbCBjYWxsIGludG8gZGVhZCBjb2RlLgogICAgICAgICBI
ZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICAgICAgaWYg
KHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkgewotICAgICAgICAgICAgdm0ubV93ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlLT5mb3JFYWNoTGl2ZUNlbGwoWyZdIChIZWFwQ2VsbCogY2Vs
bCwgSGVhcENlbGw6OktpbmQga2luZCkgeworICAgICAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKSB7CisgICAgICAgICAgICBtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UtPmZv
ckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChraW5kLCBraW5kID09IEhlYXBDZWxsOjpK
U0NlbGwpOwogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqPihjZWxsKTsKICAgICAgICAg
ICAgICAgICBjb2RlQmxvY2stPmNsZWFySlNDYWxsSUNzKHZtKTsKQEAgLTk0Niw3ICsxMDU3LDcg
QEAgdm9pZCBIZWFwOjpkZWxldGVBbGxVbmxpbmtlZENvZGVCbG9ja3MoRAogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVh
cEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlLnNldC5mb3JFYWNoTGl2ZUNlbGwoCisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTcGFjZS5zZXQuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxs
LCBIZWFwQ2VsbDo6S2luZCkgewogICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGNlbGwpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y2xlYXJDb2RlKHZtKTsKQEAgLTk1NSwx
MCArMTA2NiwxMCBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAK
IHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogewotICAgIHZtKCkuZm9y
RWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uu
c3dlZXAoKTsgfSk7CisgICAgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShbXSAoYXV0byYg
c3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CiAgICAgLy8gU3dlZXBpbmcgbXVzdCBv
Y2N1ciBiZWZvcmUgZGVsZXRpbmcgc3R1YnMsIG90aGVyd2lzZSB0aGUgc3R1YnMgbWlnaHQgc3Rp
bGwgdGhpbmsgdGhleSdyZSBhbGl2ZSBhcyB0aGV5IGdldCBkZWxldGVkLgogICAgIC8vIEFuZCBD
b2RlQmxvY2sgZGVzdHJ1Y3RvciBpcyBhc3N1bWluZyB0aGF0IENvZGVCbG9jayBnZXRzIGRlc3Ry
b3llZCBiZWZvcmUgVW5saW5rZWRDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuCi0gICAgdm0oKS5m
b3JFYWNoQ29kZUJsb2NrU3BhY2UoW10gKGF1dG8mIHNwYWNlKSB7IHNwYWNlLnNwYWNlLnN3ZWVw
KCk7IH0pOworICAgIGZvckVhY2hDb2RlQmxvY2tTcGFjZShbXSAoYXV0byYgc3BhY2UpIHsgc3Bh
Y2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFy
a2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC0yMTAzLDggKzIyMTQsOCBAQCB2
b2lkIEhlYXA6OnN3ZWVwSW5GaW5hbGl6ZSgpCiAgICAgbV9vYmplY3RTcGFjZS5zd2VlcFByZWNp
c2VBbGxvY2F0aW9ucygpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBXZSBob2xk
IG9udG8gYSBsb3Qgb2YgbWVtb3J5LCBzbyBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSB0byBiZSBz
d2VwdCBlYWdlcmx5LgotICAgIGlmICh2bSgpLm1fd2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKLSAg
ICAgICAgdm0oKS5tX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CisgICAgaWYgKG1f
d2ViQXNzZW1ibHlNZW1vcnlTcGFjZSkKKyAgICAgICAgbV93ZWJBc3NlbWJseU1lbW9yeVNwYWNl
LT5zd2VlcCgpOwogI2VuZGlmCiB9CiAKQEAgLTI4MDUsNyArMjkxNiw3IEBAIHZvaWQgSGVhcDo6
YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgIk8iLCAiT3V0cHV0IiwKICAgICAgICAgTUFL
RV9NQVJLSU5HX0NPTlNUUkFJTlRfRVhFQ1VUT1JfUEFJUigoW10gKGF1dG8mIHZpc2l0b3IpIHsK
ICAgICAgICAgICAgIHVzaW5nIFZpc2l0b3IgPSBkZWNsdHlwZSh2aXNpdG9yKTsKLSAgICAgICAg
ICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICAgICAgICAgIEhlYXAqIGhlYXAgPSB2aXNp
dG9yLmhlYXAoKTsKIAogICAgICAgICAgICAgLy8gVGhlIGB2aXNpdG9yMmAgYXJndW1lbnQgaXMg
c3RyYW5nZWx5IG5hbWVkIGJlY2F1c2UgdGhlIFdpbkNhaXJvIHBvcnQKICAgICAgICAgICAgIC8v
IGdldHMgY29uZnVzZWQgIGFuZCB0aGlua3Mgd2UncmUgdHJ5aW5nIHRvIGNhcHR1cmUgdGhlIG91
dGVyIHZpc2l0b3IKQEAgLTI4MjQsMTEgKzI5MzUsMTEgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29u
c3RyYWludHMoKQogCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtS
ZWFzb25TY29wZSByb290U2NvcGUodmlzaXRvciwgUm9vdE1hcmtSZWFzb246OkV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2VzKTsKLSAgICAgICAgICAgICAgICBhZGQodm0uZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMpOworICAgICAgICAgICAgICAgIGFkZChoZWFwLT5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAodm0ubV93ZWFrTWFwU3BhY2UpIHsKKyAgICAgICAgICAgIGlmICho
ZWFwLT5tX3dlYWtNYXBTcGFjZSkgewogICAgICAgICAgICAgICAgIFNldFJvb3RNYXJrUmVhc29u
U2NvcGUgcm9vdFNjb3BlKHZpc2l0b3IsIFJvb3RNYXJrUmVhc29uOjpXZWFrTWFwU3BhY2UpOwot
ICAgICAgICAgICAgICAgIGFkZCgqdm0ubV93ZWFrTWFwU3BhY2UpOworICAgICAgICAgICAgICAg
IGFkZCgqaGVhcC0+bV93ZWFrTWFwU3BhY2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSks
CiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmcsCkBAIC0zMDYy
LDQgKzMxNzMsMTM1IEBAIHZvaWQgSGVhcDo6dmVyaWZ5R0MoKQogICAgIG1fdmVyaWZpZXJTbG90
VmlzaXRvciA9IG51bGxwdHI7CiB9CiAKKyNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1YnNw
YWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1fIyNu
YW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2Up
OyBcCisgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAorICAgIH0KKworCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3BhY2UsIGFw
aUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJy
YXlCdWZmZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlJ
dGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
QmlnSW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
aWdJbnRPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWludDY0QXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coYm9vbGVhbk9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBC
b29sZWFuT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJv
dW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBI
YXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
YWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUs
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYworRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2Us
IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxP
YmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdl
dHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENl
bGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0YVZp
ZXcpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29w
ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dlclNjb3BlKQorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VTcGFjZSwgZXJyb3JJbnN0YW5j
ZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNGbG9hdDMyQXJyYXkpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZmxvYXQ2NEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2
NEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9u
UmFyZURhdGFTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25SYXJl
RGF0YSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnZW5lcmF0b3JT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsIGdsb2JhbE9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2UsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNl
SGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0KQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJheVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU0ludDhBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnQxNkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3BhY2UsIGphdmFTY3JpcHRDYWxsRnJh
bWVIZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsIGpz
TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlLCBKU01vZHVsZVJlY29yZCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZSwgSlNNYXApCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UsIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwgbmF0aXZlU3RkRnVuY3Rp
b25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFlNAor
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5T2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5
UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNUYWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBKU1NjcmlwdEZldGNoZXIpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0QnVja2V0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpT
U2V0OjpCdWNrZXRUeXBlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHNldEl0ZXJhdG9yU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIEpTU2V0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNo
YWRvd1JlYWxtU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxtT2JqZWN0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2YWxBY3RpdmF0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTU3RyaW5nSXRlcmF0b3IpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc291cmNlQ29kZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBKU1NvdXJjZUNvZGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sT2JqZWN0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsSW5zdGFudFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbEluc3Rh
bnQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFp
blRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNV
aW50OEFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4
Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVkQXJyYXkp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJyYXlTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBK
U1VpbnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVu
bGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBV
bmxpbmtlZEV2YWxDb2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWFrTWFwU3BhY2UsIHdlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFz
aDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vh
a1NldFNwYWNlLCB3ZWFrU2V0SGVhcENlbGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4
MWIzMAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RS
ZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVmKSAvLyBIYXNoOjB4OGVj
NjhmMWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3aXRoU2NvcGVT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgZmluYWxpemF0
aW9uUmVnaXN0cnlDZWxsVHlwZSwgSlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKKyNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFw
aVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIG9iakNDYWxsYmFja0Z1
bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweDEwZjYx
MGI4CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgYXBpV3JhcHBl
ck9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNrRnVu
Y3Rpb25TcGFjZSwganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDQ2FsbGJhY2tG
dW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFj
a0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9iamVj
dD4pCisjZW5kaWYKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRs
Q29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3IpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0
U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bERhdGVUaW1lRm9ybWF0
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEaXNwbGF5TmFt
ZXNTcGFjZSwgaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERpc3BsYXlOYW1lcykK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTGlzdEZvcm1hdFNw
YWNlLCBpbnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9j
YWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBD
ZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxU
eXBlLCBJbnRsUGx1cmFsUnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21l
bnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVyYXRvcikKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdt
ZW50ZXJIZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxs
VHlwZSwgSW50bFNlZ21lbnRzKQorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5
OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
RXhjZXB0aW9uU3BhY2UsIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFz
c2VtYmx5RXhjZXB0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlHbG9iYWxTcGFjZSwgd2ViQXNz
ZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlLCB3
ZWJBc3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlT
cGFjZSwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkp
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1
bGVTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlNb2R1
bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmRTcGFjZSwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5VGFibGVTcGFjZSwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlw
ZSwgSlNXZWJBc3NlbWJseVRhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2UsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlLCBK
U1dlYkFzc2VtYmx5VGFnKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKKyNlbmRpZgorCisjdW5k
ZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCisKKyNkZWZpbmUgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpIFwKKyAgICBJc29TdWJzcGFjZSogSGVhcDo6bmFtZSMjU2xvdygpIFwKKyAgICB7IFwK
KyAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VV
bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBoZWFwQ2VsbFR5cGUs
IHR5cGUpOyBcCisgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKKyAgICAgICAgbV8j
I25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAorICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFj
ZTsgXAorICAgIH0KKworRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhl
dmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhl
Y3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZh
M2MKKworI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2lu
Y2x1ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0
LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291
bnRlZFNldC5oIgpAQCAtMzMsNiArMzQsMTEgQEAKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNp
bmNsdWRlICJIZWFwRmluYWxpemVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwT2JzZXJ2ZXIu
aCIKKyNpbmNsdWRlICJJc29DZWxsU2V0LmgiCisjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgi
CisjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgorI2luY2x1ZGUgIklzb1N1YnNw
YWNlLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVk
ZSAiTXV0YXRvclN0YXRlLmgiCkBAIC01OCw5ICs2NCwxMSBAQCBjbGFzcyBDb2xsZWN0aW5nU2Nv
cGU7CiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0Owog
Y2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazsKK2NsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yOwogY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQWN0
aXZpdHlDYWxsYmFjazsKIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsKK2NsYXNzIEdpZ2Fj
YWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmls
ZXI7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CkBAIC02OSw4ICs3Nyw4IEBAIGNsYXNzIEpJVFN0dWJS
b3V0aW5lOwogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBK
U0ltbXV0YWJsZUJ1dHRlcmZseTsKK2NsYXNzIEpTU3RyaW5nOwogY2xhc3MgSlNWYWx1ZTsKLWNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1hY2hpbmVUaHJlYWRzOwogY2xhc3Mg
TWFya1N0YWNrQXJyYXk7CiBjbGFzcyBNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludDsKQEAgLTcy
OSw2ICs3MzcsMzE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcmFsbGVsTWFya2Vyc1Nob3Vs
ZEV4aXQgeyBmYWxzZSB9OwogICAgIExvY2sgbV9jb2xsZWN0Q29udGludW91c2x5TG9jazsKICAg
ICBDb25kaXRpb24gbV9jb2xsZWN0Q29udGludW91c2x5Q29uZGl0aW9uOworCitwdWJsaWM6Cisg
ICAgLy8gSGVhcENlbGxUeXBlcworICAgIEhlYXBDZWxsVHlwZSBhdXhpbGlhcnlIZWFwQ2VsbFR5
cGU7CisgICAgSGVhcENlbGxUeXBlIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKKyAg
ICBIZWFwQ2VsbFR5cGUgY2VsbEhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5cGUgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0NvbnN0cnVjdG9y
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5
cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGds
b2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW5qZWN0ZWRTY3Jp
cHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGphdmFTY3JpcHRD
YWxsRnJhbWVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGpzTW9kdWxlUmVjb3Jk
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBtb2R1bGVOYW1lc3BhY2VPYmplY3RI
ZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENl
bGxUeXBlOworICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+IHN0cmluZ0hlYXBD
ZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2Vha01hcEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgd2Vha1NldEhlYXBDZWxsVHlwZTsKKyAgICBKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CisjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKKyAgICBJc29IZWFwQ2VsbFR5cGUgYXBpV3JhcHBlck9iamVjdEhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFw
Q2VsbFR5cGU7CisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgIElzb0hl
YXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZSBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisjZW5kaWYKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlOworICAgIElzb0hlYXBD
ZWxsVHlwZSBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGlu
dGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTG9jYWxl
SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsTnVtYmVyRm9ybWF0SGVhcENl
bGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7
CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBl
OworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZTsK
KyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyAg
ICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGU7CisgICAgSXNv
SGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxs
VHlwZSB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUg
d2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBl
IHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFz
c2VtYmx5VGFnSGVhcENlbGxUeXBlOworI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9ycworICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3I7CisKKyAgICAvLyBTdWJzcGFjZXMKKyAgICBDb21wbGV0ZVN1YnNwYWNl
IHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5n
cywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVl
cywgZXRjIGdvIGhlcmUuCisgICAgQ29tcGxldGVTdWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlK
U1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29l
cyBoZXJlLgorCisgICAgLy8gV2UgbWFrZSBjcm9zcy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0
IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJpbWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJm
bGllcworICAgIC8vIGJlaW5nIGluIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBl
cywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRoZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKKyAg
ICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBCdXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFy
LCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcgYSBHaWdhY2FnZTo6S2luZAorICAgIC8vIGNv
bnN0YW50IHNvbWV3aGVyZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVy
IGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1
YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpCisgICAg
eworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0
aXZlOgorICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7
CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6CisgICAgICAgICAgICByZXR1cm4ganNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7CisgICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJl
ck9mS2luZHM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsKKyAgICB9CisgICAgCisgICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVz
ZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2Vz
LgorICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOworICAgIENvbXBsZXRlU3Vic3BhY2Ug
dmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0
aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFu
ZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0Ig
Y2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKKyAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0
aWJsZU9iamVjdFNwYWNlOworCisgICAgSXNvU3Vic3BhY2UgYXJyYXlTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBiaWdJbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjYWxsZWVTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBjdXN0b21H
ZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBkYXRlSW5zdGFuY2VTcGFjZTsKKyAg
ICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBleGNlcHRpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJz
cGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnRTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBpbnRlcm5hbEZ1bmN0aW9uU3BhY2U7Cisg
ICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOworICAgIElzb1N1YnNwYWNlIG5hdGl2ZUV4ZWN1
dGFibGVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBudW1iZXJPYmplY3RTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHByb21pc2VTcGFjZTsK
KyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2U7CisgICAgSXNvU3Vi
c3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHJlZ0V4cFNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHJvcGVT
dHJpbmdTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3Ry
aW5nU3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vi
c3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVSYXJl
RGF0YVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNwYWNlOworICAgIElzb1N1YnNw
YWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNw
YWNlOworCisjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobmFtZSkg
XAorICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKKyAgICBJc29TdWJzcGFjZSog
bmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKG1fIyNuYW1lIHx8IG1vZGUgPT0gU3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdl
dCgpOyBcCisgICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKKyAgICB9IFwKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCisgICAgc3RkOjp1bmlx
dWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKKworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmpl
Y3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG9iakNDYWxs
YmFja0Z1bmN0aW9uU3BhY2UpCisjZW5kaWYKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNjQ2FsbGJhY2tG
dW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2Fs
bGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2UpCisjZW5kaWYKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGFwaUdsb2JhbE9iamVjdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpVmFsdWVXcmFwcGVyU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcnJheUJ1ZmZlclNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXJyYXlJdGVyYXRvclNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXN5bmNHZW5lcmF0b3JTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludDY0QXJyYXlT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJpZ0ludE9iamVj
dFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnVWludDY0
QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJvb2xl
YW5PYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGJv
dW5kRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGNhbGxiYWNrQ29uc3RydWN0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRlckZ1bmN0
aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkYXRhVmll
d1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVidWdnZXJT
Y29wZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZXJyb3JJ
bnN0YW5jZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZmxv
YXQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihm
bG9hdDY0QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGZ1bmN0aW9uUmFyZURhdGFTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGdlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZ2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludDhBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50MTZBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50MzJBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoamF2YVNjcmlwdENhbGxGcmFtZVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNNb2R1bGVSZWNvcmRTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcEJ1Y2tldFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIobWFwSXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKG1hcFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIobW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYXRpdmVTdGRGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlPYmplY3RTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHByb3h5UmV2b2tlU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY29wZWRBcmd1bWVudHNU
YWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihzY3JpcHRGZXRjaGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzZXRCdWNrZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHNldEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihzZXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHNoYWRvd1JlYWxtU3BhY2UpOworICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHN0cmluZ0l0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihzb3VyY2VDb2RlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihzeW1ib2xTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbEluc3RhbnRT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxh
aW5UaW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbFRpbWVab25lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih1aW50OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih1aW50OENsYW1wZWRBcnJheVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodWludDE2QXJyYXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHVpbnQzMkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih1bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUihmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha09iamVjdFJlZlNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha1NldFNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2Vha01hcFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERpc3BsYXlOYW1lc1NwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExpc3RGb3JtYXRTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxS
dWxlc1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFJl
bGF0aXZlVGltZUZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0Nh
bGxlZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNz
ZW1ibHlDb2RlQmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5RXhjZXB0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUdsb2JhbFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNZW1vcnlT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5
TW9kdWxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJB
c3NlbWJseU1vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIod2ViQXNzZW1ibHlUYWJsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlUYWdTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UpCisjZW5k
aWYKKworI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIKKyAgICAKKyAg
ICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwor
ICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsK
KworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBcCisg
ICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBuYW1l
KCkgXAorICAgIHsgXAorICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5n
ZXQoKSkgXAorICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKKyAgICAg
ICAgaWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7IFwKKyAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAorICAg
IH0gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOworICAgIAorICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBJc29T
dWJzcGFjZSBzcGFjZTsKKyAgICAgICAgSXNvQ2VsbFNldCBzZXQ7CisgICAgICAgIAorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgICAgIFNwYWNlQW5kU2V0KEFy
Z3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgICAgIDogc3BhY2Uoc3RkOjpmb3J3YXJk
PEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgICAgICwgc2V0KHNwYWNlKQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBJc29DZWxsU2V0JiBz
ZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKmJp
dHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCisgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNo
YXIqPigmc3BhY2UpIC0KKyAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRT
ZXQsIHNwYWNlKSArCisgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0
LCBzZXQpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgU3BhY2VBbmRTZXQgY29kZUJs
b2NrU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFj
aENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICAvLyBUaGlz
IHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJlY2F1c2UgdGhp
cyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgorICAgICAgICAvLyBKU0M6OkNvZGVCbG9jay4KKyAg
ICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7CisgICAgfQorCisgICAgRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVIoZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQor
ICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworICAgIFNwYWNlQW5kU2V0
IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgor
ICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fZXZhbEV4ZWN1dGFibGVTcGFjZSkKKyAgICAgICAgICAgIGZ1
bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2UpOworICAgICAgICBpZiAobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQor
ICAgICAgICAgICAgZnVuYygqbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICAg
ICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKKyAgICB9CisKKyAgICBTcGFjZUFuZFNl
dCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlOworCisjdW5kZWYgRFlOQU1JQ19TUEFD
RV9BTkRfU0VUX0RFRklORV9NRU1CRVIKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworLy8gVGhlIHB1cnBvc2Ug
b2YgdGhpcyBoZWFkZXIgZmlsZSBpcyBzaW1wbHkgdG8gI2luY2x1ZGUgYWxsIHRoZSB0eXBlcwor
Ly8gdGhhdCB3ZSBoYXZlIFN1YnNwYWNlcyBmb3Igc28gdGhhdCBIZWFwLmNwcCdzICNpbmNsdWRl
IGxpc3QgaXMgbm90IGZsb29kZWQKKy8vIHdpdGggdGhlc2UsIGFuZCB0aGF0IGl0J2xsIGJlIGVh
c2llciB0byBkaXNjZXJuIGJldHdlZW4gdGhlc2UgU3Vic3BhY2UgdHlwZXMKKy8vIGZyb20gb3Ro
ZXIgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIEhlYXAuCisKKyNpbmNs
dWRlICJCaWdJbnRPYmplY3QuaCIKKyNpbmNsdWRlICJCb29sZWFuT2JqZWN0LmgiCisjaW5jbHVk
ZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgorI2lu
Y2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKKyNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRl
ICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCisj
aW5jbHVkZSAiSW50bExpc3RGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgor
I2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVu
dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxT
ZWdtZW50cy5oIgorI2luY2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNB
UElWYWx1ZVdyYXBwZXIuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpT
QXJyYXlJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NhbGxlZS5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU01hcC5oIgorI2lu
Y2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpTUHJveHkuaCIKKyNpbmNsdWRlICJKU1Njcmlw
dEZldGNoUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1
ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU291
cmNlQ29kZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiSlNUb1dhc21JQ0NhbGxlZS5oIgorI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKKyNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUds
b2JhbC5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlNZW1vcnkuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRh
Zy5oIgorI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCisjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJvcGVydHlU
YWJsZS5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCisjaW5jbHVkZSAiUmVnRXhwT2JqZWN0
LmgiCisjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiU2hhZG93UmVhbG1P
YmplY3QuaCIKKyNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIlN0
cmluZ09iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3lt
Ym9sT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnQuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKKyNp
bmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVkZSAiT2JqQ0NhbGxiYWNr
RnVuY3Rpb24uaCIKKyNlbmRpZgorCisjaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKKyNpbmNs
dWRlICJKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NDYWxsYmFja0Z1
bmN0aW9uLmgiCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hl
YXBDZWxsVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0hlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDIx
IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29IZWFwQ2VsbFR5cGUoKTsK
IAotICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0cnVjdGlvbk1vZGUs
IERlc3Ryb3lGdW5jdGlvblB0cik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Cisg
ICAgc3RydWN0IEFyZ3MgeworICAgICAgICBBcmdzKCkKKyAgICAgICAgICAgIDogbW9kZShDZWxs
VHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERl
c3RydWN0aW9uKQorICAgICAgICAgICAgLCBmdW5jdGlvblB0cigmQ2VsbFR5cGU6OmRlc3Ryb3kp
CisgICAgICAgIHsgfQorCisgICAgICAgIERlc3RydWN0aW9uTW9kZSBtb2RlOworICAgICAgICBE
ZXN0cm95RnVuY3Rpb25QdHIgZnVuY3Rpb25QdHI7CisgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SXNvSGVhcENl
bGxUeXBlPihDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBE
b2VzTm90TmVlZERlc3RydWN0aW9uLCAmQ2VsbFR5cGU6OmRlc3Ryb3kpOwotICAgIH0KKyAgICBJ
c29IZWFwQ2VsbFR5cGUoQXJnczxDZWxsVHlwZT4mJiBhcmdzKQorICAgICAgICA6IElzb0hlYXBD
ZWxsVHlwZShhcmdzLm1vZGUsIGFyZ3MuZnVuY3Rpb25QdHIpCisgICAgeyB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVl
TGlzdCopIGNvbnN0IGZpbmFsOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveShW
TSYsIEpTQ2VsbCopIGNvbnN0IGZpbmFsOwpAQCAtNTMsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb0hlYXBDZWxsVHlwZShEZXN0
cnVjdGlvbk1vZGUsIERlc3Ryb3lGdW5jdGlvblB0cik7CisKICAgICBEZXN0cm95RnVuY3Rpb25Q
dHIgV1RGX1ZUQkxfRlVOQ1BUUl9QVFJBVVRIX1NUUigiSXNvSGVhcENlbGxUeXBlLmRlc3Ryb3ki
KSBtX2Rlc3Ryb3k7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29J
bmxpbmVkSGVhcENlbGxUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDI4ICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlPgogY2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSBmaW5hbCA6IHB1Ymxp
YyBIZWFwQ2VsbFR5cGUgewogcHVibGljOgotICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGUoKQot
ICAgICAgICA6IEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0
cnVjdGlvbiA/IE5lZWRzRGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsKSkKLSAgICB7Ci0gICAgfQorICAgIElzb0lubGluZWRIZWFwQ2VsbFR5cGUo
KTsKIAogICAgIHN0cnVjdCBEZXN0cm95RnVuYyB7Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKLSAgICAgICAgfQorICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCopIGNvbnN0OwogICAgIH07CiAKLSAg
ICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3Qq
IGZyZWVMaXN0KSBjb25zdCBmaW5hbAotICAgIHsKLSAgICAgICAgaGFuZGxlLmZpbmlzaFN3ZWVw
S25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlzdCwgRGVzdHJveUZ1bmMoKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdCBmaW5hbAotICAgIHsKLSAg
ICAgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Ci0gICAgfQorICAgIHZvaWQgZmluaXNoU3dl
ZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSXNvSW5saW5lZEhl
YXBDZWxsVHlwZS5oIgorCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIElzb0lubGluZWRIZWFw
Q2VsbFR5cGU8Q2VsbFR5cGU+OjpJc29JbmxpbmVkSGVhcENlbGxUeXBlKCkKKyAgICA6IEhlYXBD
ZWxsVHlwZShDZWxsQXR0cmlidXRlcyhDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiA/IE5lZWRz
RGVzdHJ1Y3Rpb24gOiBEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkK
K3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQg
SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OkRlc3Ryb3lGdW5jOjpvcGVyYXRvcigp
KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAoreworICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KK2lubGluZSB2b2lkIElzb0lubGlu
ZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxl
JiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QKK3sKKyAgICBoYW5kbGUuZmluaXNo
U3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKGZyZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENl
bGxUeXBlPENlbGxUeXBlPjo6ZGVzdHJveShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAg
ICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6YXJlTWFyawogLy8gc3dlZXBNb2RlID09IFN3ZWVwVG9G
cmVlTGlzdAogLy8gc2NyaWJibGVNb2RlID09IERvbnRTY3JpYmJsZQogLy8gbmV3bHlBbGxvY2F0
ZWRNb2RlID09IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQKLS8vIGRlc3RydWN0aW9uTW9kZSAh
PSBCbG9ja0hhc0Rlc3RyaWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCisvLyBkZXN0cnVjdGlv
bk1vZGUgIT0gQmxvY2tIYXNEZXN0cnVjdG9yc0FuZENvbGxlY3RvcklzUnVubmluZwogLy8KIC8v
IGVtcHR5TW9kZSA9IElzRW1wdHkKIC8vICAgICBkZXN0cnVjdGlvbk1vZGUgPSBEb2VzTm90TmVl
ZERlc3RydWN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICBj
bGFzcyBKU0NhbGxlZTsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNvdXJjZU9yaWdp
bjsKKyAgICBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVy
YXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IE9sZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShBc3luY0Z1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0dlbmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0l0ZXJhdG9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNJdGVyYXRvclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5j
SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShBdG9taWNzT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIEF0b21pY3NPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoQmlnSW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgQmlnSW50UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5icmFuZGVk
U3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNl
KCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGNoZWNrQnJhbmQoU3ltYm9sKiBi
cmFuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJm
bHlJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6b3B0aW1hCiBpbmxpbmUgQnV0dGVy
Zmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCos
IHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5k
ZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgR0NEZWZlcnJh
bENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6
ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4
aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBkZWZlcnJhbENv
bnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFz
ZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFs
KHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJu
TnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFiYXNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVh
dGVVbgogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKFZN
JiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFj
aXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUlu
Qnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3Bl
cnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
OjpBc3NlcnQpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpBc3NlcnQpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFz
ZSwgcHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTk4LDcgKzk4LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpjcmVhdGVVbmlu
aQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGUoVk0mIHZtLCBKU09iamVj
dCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIsIGNvbnN0IEluZGV4aW5nSGVhZGVyJiBpbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90
YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogYmFzZSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAg
IGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQnV0dGVyZmx5KiByZXN1
bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CkBAIC0x
NzQsNyArMTc0LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJyYXlSaQog
ICAgIHZvaWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIHNpemVf
dCBvbGRTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVh
ZGVyLCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgc2l6ZV90IG5ld1NpemUg
PSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdT
aXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlm
ICghbmV3QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gRklYTUU6IFRoaXMg
cHJvYmFibHkgc2hvdWxkbid0IGJlIGEgbWVtY3B5LgpAQCAtMjExLDEzICsyMTEsMTMgQEAgaW5s
aW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpyZWFsbG9jQXJyYQogICAgIC8vIE9iamVjdHMgd2l0
aCBubyBwcm9wZXJ0aWVzIGFyZSBjb21tb24gaW4gYXJyYXlzLCBhbmQgd2UgYXJlIGZvY3VzaW5n
IG9uIHZlcnkgbGFyZ2UgYXJyYXkgY3JhZnRlZCBieSByZXBlYXRpbmcgQXJyYXkjcHVzaCwgc28u
Li4gdGhhdCdzIGZpbmUhCiAgICAgYm9vbCBjYW5SZWFsbG9jID0gIXByb3BlcnR5Q2FwYWNpdHkg
JiYgIXZtLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2VkKCkgJiYgYml0d2lzZV9jYXN0PEhlYXBD
ZWxsKj4odGhlQmFzZSktPmlzUHJlY2lzZUFsbG9jYXRpb24oKTsKICAgICBpZiAoY2FuUmVhbGxv
YykgewotICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UucmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwgYml0d2lzZV9j
YXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIG5ld0Jhc2UgPSB2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2Nh
dGlvbk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdT
aXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
OwogICAgICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIGZyb21CYXNlKG5ld0Jhc2UsIDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAg
IH0KIAotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdT
aXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
OwogICAgIGlmICghbmV3QmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgZ2NTYWZl
TWVtY3B5KHN0YXRpY19jYXN0PEpTVmFsdWUqPihuZXdCYXNlKSwgc3RhdGljX2Nhc3Q8SlNWYWx1
ZSo+KHRoZUJhc2UpLCBvbGRTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzM5
LDcgQEAgY2xhc3MgQ2FjaGVkQnl0ZWNvZGU7CiBjbGFzcyBTb3VyY2VDb2RlS2V5OwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOworY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAKIGVudW0gY2xhc3MgU291cmNlQ29kZVR5
cGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFy
Z3VtZW50cy5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIp
OwotICAgICAgICByZXR1cm4gJnZtLmNsb25lZEFyZ3VtZW50c1NwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNsb25lZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShDb25zb2xlT2JqZWN0LCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ29uc29sZU9iamVjdCogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJT
ZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0
b21HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0uY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9t
R2V0dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0
dHJpYnV0ZUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIERPTUF0dHJpYnV0ZUdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVy
IGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRlciwgRE9NQXR0cmlidXRlQW5u
b3RhdGlvbiBkb21BdHRyaWJ1dGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kYXRlSW5zdGFuY2VTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5kYXRlSW5zdGFuY2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlSW5z
dGFuY2UqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBkb3VibGUgZGF0ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShEYXRlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1
bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVj
dGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAg
IC8vIENyZWF0ZXMgYW4gYXJndW1lbnRzIG9iamVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6
ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlmIHdlIEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoRXJyb3JQcm90b3R5cGVCYXNlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5leGNlcHRpb25TcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5leGNlcHRpb25TcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhY2tDYXB0
dXJlQWN0aW9uIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXph
dGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0
cnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShGaW5hbGl6YXRpb25SZWdpc3Ry
eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5m
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAogICAgIHN0YXRpYyBGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVs
RXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBJbnRyaW5zaWMgaW50cmluc2ljLCBib29sIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShHZW5lcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0uZ2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
R2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUg
PSBIYXNoTWFwQnVmZmVyOjphbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSk7Ci0gICAgICAgIHZvaWQq
IGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIGFsbG9jYXRpb25TaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJl
dHVybk51bGwpOworICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGFsbG9jYXRpb25TaXplLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIWRhdGEp
IHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKENlbGxUeXBlKSA9PSBzaXplb2YoSW50ZXJuYWxGdW5jdGlvbiksICJJbnRlcm5hbEZ1bmN0
aW9uIHN1YmNsYXNzZXMgdGhhdCBhZGQgZmllbGRzIG5lZWQgdG8gb3ZlcnJpZGUgc3Vic3BhY2VG
b3I8PigpIik7Ci0gICAgICAgIHJldHVybiAmdm0uaW50ZXJuYWxGdW5jdGlvblNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmludGVybmFsRnVuY3Rpb25TcGFjZSgpOwogICAgIH0KIAogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bENvbGxhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bENvbGxhdG9yUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
aXN0Rm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEludGxMaXN0Rm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExpc3RGb3JtYXRQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bExvY2FsZVByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkK
LSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsT2JqZWN0LCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIu
ZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxTZWdtZW50ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
c1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxTZWdtZW50c1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50c1Byb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBKU0FycmF5KiBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBoYXNDb250aWd1b3VzKGluZGV4aW5n
VHlwZSkpOwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0
aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAg
ICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9j
YXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAg
ICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2
ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIGRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKQEAgLTc4LDcg
Kzc4LDcgQEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAg
ICAgICAgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5kZXhCaWFzID0gMDsKICAgICAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gQXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4
Qmlhcywgc3RydWN0dXJlLCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAg
ICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2Nh
dGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRv
dGFsU2l6ZShpbmRleEJpYXMsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIEFycmF5U3RvcmFnZTo6
c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dCwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmFycmF5U3Bh
Y2UoKTsKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlu
bGluZSBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGUoVk0mIHYKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6
b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGhIaW50
KTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
LmFsbG9jYXRlTm9uVmlydHVhbCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAogICAgICAgICAgICAgdm0s
CiAgICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0
cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAg
IG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlID0gQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZTo6RGVmYXVsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlv
bkNvbnRleHQ6OgogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCiAgICAgICAgIHZv
aWQqIHRlbXA7CiAgICAgICAgIHNpemVfdCBzaXplID0gc2l6ZU9mKGxlbmd0aCwgZWxlbWVudFNp
emUpOwotICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGlubGlu
ZSBKU0JpZ0ludCogSlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW4KICAgICB9CiAKICAgICBBU1NFUlQo
bGVuZ3RoIDw9IG1heExlbmd0aCk7Ci0gICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2Yo
RGlnaXQpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAg
IHZvaWQqIGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2Nh
dGVOb25WaXJ0dWFsKHZtLCBsZW5ndGggKiBzaXplb2YoRGlnaXQpLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghZGF0YSkpIHsK
ICAgICAgICAgaWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmJpZ0ludFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmJp
Z0ludFNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBjbGFzcyBJbml0aWFsaXphdGlvblR5cGUg
eyBOb25lLCBXaXRoWmVybyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NhbGxlZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNhbGxlZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNhbGxlZVNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQ2FsbGVlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEYXRhVmlld1Byb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRGF0YVZpZXdQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uZnVuY3Rpb25TcGFjZSgpOwogICAgIH0KICAgICAKICAgICB0eXBlZGVmIEpTQ2FsbGVlIEJh
c2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnRTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVudFNjb3BlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJs
ZUJ1dHRlcmZseS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyAr
MTUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICAvLyBXZSBhbGxvY2F0ZSBvdXQgb2YgdGhlIEpTVmFs
dWUgZ2lnYWNhZ2UgYXMgb3RoZXIgY29kZSBleHBlY3RzIGFsbCBidXR0ZXJmbGllcyB0byBsaXZl
IHRoZXJlLgotICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZs
eUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gT25seSBj
YWxsIHRoaXMgaWYgeW91IGp1c3QgYWxsb2NhdGVkIHRoaXMgYnV0dGVyZmx5LgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24s
ICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICB1c2lu
ZyBCYXNlID0gSlNTeW1ib2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU01vZHVsZUxvYWRlciwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgZW51bSBTdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTT05P
YmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBK
U09OT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2NlCiBDb21wbGV0ZVN1YnNwYWNlKiBKU0ZpbmFsT2JqZWN0
OjpzdWJzcGFjZUZvcihWTSYgdm0pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwotICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlKCk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3Jl
YXRlbGlzdGZyb21hcnJheWxpa2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLnByb21pc2VTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNl
U3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNQcm9taXNl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQcm9taXNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm9taXNlUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogSlNQcm9wZXJ0eU5hbWUKICAgICB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkPihw
cm9wZXJ0eU5hbWVzU2l6ZSkgKiBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPik7CiAgICAg
V3JpdGVCYXJyaWVyPEpTU3RyaW5nPiogcHJvcGVydHlOYW1lc0J1ZmZlciA9IG51bGxwdHI7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcykgewotICAgICAgICBwcm9wZXJ0
eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVy
dHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3RhdGljX2Nhc3Q8V3Jp
dGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCku
YWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMsIG51
bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzU2l6ZTsgKytpKQogICAgICAgICAgICAgcHJv
cGVydHlOYW1lc0J1ZmZlcltpXS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU3BhY2UoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCB1
aW50MzJfdCwgdWludDMyX3QsIFByb3BlcnR5TmFtZUFycmF5JiYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBz
aXplb2YoSlNQcm94eSkpOwotICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5qc1Byb3h5U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNQcm94
eSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5zdHJpbmdTcGFjZSgpOwogICAgIH0KICAgICAKICAgICAvLyBXZSBlbXBs
b3kgb3ZlcmZsb3cgY2hlY2tzIGluIG1hbnkgcGxhY2VzIHdpdGggdGhlIGFzc3VtcHRpb24gdGhh
dCBNYXhMZW5ndGgKQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yb3BlU3RyaW5nU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucm9wZVN0cmluZ1NwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gV2Ug
dXNlIGxvd2VyIDNiaXRzIG9mIGZpYmVyMCBmb3IgZmxhZ3MuIFRoZXNlIGJpdHMgYXJlIHVzYWJs
ZSBkdWUgdG8gYWxpZ25tZW50LCBhbmQgaXQgaXMgT0sgZXZlbiBpbiAzMmJpdCBhcmNoaXRlY3R1
cmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXBJdGVyYXRvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IE1hcEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoTWF0aE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE5hdGl2ZUVycm9yUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLm5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIENv
ZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLm51bWJlck9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoT2JqZWN0UHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgT2JqZWN0
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CisKIGNsYXNz
IFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEdsb2JhbEV4ZWN1dGFibGUgewogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CkBAIC0zOSw3ICs0
MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSgpLnNwYWNlOwogICAgIH0KIAog
ICAgIHN0YXRpYyBQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5VGFibGVTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVmbGVjdE9iamVjdCwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZmxlY3RPYmplY3QqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucmVnRXhwU3BhY2UoKTsKICAgICB9CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUoVk0mLCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIE9wdGlvblNldDxZYXJyOjpGbGFncz4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rl
c3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucmVnRXhwT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgY29uc3RleHByIHVpbnRwdHJfdCBsYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZyA9IDBiMDE7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoUmVnRXhwUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhw
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRz
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBTY29w
ZWRBcmd1bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiBzdG9yYWdlID0gbnVsbHB0cjsKICAgICBpZiAodG90YWxMZW5ndGggPiB0YWJsZS0+
bGVuZ3RoKCkpIHsKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGggPSB0
b3RhbExlbmd0aCAtIHRhYmxlLT5sZW5ndGgoKTsKLSAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19j
YXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQp
KTsKKyAgICAgICAgc3RvcmFnZSA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+
KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRy
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIH0KIAogICAgIFNjb3BlZEFy
Z3VtZW50cyogcmVzdWx0ID0gbmV3ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlZEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVl
ZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1Nw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlKCk7CiAgICAgfQog
CiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0
aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTZXRJdGVyYXRvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNl
dEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShTZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxt
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2hhZG93UmVhbG1Qcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTaGFkb3dS
ZWFsbVByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uc3RyaW5nT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5n
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLnN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnN0cnVjdHVyZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgaXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hh
aW46OmNyZWF0ZShWCiAgICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51
bGxwdHIuCiAgICAgc2l6ZV90IGJ5dGVzID0gQ2hlY2tlZDxzaXplX3Q+KHNpemUpICogc2l6ZW9m
KFN0cnVjdHVyZUlEKTsKLSAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3Ry
dWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkp
OworICAgIFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBi
eXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICBtZW1z
ZXQodmVjdG9yLCAwLCBieXRlcyk7CiAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KHZtKSkgU3RydWN0dXJlQ2hhaW4o
dm0sIHZtLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCB2ZWN0b3IpOwogICAgIGNoYWlu
LT5maW5pc2hDcmVhdGlvbih2bSwgaGVhZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5TcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mLCBKU09iamVjdCopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFy
ZURhdGFTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoU3ltYm9sUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3ltYm9sUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxlU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTeW1ib2xUYWJsZSogY3JlYXRlKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDcgKzMzLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9y
YWxOb3csIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBU
ZW1wb3JhbE5vdyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMjEgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFRlbXBvcmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5j
cHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsMjEgKzMyLDE1IEBACiAjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUg
IkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgotI2luY2x1ZGUgIkJpZ0lu
dE9iamVjdC5oIgotI2luY2x1ZGUgIkJvb2xlYW5PYmplY3QuaCIKLSNpbmNsdWRlICJCcmFuZGVk
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JFeGl0
U2lkZVN0YXRlLmgiCi0jaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgi
Ci0jaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgog
I2luY2x1ZGUgIkRlZmVycmVkV29ya1RpbWVyLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSAiRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmgiCkBAIC01NSw3ICs0OSw2
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgotI2luY2x1ZGUgIkZhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6emVyQWdlbnQu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIgpAQCAtNjYsNzcgKzU5LDI1IEBACiAjaW5jbHVkZSAiSGVhcFByb2ZpbGVyLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ2FjaGUuaCIKLSNpbmNs
dWRlICJJbnRsQ29sbGF0b3IuaCIKLSNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKLSNp
bmNsdWRlICJJbnRsRGlzcGxheU5hbWVzLmgiCi0jaW5jbHVkZSAiSW50bExpc3RGb3JtYXQuaCIK
LSNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCi0jaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgot
I2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5oIgotI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSW50
bFNlZ21lbnRlci5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgotI2luY2x1ZGUgIklzb0hl
YXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKICNpbmNs
dWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogI2luY2x1ZGUg
IkpJVFNpemVTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtzLmgiCiAjaW5jbHVkZSAi
SklUV29ya2xpc3QuaCIKLSNpbmNsdWRlICJKU0FQSUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTQVBJVmFsdWVXcmFwcGVyLmgiCi0jaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCi0j
aW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRl
ICJKU0FycmF5SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNCaWdJbnQuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDYWxsZWUuaCIK
LSNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmgiCi0jaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgotI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHku
aCIKLSNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkpTSmF2YVNj
cmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
Ci0jaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKLSNpbmNsdWRlICJKU05hdGl2
ZVN0ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCiAj
aW5jbHVkZSAiSlNTZXQuaCIKLSNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiSlNUb1dhc21JQ0NhbGxl
ZS5oIgotI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKLSNpbmNsdWRlICJKU1dlYWtNYXAuaCIK
LSNpbmNsdWRlICJKU1dlYWtPYmplY3RSZWYuaCIKLSNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKLSNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5
LmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWcuaCIKLSNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgpAQCAtMTUxLDI3ICs5
MiwxNiBAQAogI2luY2x1ZGUgIlByb2dyYW1Db2RlQmxvY2suaCIKICNpbmNsdWRlICJQcm9ncmFt
RXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5VGFibGUuaCIKLSNpbmNsdWRlICJQcm94
eVJldm9rZS5oIgogI2luY2x1ZGUgIlJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCIKICNpbmNsdWRl
ICJSZWdFeHBDYWNoZS5oIgotI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNh
bXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCi0jaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKICNpbmNs
dWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLSNpbmNsdWRl
ICJTeW1ib2xPYmplY3QuaCIKLSNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCi0jaW5jbHVk
ZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgotI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgotI2lu
Y2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5o
IgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
cy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtMTgzLDE5ICsxMTMsMTYgQEAKICNp
bmNsdWRlICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUg
IldlYWtHQ01hcElubGluZXMuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWFkV3JpdGVMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1NpbXBsZVN0YXRzLmg+CisjaW5jbHVkZSA8
d3RmL1N0YWNrVHJhY2UuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ1Rh
YmxlLmg+CiAKICNpZiBFTkFCTEUoQ19MT09QKQotI2luY2x1ZGUgIkNMb29wU3RhY2suaCIKICNp
bmNsdWRlICJDTG9vcFN0YWNrSW5saW5lcy5oIgogI2VuZGlmCiAKQEAgLTIwNywxNSArMTM0LDYg
QEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNlbmRpZgogCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKLSNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KLSNpZmRlZiBK
U0NfR0xJQl9BUElfRU5BQkxFRAotI2luY2x1ZGUgIkpTQVBJV3JhcHBlckdsb2JhbE9iamVjdC5o
IgotI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ug
SlNDIHsKIAogQXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKQEAgLTI5MSwxMDkg
KzIwOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwKICAgICAs
IG1fcmFuZG9tKE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6emVyKCkgPyBPcHRpb25zOjpz
ZWVkT2ZWTVJhbmRvbUZvckZ1enplcigpIDogY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIo
KSkKICAgICAsIG1faW50ZWdyaXR5UmFuZG9tKCp0aGlzKQogICAgICwgaGVhcCgqdGhpcywgaGVh
cFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRv
cihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1
eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwg
aW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihD
ZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0
aEluZGV4aW5nSGVhZGVyKSkpCi0gICAgLCBjZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVh
cENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2Vs
bDo6SlNDZWxsKSkpCi0gICAgLCBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNBUElHbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBjYWxsYmFja0NvbnN0
cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvcj4oKSkKLSAgICAsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+PigpKQot
ICAgICwgY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKLSAgICAsIGN1c3RvbUdldHRl
ckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0N1c3RvbVNldHRlckZ1bmN0aW9uPigpKQotICAgICwg
ZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPERhdGVJbnN0
YW5jZT4oKSkKLSAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8RXJyb3JJbnN0YW5jZT4oKSkKLSAgICAsIGZpbmFsaXphdGlvblJlZ2lzdHJ5Q2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKSkK
LSAgICAsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKLSAgICAsIGdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0dsb2JhbE9iamVjdD4o
KSkKLSAgICAsIGluamVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q+KCkpCi0gICAgLCBq
YXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
c3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQotICAgICwganNNb2R1bGVSZWNvcmRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNNb2R1bGVSZWNvcmQ+KCkpCi0g
ICAgLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KCkpCi0gICAgLCBuYXRpdmVTdGRGdW5jdGlv
bkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU05hdGl2ZVN0ZEZ1bmN0aW9u
PigpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SXNvSW5saW5lZEhlYXBD
ZWxsVHlwZTxKU1N0cmluZz4+KCkpCi0gICAgLCB3ZWFrTWFwSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha01hcD4oKSkKLSAgICAsIHdlYWtTZXRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWFrU2V0PigpKQotICAgICwgZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU+KCkpCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAgICAsIGFwaVdyYXBwZXJPYmpl
Y3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0j
ZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBlck9iamVj
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlck9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmpl
Y3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+PigpKQotICAgICwganNjQ2FsbGJhY2tGdW5jdGlvbkhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NDYWxsYmFja0Z1bmN0aW9uPigp
KQotI2VuZGlmCi0gICAgLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SW50bENvbGxhdG9yPigpKQotICAgICwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRlVGltZUZvcm1hdD4oKSkKLSAg
ICAsIGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SW50bERpc3BsYXlOYW1lcz4oKSkKLSAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMaXN0Rm9ybWF0PigpKQotICAgICwgaW50bExvY2Fs
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQotICAg
ICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsTnVtYmVyRm9ybWF0PigpKQotICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKLSAgICAsIGludGxSZWxh
dGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJl
bGF0aXZlVGltZUZvcm1hdD4oKSkKLSAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKLSAgICAs
IGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNl
Z21lbnRlcj4oKSkKLSAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnRsU2VnbWVudHM+KCkpCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAg
ICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RXhjZXB0aW9u
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlFeGNlcHRp
b24+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUds
b2JhbEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5R2xv
YmFsPigpKQotICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCkpCi0gICAgLCB3ZWJBc3NlbWJs
eU1lbW9yeUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5
TWVtb3J5PigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkPigpKQotICAgICwgd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5VGFibGU+KCkpCi0gICAgLCB3ZWJB
c3NlbWJseVRhZ0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2Vt
Ymx5VGFnPigpKQotI2VuZGlmCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgKmF1eGlsaWFyeUhlYXBDZWxs
VHlwZSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2
MgotICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2Ug
QXV4aWxpYXJ5IiwgaGVhcCwgKmF1eGlsaWFyeUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgotICAgICwgaW1tdXRhYmxlQnV0dGVy
Zmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkltbXV0YWJsZUJ1dHRlcmZseSBHaWdh
Y2FnZSBKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIiLCBoZWFwLCAqaW1tdXRhYmxlQnV0dGVyZmx5
SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3
YTk0NTMwMAotICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCBoZWFwLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGFkZmI1YTc5Ci0gICAgLCB2
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCJWYXJpYWJsZSBTaXplZCBKU0NlbGwiLCBoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJjZDc2
OWNjCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3Qi
LCBoZWFwLCAqZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkKLSAgICAsIGFycmF5U3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQXJyYXkpCi0gICAgLCBiaWdJbnRT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQp
Ci0gICAgLCBjYWxsZWVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxs
VHlwZSwgSlNDYWxsZWUpCi0gICAgLCBjbG9uZWRBcmd1bWVudHNTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgQ2xvbmVkQXJndW1lbnRzKQotICAgICwgY3Vz
dG9tR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEN1c3RvbUdldHRlclNldHRlcikKLSAgICAsIGRhdGVJbnN0YW5jZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUsIERhdGVJbnN0YW5j
ZSkKLSAgICAsIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIpCi0gICAg
LCBleGNlcHRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRXhjZXB0aW9uKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlKSAvLyBIYXNoOjB4N2I3MzBiMjAKLSAgICAsIGZ1bmN0aW9uU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRnVuY3Rpb24p
IC8vIEhhc2g6MHg4MDBmY2E3MgotICAgICwgZ2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEdldHRlclNldHRlcikKLSAgICAsIGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGUsIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KQotICAgICwgaW50ZXJuYWxGdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpj
ZWxsSGVhcENlbGxUeXBlLCBJbnRlcm5hbEZ1bmN0aW9uKSAvLyBIYXNoOjB4Zjg0NWM0NjQKLSAg
ICAsIGpzUHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNQcm94eSkKLSAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTmF0aXZlRXhlY3V0YWJsZSkg
Ly8gSGFzaDoweDY3NTY3Zjk1Ci0gICAgLCBudW1iZXJPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgTnVtYmVyT2JqZWN0KQotICAgICwgcGxhaW5P
YmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNO
b25GaW5hbE9iamVjdCkgLy8gTWFpbmx5IHVzZWQgZm9yIHByb3RvdHlwZXMuCi0gICAgLCBwcm9t
aXNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJv
bWlzZSkKLSAgICAsIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKQotICAg
ICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKLSAg
ICAsIHJlZ0V4cFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHApCi0gICAgLCByZWdFeHBPYmplY3RTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwT2JqZWN0KQotICAgICwgcm9w
ZVN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUs
IEpTUm9wZVN0cmluZykKLSAgICAsIHNjb3BlZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHMpCi0gICAgLCBzcGFy
c2VBcnJheVZhbHVlTWFwU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIFNwYXJzZUFycmF5VmFsdWVNYXApCi0gICAgLCBzdHJpbmdTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqc3RyaW5nSGVhcENlbGxUeXBlLCBKU1N0cmluZykg
Ly8gSGFzaDoweDkwY2Y3NThmCi0gICAgLCBzdHJpbmdPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU3RyaW5nT2JqZWN0KQotICAgICwgc3RydWN0
dXJlQ2hhaW5TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwg
U3RydWN0dXJlQ2hhaW4pCi0gICAgLCBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVSYXJl
RGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCi0gICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3RydWN0dXJlKSAv
LyBIYXNoOjB4MWYxYmNkY2EKLSAgICAsIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQnJhbmRlZFN0cnVj
dHVyZSkKLSAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbFRhYmxlKSAvLyBIYXNoOjB4YzUyMTVh
ZmQKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzKGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2VzV2l0aEZpbmFsaXplcnMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKQotICAgICwg
Y29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIENvZGVCbG9jaykgLy8gSGFzaDoweDc3ZTY2ZWM5Ci0gICAgLCBmdW5jdGlv
bkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2Vs
bEhlYXBDZWxsVHlwZSwgRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NWQxNThmMwotICAg
ICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1Mjdj
NzdlNwotICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQogICAgICwgdm1UeXBlKHZtVHlwZSkKICAg
ICAsIGNsaWVudERhdGEobnVsbHB0cikKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKQEAg
LTE1NzIsMTM3ICsxMzg3LDYgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiAgICAg
bV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2VuPigpOwogfQogCi0jZGVm
aW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2Vs
bFR5cGUsIHR5cGUpIFwKLSAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAg
eyBcCi0gICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCi0gICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKLSAgICB9Ci0KLQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGFwaUdsb2JhbE9iamVjdFNwYWNlLCAqYXBpR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0FQ
SUdsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhh
cGlWYWx1ZVdyYXBwZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQVBJVmFsdWVXcmFwcGVy
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5QnVmZmVyU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5QnVmZmVyKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGFycmF5SXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXJyYXlJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhhc3luY0dlbmVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBc3luY0dlbmVy
YXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdJbnQ2NEFy
cmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludDY0QXJyYXkpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYmlnSW50T2JqZWN0U3BhY2UsICpjZWxsSGVh
cENlbGxUeXBlLCBCaWdJbnRPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coYmlnVWludDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQmlnVWlu
dDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm9vbGVh
bk9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgQm9vbGVhbk9iamVjdCkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBKU0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6MHhkNzkxNmQ0MQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQ29uc3RydWN0b3JTcGFj
ZSwgKmNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0dsb2Jh
bE9iamVjdFNwYWNlLCAqY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2Fs
bGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RTcGFjZSwgKmNhbGxiYWNrT2JqZWN0SGVh
cENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+KQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2Us
ICpjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJG
dW5jdGlvblNwYWNlLCAqY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZGF0YVZpZXdTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRGF0YVZpZXcpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGVidWdnZXJTY29wZVNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgRGVidWdnZXJTY29wZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsICplcnJvckluc3RhbmNlSGVhcENlbGxUeXBl
LCBFcnJvckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0YQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGZsb2F0MzJBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
SlNGbG9hdDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmxvYXQ2NEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0NjRBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmdW5jdGlvblJhcmVEYXRhU3Bh
Y2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvblJhcmVEYXRhKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdlbmVyYXRvclNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coZ2xvYmFsT2JqZWN0U3BhY2UsICpnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTR2xvYmFsT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGluamVjdGVkU2NyaXB0SG9zdFNwYWNlLCAqaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2Vs
bFR5cGUsIEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3QpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50OEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU0ludDhBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnQxNkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDE2QXJyYXkpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MzJBcnJheVNwYWNlLCAqY2VsbEhl
YXBDZWxsVHlwZSwgSlNJbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSwgKmphdmFTY3JpcHRDYWxsRnJhbWVI
ZWFwQ2VsbFR5cGUsIEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzTW9kdWxlUmVjb3JkU3BhY2UsICpqc01v
ZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVSZWNvcmQpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwQnVja2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU01hcDo6QnVja2V0VHlwZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhtYXBJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXBJdGVyYXRvcikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTTWFwKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKG1vZHVsZU5hbWVzcGFjZU9iamVjdFNwYWNlLCAqbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlvblNwYWNlLCAqbmF0aXZlU3RkRnVu
Y3Rpb25IZWFwQ2VsbFR5cGUsIEpTTmF0aXZlU3RkRnVuY3Rpb24pIC8vIEhhc2g6MHg3MGVkNjFl
NAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5T2JqZWN0U3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwg
UHJveHlSZXZva2UpIC8vIEhhc2g6MHhiNTA2YTkzOQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlLCBTY29wZWRBcmd1bWVudHNUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZSwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjcmlwdEZldGNoZXJTcGFjZSwgKmRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU2NyaXB0RmV0Y2hlcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRCdWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTU2V0OjpCdWNrZXRUeXBlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEl0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldEl0ZXJh
dG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFNoYWRvd1JlYWxt
T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmljdEV2
YWxBY3RpdmF0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJpY3RFdmFsQWN0aXZhdGlv
bikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJdGVyYXRv
clNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJpbmdJdGVyYXRvcikKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3VyY2VDb2RlU3BhY2UsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBKU1NvdXJjZUNvZGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBTeW1ib2wpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3lt
Ym9sT2JqZWN0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBTeW1ib2xPYmplY3QpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bENhbGVuZGFyU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbENhbGVuZGFyKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFj
ZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24pCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbEluc3RhbnQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBv
cmFsUGxhaW5UaW1lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsVGltZVpvbmVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpvbmUp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxU
eXBlLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQxNkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQxNkFy
cmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQzMkFycmF5
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRXZhbENvZGVCbG9ja1NwYWNlLCAqZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrKQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2UsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2spCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCAqd2Vha01h
cEhlYXBDZWxsVHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsICp3ZWFrU2V0SGVhcENl
bGxUeXBlLCBKU1dlYWtTZXQpIC8vIEhhc2g6MHg0Yzc4MWIzMAotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2l0aFNjb3BlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU1dpdGhTY29wZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhm
aW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCAqZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZSwg
SlNGaW5hbGl6YXRpb25SZWdpc3RyeSkKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwg
KmFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpD
Q2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUs
IE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKLSNlbmRpZgotI2lmZGVm
IEpTQ19HTElCX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCAqYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzY0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKmpzY0Nh
bGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ0NhbGxiYWNrRnVuY3Rpb24pCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFs
T2JqZWN0U3BhY2UsICpjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PikKLSNlbmRpZgotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCAq
aW50bENvbGxhdG9ySGVhcENlbGxUeXBlLCBJbnRsQ29sbGF0b3IpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2UsICppbnRsRGF0
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxEYXRlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGlzcGxheU5hbWVzU3BhY2UsICppbnRs
RGlzcGxheU5hbWVzSGVhcENlbGxUeXBlLCBJbnRsRGlzcGxheU5hbWVzKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMaXN0Rm9ybWF0U3BhY2UsICppbnRsTGlz
dEZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bExpc3RGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCAqaW50bExvY2FsZUhlYXBDZWxs
VHlwZSwgSW50bExvY2FsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsICppbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJ
bnRsTnVtYmVyRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludGxQbHVyYWxSdWxlc1NwYWNlLCAqaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLCBJbnRs
UGx1cmFsUnVsZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCAqaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxs
VHlwZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsICppbnRsU2VnbWVudEl0ZXJh
dG9ySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgKmludGxTZWdtZW50ZXJI
ZWFwQ2VsbFR5cGUsIEludGxTZWdtZW50ZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsICppbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUs
IEludGxTZWdtZW50cykKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNlLCAqY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUb1dhc21JQ0NhbGxlZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCAqd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVj
ZAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RXhj
ZXB0aW9uU3BhY2UsICp3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZSwgSlNXZWJBc3Nl
bWJseUV4Y2VwdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3
ZWJBc3NlbWJseUZ1bmN0aW9uU3BhY2UsICp3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBl
LCBXZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4OGI3YzMyZGIKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUdsb2JhbFNwYWNlLCAqd2ViQXNz
ZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlHbG9iYWwpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlJbnN0YW5jZVNwYWNlLCAq
d2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TWVtb3J5
U3BhY2UsICp3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9y
eSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1v
ZHVsZVNwYWNlLCAqd2ViQXNzZW1ibHlNb2R1bGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlN
b2R1bGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRTcGFjZSwgKndlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBl
LCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseVRhYmxlU3BhY2UsICp3ZWJBc3NlbWJseVRhYmxlSGVhcENl
bGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFibGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWdTcGFjZSwgKndlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlLCBKU1dlYkFzc2VtYmx5VGFnKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVmZjAxCi0jZW5kaWYK
LQotI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVwotCi0jZGVm
aW5lIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENl
bGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAotICAg
IHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0g
bWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxU
eXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCi0gICAgICAg
IG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+
c3BhY2U7IFwKLSAgICB9Ci0KLURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1coZXZhbEV4ZWN1dGFibGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2
YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKLURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9E
RUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgKmRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NjUwNmZhM2MKLQotI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cKLQogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNrZXRTbG93KCkKIHsKICAgICBBU1NFUlQo
IW1fc2VudGluZWxTZXRCdWNrZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyOCArMjgsMjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxlZUJpdHMuaCIKICNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiQ29tcGxldGVTdWJzcGFjZS5oIgog
I2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5o
IgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKLSNpbmNsdWRlICJEaXNhbGxvd1ZN
RW50cnkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25FdmVudExvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmgiCi0jaW5jbHVkZSAiRnV6emVyQWdlbnQuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5LmgiCiAjaW5jbHVkZSAiSW50cmlu
c2ljLmgiCi0jaW5jbHVkZSAiSXNvQ2VsbFNldC5oIgotI2luY2x1ZGUgIklzb1N1YnNwYWNlLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09OQXRvbVN0cmluZ0NhY2hlLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCisjaW5j
bHVkZSAiTmF0aXZlRnVuY3Rpb24uaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgpAQCAtNTgsMTAgKzUz
LDggQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIlZNVHJhcHMuaCIK
ICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNs
dWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFy
aXRobWV0aWMuaD4KLSNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC02OSwxMSArNjIsOSBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLSNp
bmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC04MSwxMCArNzIsNiBAQAogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRVhDRVBUSU9OX1ND
T1BFX1ZFUklGSUNBVElPTikKLSNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgotI2VuZGlmCi0K
IC8vIEVuYWJsZSB0aGUgT2JqZWN0aXZlLUMgQVBJIGZvciBwbGF0Zm9ybXMgd2l0aCBhIG1vZGVy
biBydW50aW1lLiBUaGlzIGhhcyB0byBtYXRjaCBleGFjdGx5IHdoYXQgd2UKIC8vIGhhdmUgaW4g
SlNCYXNlLmguCiAjaWYgIWRlZmluZWQoSlNDX09CSkNfQVBJX0VOQUJMRUQpCkBAIC05OCwxNiAr
ODUsMTcgQEAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgUnVuTG9vcDsKIGNsYXNzIFNpbXBsZVN0
YXRzOworY2xhc3MgU3RhY2tUcmFjZTsKIH0gLy8gbmFtZXNwYWNlIFdURgogdXNpbmcgV1RGOjpT
aW1wbGVTdGF0czsKK3VzaW5nIFdURjo6U3RhY2tUcmFjZTsKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbjsKK2NsYXNzIEFyZ0xpc3Q7CiBjbGFzcyBCdWlsdGlu
RXhlY3V0YWJsZXM7CiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OwogY2xhc3MgQ2Fs
bEZyYW1lOwotY2xhc3MgQ2FsbExpbmtJbmZvOwogZW51bSBjbGFzcyBDYWxsTW9kZTsKIHN0cnVj
dCBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZTsKIGNsYXNzIENvZGVCbG9jazsKQEAgLTExNiwx
MDEgKzEwNCw0MSBAQCBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKIGNsYXNzIENvbXBhY3RURFpF
bnZpcm9ubWVudE1hcDsKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogY2xhc3MgQ29udHJvbEZs
b3dQcm9maWxlcjsKLWNsYXNzIEN1c3RvbUdldHRlclNldHRlcjsKLWNsYXNzIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcjsKLWNsYXNzIERhdGVJbnN0YW5jZTsKLWNsYXNzIEVycm9ySW5zdGFuY2U7
CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGNlcHRpb25TY29wZTsKLWNsYXNzIEZhc3RNYWxs
b2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwotY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOwotY2xhc3MgSGFuZGxlU3RhY2s7CitjbGFzcyBGdXp6ZXJBZ2VudDsKIGNsYXNzIEhh
c093blByb3BlcnR5Q2FjaGU7CiBjbGFzcyBIZWFwQW5hbHl6ZXI7CiBjbGFzcyBIZWFwUHJvZmls
ZXI7Ci1jbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSW50ZXJwcmV0ZXI7CiBjbGFzcyBJbnRsQ2Fj
aGU7Ci1jbGFzcyBJbnRsQ29sbGF0b3I7Ci1jbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7Ci1jbGFz
cyBJbnRsRGlzcGxheU5hbWVzOwotY2xhc3MgSW50bExpc3RGb3JtYXQ7Ci1jbGFzcyBJbnRsTG9j
YWxlOwotY2xhc3MgSW50bE51bWJlckZvcm1hdDsKLWNsYXNzIEludGxQbHVyYWxSdWxlczsKLWNs
YXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7Ci1jbGFzcyBJbnRsU2VnbWVudEl0ZXJhdG9yOwot
Y2xhc3MgSW50bFNlZ21lbnRlcjsKLWNsYXNzIEludGxTZWdtZW50czsKLWNsYXNzIEpTQVBJR2xv
YmFsT2JqZWN0OwotY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNBUElX
cmFwcGVyT2JqZWN0OwotY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsKLWNsYXNzIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOwog
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDsK
LWNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwotY2xhc3MgSlNNb2R1bGVSZWNvcmQ7Ci1j
bGFzcyBKU05hdGl2ZVN0ZEZ1bmN0aW9uOwotY2xhc3MgSlNOb25GaW5hbE9iamVjdDsKIGNsYXNz
IEpTT2JqZWN0OwogY2xhc3MgSlNQcm9taXNlOwogY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOwotY2xhc3MgSlNSdW5Mb29wVGltZXI7Ci1jbGFzcyBKU1dlYWtNYXA7Ci1jbGFzcyBKU1dl
YWtTZXQ7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOwotY2xhc3MgSlNXZWJBc3NlbWJs
eUdsb2JhbDsKLWNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLWNsYXNzIEpTV2ViQXNzZW1i
bHlNZW1vcnk7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOwotY2xhc3MgSlNXZWJBc3NlbWJs
eVRhYmxlOwogY2xhc3MgSklUU2l6ZVN0YXRpc3RpY3M7CiBjbGFzcyBKSVRUaHVua3M7Ci1jbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwotY2xhc3Mg
T2JqQ0NhbGxiYWNrRnVuY3Rpb247CiBjbGFzcyBEZWZlcnJlZFdvcmtUaW1lcjsKIGNsYXNzIFJl
Z0V4cDsKIGNsYXNzIFJlZ0V4cENhY2hlOwogY2xhc3MgUmVnaXN0ZXI7Ci1jbGFzcyBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiBjbGFzcyBTYW1w
bGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOwogY2xhc3MgU2hhcmVk
SklUU3R1YlNldDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRl
cjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7Ci1jbGFzcyBTdGFja0ZyYW1lOwogY2xhc3Mg
U3RydWN0dXJlOwotI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKLWNsYXNzIFJlZ0V4cDsKLSNl
bmRpZgogY2xhc3MgU3ltYm9sOwotY2xhc3MgVGVtcG9yYWxEdXJhdGlvbjsKLWNsYXNzIFRlbXBv
cmFsSW5zdGFudDsKIGNsYXNzIFR5cGVkQXJyYXlDb250cm9sbGVyOwotY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKLWNsYXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKLWNsYXNz
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKLWNsYXNzIFZpcnR1YWxSZWdpc3RlcjsK
IGNsYXNzIFZNRW50cnlTY29wZTsKLWNsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7Ci1jbGFzcyBUZW1w
b3JhbFBsYWluVGltZTsKLWNsYXNzIFRlbXBvcmFsVGltZVpvbmU7Ci1jbGFzcyBUb3BMZXZlbEds
b2JhbE9iamVjdFNjb3BlOwogY2xhc3MgVHlwZVByb2ZpbGVyOwogY2xhc3MgVHlwZVByb2ZpbGVy
TG9nOwogY2xhc3MgV2F0Y2hkb2c7Ci1jbGFzcyBXYXRjaHBvaW50OwogY2xhc3MgV2F0Y2hwb2lu
dFNldDsKLWNsYXNzIFdlYkFzc2VtYmx5RnVuY3Rpb247Ci1jbGFzcyBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDsKIAogI2lmIEVOQUJMRShERkdfSklUKSAmJiBBU1NFUlRfRU5BQkxFRAogI2RlZmlu
ZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAxCkBAIC0yMjAsMTAgKzE0OCw2IEBAIGNs
YXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiBjb25zdGV4cHIgYm9vbCB2YWxpZGF0ZURG
R0RvZXNHQyA9IEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9OOwogCi1jbGFzcyBJc29IZWFw
Q2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4gY2xhc3MgSXNvSW5saW5lZEhl
YXBDZWxsVHlwZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4gY2xhc3MgSlNDYWxsYmFja09i
amVjdDsKLQogI2lmIEVOQUJMRShGVExfSklUKQogbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBUaHVu
a3M7CkBAIC0yMzUsMTQgKzE1OSw5IEBAIGNsYXNzIERhdGFiYXNlOwogbmFtZXNwYWNlIERPTUpJ
VCB7CiBjbGFzcyBTaWduYXR1cmU7CiB9Ci1uYW1lc3BhY2UgWWFyciB7Ci1jbGFzcyBNYXRjaGlu
Z0NvbnRleHRIb2xkZXI7Ci19CiAKIHN0cnVjdCBFbnRyeUZyYW1lOwotc3RydWN0IEhhc2hUYWJs
ZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKLXN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKIGNsYXNzIFF1
ZXVlZFRhc2sgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1ZXVlZFRhc2spOwpAQCAtMjYx
LDggKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7CiB9
OwogCi1jbGFzcyBDb25zZXJ2YXRpdmVSb290czsKLQogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoVk0pOwogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTM1NywxMSArMjc0
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBGdXp6ZXJBZ2VudCogZnV6emVyQWdlbnQoKSBj
b25zdCB7IHJldHVybiBtX2Z1enplckFnZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRGdXp6ZXJB
Z2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpCi0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fZnV6emVyQWdlbnQsICJPbmx5
IG9uZSBGdXp6ZXJBZ2VudCBjYW4gYmUgc3BlY2lmaWVkIGF0IGEgdGltZS4iKTsKLSAgICAgICAg
bV9mdXp6ZXJBZ2VudCA9IFdURk1vdmUoZnV6emVyQWdlbnQpOwotICAgIH0KKyAgICB2b2lkIHNl
dEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxGdXp6ZXJBZ2VudD4mJik7CiAKICAgICBzdGF0
aWMgdW5zaWduZWQgbnVtYmVyT2ZJRHMoKSB7IHJldHVybiBzX251bWJlck9mSURzLmxvYWQoKTsg
fQogICAgIHVuc2lnbmVkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpAQCAtNDEzLDE0NSAr
MzI2LDU4IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBIZWFwIGhlYXA7Ci0gICAgCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0TWFs
bG9jQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRv
cjsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGF1eGlsaWFyeUhlYXBDZWxs
VHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gY2VsbEhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNrT2JqZWN0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGN1c3RvbUdl
dHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGZpbmFsaXphdGlvblJlZ2lzdHJ5
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqYXZhU2NyaXB0Q2FsbEZyYW1lSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGpzTW9kdWxl
UmVjb3JkSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSW5saW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4+IHN0cmluZ0hlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWFrTWFwSGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtTZXRI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlPiBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0jaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlXcmFw
cGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IG9iakNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlOwotI2VuZGlmCi0jaWZkZWYgSlND
X0dMSUJfQVBJX0VOQUJMRUQKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBh
cGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBqc2NDYWxsYmFja0Z1bmN0aW9uSGVh
cENlbGxUeXBlOwotI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZv
cm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50ZXJIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21l
bnRzSGVhcENlbGxUeXBlOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUV4Y2VwdGlv
bkhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJB
c3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlNZW1vcnlIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1i
bHlNb2R1bGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlw
ZTsKLSNlbmRpZgorCisgICAgY29uc3QgSGVhcENlbGxUeXBlJiBjZWxsSGVhcENlbGxUeXBlKCkg
eyByZXR1cm4gaGVhcC5jZWxsSGVhcENlbGxUeXBlOyB9CisgICAgY29uc3QgSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUmIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpIHsg
cmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlOyB9OwogCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUU2l6ZVN0YXRpc3RpY3M+IGppdFNpemVT
dGF0aXN0aWNzOwogI2VuZGlmCiAgICAgCi0gICAgQ29tcGxldGVTdWJzcGFjZSBwcmltaXRpdmVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBUeXBlZCBhcnJheXMsIHN0cmluZ3MsIGJpdHZlY3Rv
cnMsIGV0YyBnbyBoZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2U7IC8vIEJ1dHRlcmZsaWVzLCBhcnJheXMgb2YgSlNWYWx1ZXMsIGV0YyBnbyBo
ZXJlLgotICAgIENvbXBsZXRlU3Vic3BhY2UgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2U7IC8vIEpTSW1tdXRhYmxlQnV0dGVyZmx5IGdvZXMgaGVyZS4KLQot
ICAgIC8vIFdlIG1ha2UgY3Jvc3MtY3V0dGluZyBhc3N1bXB0aW9ucyBhYm91dCB0eXBlZCBhcnJh
eXMgYmVpbmcgaW4gdGhlIHByaW1pdGl2ZSBHaWdhY2FnZSBhbmQgYnV0dGVyZmxpZXMKLSAgICAv
LyBiZWluZyBpbiB0aGUgSlNWYWx1ZSBnaWdhY2FnZS4gRm9yIHNvbWUgdHlwZXMsIGl0J3Mgc3Vw
ZXIgb2J2aW91cyB3aGVyZSB0aGV5IHNob3VsZCBnbywgYW5kIHNvIHdlCi0gICAgLy8gY2FuIGhh
cmRjb2RlIHRoYXQgZmFjdC4gQnV0IHNvbWV0aW1lcyBpdCdzIG5vdCBjbGVhciwgc28gd2UgYWJz
dHJhY3QgaXQgYnkgaGF2aW5nIGEgR2lnYWNhZ2U6OktpbmQKLSAgICAvLyBjb25zdGFudCBzb21l
d2hlcmUuCi0gICAgLy8gRklYTUU6IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciBpZiBldmVyeW9u
ZSBhYnN0cmFjdGVkIHRoaXM/Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTI0OAotICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQotICAgIHsKLSAgICAgICAg
c3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKLSAgICAg
ICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgICAgICBj
YXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlOwotICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7Ci0gICAgfQotICAgIAotICAgIC8vIFdoZW5ldmVyIHBvc3NpYmxlLCB1c2Ugc3Vic3BhY2VG
b3I8Q2VsbFR5cGU+KHZtKSB0byBnZXQgb25lIG9mIHRoZXNlIHN1YnNwYWNlcy4KLSAgICBDb21w
bGV0ZVN1YnNwYWNlIGNlbGxTcGFjZTsKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHZhcmlhYmxlU2l6
ZWRDZWxsU3BhY2U7IC8vIEZJWE1FOiBUaGlzIHNwYWNlIGlzIHByb2JsZW1hdGljIGJlY2F1c2Ug
d2UgaGF2ZSB0aGluZ3MgaW4gaGVyZSBsaWtlIERpcmVjdEFyZ3VtZW50cyBhbmQgU2NvcGVkQXJn
dW1lbnRzOyB0aG9zZSBzaG91bGQgYmUgc3BsaXQgaW50byBKU1ZhbHVlT09CIGNlbGxzIGFuZCBK
U1ZhbHVlU3RyaWN0IGF1eGlsaWFyaWVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyODU4Ci0gICAgQ29tcGxldGVTdWJzcGFjZSBkZXN0cnVjdGlibGVPYmplY3RT
cGFjZTsKLSAgICAKLSAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOwotICAgIElzb1N1YnNwYWNl
IGJpZ0ludFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGNsb25lZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNl
dHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOwotICAgIElzb1N1
YnNwYWNlIGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4
Y2VwdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGdl
dHRlclNldHRlclNwYWNlOwotICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dFNwYWNlOwotICAgIElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKLSAgICBJc29T
dWJzcGFjZSBqc1Byb3h5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNw
YWNlOwotICAgIElzb1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNl
IHBsYWluT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOwotICAgIElz
b1N1YnNwYWNlIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBw
cm9wZXJ0eVRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2UgcmVnRXhwT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmluZ1Nw
YWNlOwotICAgIElzb1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOwotICAgIElzb1N1YnNw
YWNlIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBz
dHJ1Y3R1cmVDaGFpblNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3Bh
Y2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYnJh
bmRlZFN0cnVjdHVyZVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7Cisg
ICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBwcmltaXRpdmVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBqc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGltbXV0YWJsZUJ1dHRl
cmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbW11dGFi
bGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6
S2luZCBraW5kKSB7IHJldHVybiBoZWFwLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uoa2luZCk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGNlbGxTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuY2VsbFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiB2
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC52YXJpYWJsZVNpemVkQ2VsbFNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBkZXN0cnVjdGlibGVP
YmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7IH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGFycmF5U3BhY2UoKSB7IHJldHVybiBoZWFw
LmFycmF5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBiaWdJbnRTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuYmlnSW50U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBjYWxsZWVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY2FsbGVlU3BhY2U7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBjbG9uZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuY2xvbmVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNw
YWNlJiBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuY3VzdG9tR2V0dGVy
U2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBkYXRlSW5zdGFu
Y2VTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZGF0ZUluc3RhbmNlU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0
dXJuIGhlYXAuZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIElzb1N1YnNwYWNlJiBleGNlcHRpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZXhjZXB0aW9u
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBleGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlU3BhY2UoKSB7IHJldHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGZ1bmN0aW9uU3BhY2UoKSB7
IHJldHVybiBoZWFwLmZ1bmN0aW9uU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNw
YWNlJiBnZXR0ZXJTZXR0ZXJTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2V0dGVyU2V0dGVyU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBnbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnRTcGFjZSgpIHsgcmV0dXJuIGhlYXAuZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UoKSB7
IHJldHVybiBoZWFwLmludGVybmFsRnVuY3Rpb25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGpzUHJveHlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuanNQcm94eVNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbmF0aXZlRXhlY3V0YWJsZVNwYWNlKCkg
eyByZXR1cm4gaGVhcC5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBudW1iZXJPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAubnVtYmVyT2Jq
ZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwbGFpbk9iamVjdFNw
YWNlKCkgeyByZXR1cm4gaGVhcC5wbGFpbk9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgcHJvbWlzZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9taXNlU3BhY2U7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5VGFibGVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAucHJvcGVydHlUYWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgcmVnRXhwU3BhY2UoKSB7IHJldHVybiBoZWFwLnJlZ0V4cFNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgcmVnRXhwT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLnJl
Z0V4cE9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgcm9wZVN0
cmluZ1NwYWNlKCkgeyByZXR1cm4gaGVhcC5yb3BlU3RyaW5nU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIElzb1N1YnNwYWNlJiBzY29wZWRBcmd1bWVudHNTcGFjZSgpIHsgcmV0dXJuIGhlYXAu
c2NvcGVkQXJndW1lbnRzU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBz
cGFyc2VBcnJheVZhbHVlTWFwU3BhY2UoKSB7IHJldHVybiBoZWFwLnNwYXJzZUFycmF5VmFsdWVN
YXBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cmluZ1NwYWNlKCkg
eyByZXR1cm4gaGVhcC5zdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3Bh
Y2UmIHN0cmluZ09iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJpbmdPYmplY3RTcGFjZTsg
fQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZUNoYWluU3BhY2UoKSB7
IHJldHVybiBoZWFwLnN0cnVjdHVyZUNoYWluU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1
cmVSYXJlRGF0YVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0
dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxXQVlTX0lO
TElORSBJc29TdWJzcGFjZSYgYnJhbmRlZFN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5i
cmFuZGVkU3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBz
eW1ib2xUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zeW1ib2xUYWJsZVNwYWNlOyB9CiAKICNk
ZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAgdGVt
cGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAot
ICAgIHsgXAotICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6
Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKLSAg
ICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0gXAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
U3Vic3BhY2U+IG1fIyNuYW1lOwotCisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSogbmFt
ZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2RlPigpOyB9CiAKICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9i
amVjdFNwYWNlKQpAQCAtNjU3LDc0ICs0ODMsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKICN1bmRl
ZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSCi0gICAgCi0gICAgSXNvQ2VsbFNl
dCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50czsKLSAgICBJc29DZWxs
U2V0IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7CisKKyAgICBBTFdB
WVNfSU5MSU5FIElzb0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0
cmFpbnRzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50czsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNldCYgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsgfQogCiAjZGVmaW5lIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBt
b2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlmIChh
dXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCi0gICAgICAgICAgICByZXR1cm4g
JnNwYWNlQW5kU2V0LT5zcGFjZTsgXAotICAgICAgICBpZiAobW9kZSA9PSBTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KSBcCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgXAotICAgICAg
ICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCi0gICAgfSBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUj
I1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8jI25hbWU7Ci0g
ICAgCi0gICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKLSAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOworICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7IHJl
dHVybiBoZWFwLm5hbWU8bW9kZT4oKTsgfQogCi0gICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOwot
ICAgICAgICBJc29DZWxsU2V0IHNldDsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KLSAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQotICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKQotICAgICAgICAgICAgLCBzZXQoc3BhY2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYg
c3BhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0Nl
bGxTZXQqPigKLSAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQot
ICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKLSAg
ICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOwotICAgICAg
ICB9Ci0gICAgfTsKLSAgICAKLSAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2Uo
Y29uc3QgRnVuYyYgZnVuYykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNs
dWRlIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNj
bGFzc2VzIG9mCi0gICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgotICAgICAgICBmdW5jKGNvZGVC
bG9ja1NwYWNlKTsKLSAgICB9CisgICAgdXNpbmcgU3BhY2VBbmRTZXQgPSBIZWFwOjpTcGFjZUFu
ZFNldDsKKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBjb2RlQmxvY2tTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuY29kZUJsb2NrU3BhY2U7IH0KIAogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NF
VF9ERUZJTkVfTUVNQkVSKGV2YWxFeGVjdXRhYmxlU3BhY2UpCiAgICAgRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVIobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAgICBT
cGFjZUFuZFNldCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKLSAgICBTcGFjZUFuZFNldCBwcm9n
cmFtRXhlY3V0YWJsZVNwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hTY3JpcHRFeGVjdXRhYmxlU3BhY2UoY29uc3QgRnVuYyYgZnVuYykKLSAgICB7
Ci0gICAgICAgIGlmIChtX2V2YWxFeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5jKCpt
X2V2YWxFeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKGZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlKTsKLSAgICAgICAgaWYgKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSkKLSAgICAg
ICAgICAgIGZ1bmMoKm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGZ1
bmMocHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgfQotCi0gICAgU3BhY2VBbmRTZXQgdW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsKIAotI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSCisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgZnVuY3Rp
b25FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLmZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYgcHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgU3BhY2VBbmRTZXQmIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKSB7IHJl
dHVybiBoZWFwLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KIAogICAgIFZNVHlw
ZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0YSogY2xpZW50RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNSW5saW5lcy5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFbnRyeUZyYW1lLmgiCisj
aW5jbHVkZSAiRnV6emVyQWdlbnQuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgpAQCAtOTAsNCArOTEsMTAgQEAg
aW5saW5lIENhbGxGcmFtZSogVk06OnRvcEpTQ2FsbEZyYW1lKCkgYwogICAgIHJldHVybiBmcmFt
ZTsKIH0KIAoraW5saW5lIHZvaWQgVk06OnNldEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0cjxG
dXp6ZXJBZ2VudD4mJiBmdXp6ZXJBZ2VudCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01F
U1NBR0UoIW1fZnV6emVyQWdlbnQsICJPbmx5IG9uZSBGdXp6ZXJBZ2VudCBjYW4gYmUgc3BlY2lm
aWVkIGF0IGEgdGltZS4iKTsKKyAgICBtX2Z1enplckFnZW50ID0gV1RGTW92ZShmdXp6ZXJBZ2Vu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYWtNYXBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWFrTWFwUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShXZWFrT2JqZWN0UmVmUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgV2Vha09iamVjdFJlZlByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha1NldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtTZXRQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlKCk7CiAgICAgfQogCiAgICAgSlNEb2xsYXJWTUNhbGxGcmFtZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIFJv
b3QqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTI4Nyw3ICsyODcs
NyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9v
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTaW1wbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC00MjYsNyArNDI2LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC01MDgsNyArNTA4
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCkBAIC01OTAsNyArNTkwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5j
ZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJ1bnRpbWVBcnJheSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtODcyLDcgKzg3Miw3
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQpAQCAtODk3LDcgKzg5Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIE9iamVjdERvaW5nU2lk
ZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyhWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgSlNUZXN0Q3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkBAIC0xODM4LDcgKzE4MzgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgY2xhc3MgQ2xpZW50IGZpbmFsIDogcHVibGljIFdhc206
OlN0cmVhbWluZ1BhcnNlckNsaWVudCB7CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRl
c3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgV2FzbVN0cmVhbWluZ0NvbXBp
bGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkNvbXBpbGVyTW9kZSBjb21w
aWxlck1vZGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlz
ZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3Bh
Y2UoKTsKICAgICB9CiAgICAgCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXZWJBc3NlbWJseSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTV2ViQXNzZW1ibHkqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJs
eUV4Y2VwdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlHbG9iYWxQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUluc3Rh
bmNlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VGFnUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjgxIEBACisyMDIxLTExLTMwICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN1YnNwYWNlcyBmcm9tIFZNIHRvIEhlYXAuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NDgKKyAg
ICAgICAgcmRhcjovLzg1ODc1NzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gRW1iZWQgSXNvSGVhcENlbGxUeXBlIGluc3RhbmNlcyBpbiBKU1ZN
Q2xpZW50RGF0YSBkaXJlY3RseSBpbnN0ZWFkIG9mCisgICAgICAgICAgIG1hbGxvYydpbmcgdGhl
bSBzZXBhcmF0ZWx5IGFuZCByZWZlcmVuY2luZyB0aGVtIHZpYSB1bmlxdWVfcHRycy4gIFRoZXNl
CisgICAgICAgICAgIGluc3RhbmNlcyBhcmUgYWx3YXlzIGluc3RhbnRpYXRlZCB1bmNvbmRpdGlv
bmFsbHkgYW55d2F5LiAgVGhpcyBjaGFuZ2UKKyAgICAgICAgICAgZWxpbWluYXRlcyB0aGUgdW5u
ZWVkZWQgYnVzeSB3b3JrIHRvIGFsbG9jYXRlIHRoZW0gc2VwYXJhdGVseS4KKworICAgICAgICAy
LiBBZGQgbWlzc2luZyBpbml0aWFsaXphdGlvbiBvZiBKU1ZNQ2xpZW50RGF0YTo6bV9oZWFwQ2Vs
bFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLgorICAgICAgICAgICBUaGlzIGhhc24n
dCBiZWVuIGFuIGlzc3VlIHNvIGZhciBiZWNhdXNlIHdlIGRvbid0IGN1cnJlbnRseSBhbGxvdyBz
aGFyZWQgd29ya2Vycy4KKworICAgICAgICAzLiBSZWJhc2UgYmluZGluZ3MgdGVzdCByZXN1bHRz
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5k
b3cuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkU3Rhcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxUcmFjZXI6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpzdWJzcGFj
ZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09ORE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REZWZhdWx0VG9KU09OOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Ojpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWw6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERvbWFpblNl
Y3VyaXR5OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEVuYWJsZWRCeVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldERPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25ET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVz
Q2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRl
cmFibGVQcm90b3R5cGVGdW5jdGlvbl9lbnRyaWVzQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEl0ZXJhYmxlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZTo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RN
YXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZXNw
YWNlT2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvbl9lbnRyaWVzQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5v
ZGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpET01Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1h
cExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RSZWFkT25seU1hcExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2V0TGlrZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXI6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzRE9NQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3Bl
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2xldEds
b2JhbFNjb3BlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVj
dEltcDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaDoKKwogMjAyMS0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ2ZmMgdG8gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTRE9NQXN5bmNJdGVy
YXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0RPTUl0ZXJhdG9yUHJvdG90eXBl
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJ
dGVyYXRvci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsOSArNTUsOSBAQCBJc29TdWJzcGFjZSogSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3RlbURpcmVjdG9yeUhh
bmRsZUl0ZXJhdG9yPiB8fCAhSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0
b3I+KQotICAgICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvclNwYWNlKG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgZWxzZQotICAgICAg
ICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAg
ICAgICBjbGllbnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNl
KG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsK
ICAgICBhdXRvKiBzcGFjZSA9IGNsaWVudERhdGEuZmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0
ZXJhdG9yU3BhY2UoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1JlbW90ZURPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV2luZG93UHJveHku
aCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKQEAgLTU5LDMzICs2MCwzNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
SlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1
bmN0aW9ucyh2bSkKICAgICAsIG1fYnVpbHRpbk5hbWVzKHZtKQotICAgICwgbV9ydW50aW1lQXJy
YXlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxSdW50aW1lQXJyYXk+
KCkpCi0gICAgLCBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PigpKQotICAgICwgbV93aW5k
b3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2luZG93
UHJveHk+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93KEpTQzo6SXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNET01XaW5kb3c+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZv
ckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVG
b3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTUmVtb3Rl
RE9NV2luZG93PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3Bl
KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXb3JrZXJHbG9iYWxTY29wZT4oKSkKKyAg
ICAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdz
PFJ1bnRpbWVBcnJheT4oKSkKKyAgICAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZShKU0M6
Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0PigpKQor
ICAgICwgbV93aW5kb3dQcm94eUhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU1dpbmRvd1Byb3h5PigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdyhK
U0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0RPTVdpbmRvdz4oKSkKKyAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlw
ZTo6QXJnczxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPigpKQorICAgICwgbV9oZWFwQ2Vs
bFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1Jl
bW90ZURPTVdpbmRvdz4oKSkKKyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxT
Y29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dvcmtlckdsb2JhbFNjb3BlPigpKQor
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpBcmdzPEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+KCkpCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oKSkKICNlbmRpZgotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9i
YWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV29ya2xldEdsb2JhbFNjb3Bl
PigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKICNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU+KCkpCisgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZT4oKSkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgLCBtX2hlYXBDZWxsVHlw
ZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JK
U0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAgICAsIG1faGVhcENlbGxUeXBlRm9y
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0PigpKQotICAgICwgbV9kb21CdWlsdGlu
Q29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQotICAgICwgbV9kb21Db25zdHJ1
Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU0RPTUNvbnN0cnVjdG9yQmFzZSkKLSAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NT2Jq
ZWN0KQotICAgICwgbV9kb21XaW5kb3dQcm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NV2luZG93UHJvcGVydGllcykKLSAg
ICAsIG1fcnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1fcnVu
dGltZUFycmF5SGVhcENlbGxUeXBlLCBSdW50aW1lQXJyYXkpCi0gICAgLCBtX3J1bnRpbWVNZXRo
b2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
UnVudGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1Ci0gICAgLCBtX3J1bnRpbWVPYmplY3RT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0KQotICAgICwgbV93aW5kb3dQcm94eVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBl
LCBKU1dpbmRvd1Byb3h5KQotICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKm1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xv
YmFsT2JqZWN0LCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCisgICAgLCBtX2hlYXBD
ZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KCkpCisgICAgLCBtX2Rv
bUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlKQorICAgICwgbV9k
b21Db25zdHJ1Y3RvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNET01Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbU5hbWVzcGFjZU9i
amVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNET01PYmplY3QpCisgICAgLCBtX2RvbVdpbmRvd1Byb3BlcnRpZXNTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NV2luZG93UHJv
cGVydGllcykKKyAgICAsIG1fcnVudGltZUFycmF5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVBcnJheSkKKyAgICAsIG1f
cnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgUnVudGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBtX3J1
bnRpbWVPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1bnRpbWVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QpCisgICAgLCBtX3dp
bmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV93aW5kb3dQcm94eUhl
YXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKKyAgICAsIG1faWRiU2VyaWFsaXphdGlvblNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0LCBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QpCiAgICAg
LCBtX3N1YnNwYWNlcyhtYWtlVW5pcXVlPERPTUlzb1N1YnNwYWNlcz4oKSkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtOTIsMjYgKzkyLDI2IEBAIHByaXZhdGU6CiAgICAgSlNCdWlsdGluRnVuY3Rpb25z
IG1fYnVpbHRpbkZ1bmN0aW9uczsKICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzIG1fYnVpbHRpbk5h
bWVzOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVB
cnJheUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpI
ZWFwQ2VsbFR5cGU+IG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFw
Q2VsbFR5cGUgbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFwQ2Vs
bFR5cGUgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxU
eXBlIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGU7CiBwdWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBD
ZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdzsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9i
YWxTY29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENl
bGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxs
VHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93OworICAgIEpTQzo6SXNvSGVhcENlbGxU
eXBlIG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBK
U0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93Owor
ICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxT
Y29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlw
ZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNj
b3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0
R2xvYmFsU2NvcGU7CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9y
SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hl
YXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CiAjZW5kaWYKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJp
YWxpemF0aW9uR2xvYmFsT2JqZWN0OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENl
bGxUeXBlRm9ySlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0OwogCiBwcml2YXRlOgogICAg
IEpTQzo6SXNvU3Vic3BhY2UgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDg1MiwxMyArNDg1MiwxMyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQo
KSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4i
KTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNs
aWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1lfSk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ik
e2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfSwgJHtj
bGFzc05hbWV9KTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgJHtjbGFzc05hbWV9PiB8fCAhJHtjbGFzc05hbWV9OjpuZWVkc0Rlc3RydWN0aW9u
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4p
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsICR7
Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGVsc2VcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7Y2xh
c3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtjbGFz
c05hbWV9KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFi
bGUtY29kZVwiKVxuIik7CkBAIC02NzMxLDkgKzY3MzEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgJHtpdGVyYXRvck5hbWV9PiB8fCAhJHtpdGVyYXRv
ck5hbWV9OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2l0ZXJhdG9yTmFtZX0+KQot
ICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2l0ZXJhdG9yTmFtZX0pOworICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgJHtpdGVyYXRvck5hbWV9KTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
JHtpdGVyYXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVy
YXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJhdG9yTmFtZX0pOwogICAgICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5hbWV9LmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKFwidGF1dG9sb2dpY2FsLWNvbXBhcmVcIikKQEAgLTc1MjksNyArNzUyOSw3IEBA
IHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSlc
biIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKCR7
cHJvdG90eXBlQ2xhc3NOYW1lfSwgQmFzZSk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTtcbiIpOworICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7XG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSlcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjksNyArMzY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNET01X
aW5kb3c6OnN1YnNwYWNlRgogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2Vz
KCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cu
Z2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRP
TVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2luZG93
KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5
cGVGb3JKU0RPTVdpbmRvdywgSlNET01XaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JET01XaW5kb3cuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNE
T01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNET01XaW5kb3cuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTRE9NV2luZG93UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU0RlZGljYXRlZFdvcmtlckdsb2JhCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0g
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRTdGFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2VkU3RhclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjM2LDkg
KzIzNiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFN0YXI6OnN1YnNwYWMKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4gfHwgIUpTRXhwb3NlZFN0YXI6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkU3Rhcj4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0V4cG9zZWRTdGFyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rh
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRTdGFyKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3Nl
ZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3Rhci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjUy
LDkgKzI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRXhwb3NlZFRvV29ya2VyQW5kV2kKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+IHx8
ICFKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckV4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcg
KzE2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2MKICAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xl
dEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyAr
MTY5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsUwogICAgIGF1
dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw3ICsxNTMsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1NoYXJlZFdvcmtlckdsb2JhbFNj
CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdl
dCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVG
b3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLCBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFj
dGlvbnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTQzOCw5ICs0MzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9u
czo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPiB8
fCAhSlNUZXN0Q0VSZWFjdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VS
ZWFjdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
Q0VSZWFjdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9u
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI2NCw5ICsyNjQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXI+IHx8ICFKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTUxMyw5ICs1MTMsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzCiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdENhbGxUcmFjZXI+IHx8ICFKU1Rlc3RDYWxsVHJhY2VyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdENhbGxUcmFjZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0Q2FsbFRyYWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFj
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzYsOSAr
MTc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdAogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cj4gfHwgIUpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTc4OSw5ICs3ODksOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RDb25kaXRpb25hbEluY2x1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+IHx8ICFKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1
ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTYxMSw5ICs2MTEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDb25kaXRp
b25hbGx5UmVhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFs
bHlSZWFkV3JpdGU+IHx8ICFKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0xMjUyLDkgKzEyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RET01KSVQ6OnN1YnNwYWNlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERPTUpJVD4gfHwgIUpTVGVzdERPTUpJVDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RET01KSVQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0RE9NSklUKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RET01KSVQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJ
VCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT04uY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtODA4LDkgKzgwOCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRUb0pTT046OnMKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4gfHwgIUpTVGVzdERlZmF1bHRU
b0pTT046Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVm
YXVsdFRvSlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T04gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT04pOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTi5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+IHx8
ICFKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTYyLDkgKzE2Miw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+IHx8ICFKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5Miw5ICsyOTIsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PiB8fCAhSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMiw5ICsz
MzIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+IHx8
ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkCiAgICAgICAgIHJldHVybiBzcGFj
ZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFK
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjAs
OSArMzIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RG9tYWluU2VjdXJpdHk6OgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4gfHwgIUpTVGVz
dERvbWFpblNlY3VyaXR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERvbWFpblNl
Y3VyaXR5PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERvbWFpblNlY3Vy
aXR5KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNl
Y3VyaXR5LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC00NTksOSArNDU5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nPiB8fCAhSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFi
bGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg2LDkgKzE4
Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXgKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+IHx8ICFKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JD
b250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9y
Q29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMjEsOSArMzIxLDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcgogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFdmVudENvbnN0cnVjdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRhcmdldFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWIK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+IHx8ICFKU1Rl
c3RFdmVudFRhcmdldDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdl
dD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RFdmVudFRh
cmdldCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0
aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpz
dWJzcAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+IHx8ICFK
U1Rlc3RFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9u
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdEV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE5Nyw5ICsxOTcsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHx8ICFKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTQsNyAr
MTgxNCw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3UKICAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkKICAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxP
YmplY3QpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEu
bV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3Qu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Q
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyVGhy
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbj4gfHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMzA4LDkgKzMwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTExMDQsOSAr
MTEwNCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBU
ZXN0SW50ZXJmYWNlSXRlcmF0b3I+IHx8ICFUZXN0SW50ZXJmYWNlSXRlcmF0b3I6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4pCi0gICAgICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VJdGVyYXRv
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOworICAgICAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0xMTk2LDkgKzExOTYsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RJbnRlcmZhY2U6OnN1YnNwCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEludGVyZmFjZT4gfHwgIUpTVGVzdEludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC0xODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
SW50ZXJmYWNlTGVhZGluZwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZT4gfHwgIUpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SXRlcmFibGVJdGVyYXRvcj4gfHwg
IVRlc3RJdGVyYWJsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0
SXRlcmFibGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
dGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVz
dEl0ZXJhYmxlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0SXRl
cmFibGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEl0ZXJhYmxl
SXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJ
dGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3Iu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkBAIC0yOTMsOSArMjkzLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SXRlcmFibGU6OnN1YnNwYQogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4gfHwgIUpTVGVzdEl0ZXJhYmxlOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEl0ZXJhYmxlPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBl
bHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEl0ZXJhYmxlKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnUK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+
IHx8ICFKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBC
YXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMw
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bgogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MzM1LDkgKzMzNSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWMK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3Q+IHx8ICFKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdDo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ5LDkgKzI0OSw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3Zl
cnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzY2LDkgKzM2Niw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE1hcExpa2U6OnN1YnNwYWMKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4gfHwgIUpTVGVzdE1hcExpa2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzgwLDkgKzM4MCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnIKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4gfHwgIUpTVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDQsOSArMzQ0LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzQ0LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQwMSw5
ICs0MDEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24p
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzAsOSArMjcwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMjYyLDkgKzI2Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXI+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjIwLDkgKzIyMCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFcKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD4gfHwgIUpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGg6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3ROYW1lZEdldHRlck5vSWRlCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRl
cldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0zMDAsOSArMzAwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvdwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzEsOSAr
MzMxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPiB8
fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zNzgsOSArMzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MjgsOSAr
NDI4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
cjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzcsOSArMjc3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTM2MSw5ICszNjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4gfHwgIUpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMz
OCw5ICszMzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVz
cGFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6CiAgICAgICAgIHJldHVybiBzcGFjZTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4gfHwgIUpTVGVzdE5hbWVzcGFjZU9iamVjdDo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lc3BhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
c3BhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3Qu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5vZGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTQwNSw5ICs0MDUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgVGVzdE5vZGVJdGVyYXRvcj4gfHwgIVRlc3ROb2RlSXRlcmF0b3I6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+KQotICAgICAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0
Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJ
dGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdE5vZGVJdGVyYXRvcik7CiAgICAgICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtNDk3LDkgKzQ5Nyw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6OnN1YnNwYWNlRm8KICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Tm9kZT4gfHwgIUpTVGVzdE5vZGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0Tm9kZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROb2RlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg2Niw3ICsxODY2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtOTAwNiw5
ICs5MDA2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvcgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+IHx8ICFKU1Rlc3RPYmo6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2JqPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE9iaik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T2JqKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWwuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjM0LDkgKzIzNCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE9wZXJhdGlvbkNv
bmRpdGkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWw+IHx8ICFKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
Mjk1LDkgKzI5NSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHIK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBlbHNl
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjM4LDkgKzIzOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHIKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4gfHwgIUpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDQsOSArMjQ0LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+IHx8ICFKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzAxLDkgKzMwMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFByb21pc2VSZWplY3Rpb24KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50PiB8fCAhSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQp
OwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDUs
OSArMzA1LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlNYXBMaWtlOgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+IHx8ICFKU1Rl
c3RSZWFkT25seU1hcExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9u
bHlNYXBMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBM
aWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtl
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RS
ZWFkT25seU1hcExpa2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UmVhZE9ubHlNYXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFk
T25seVNldExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RS
ZWFkT25seVNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTI4NCw5ICsyODQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RS
ZWFkT25seVNldExpa2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRP
bmx5U2V0TGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RSZWFkT25seVNldExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RS
ZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2Up
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMTcxLDkgKzE3MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0PiB8fCAhSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDksOSArMzQ5LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IHx8ICFK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExp
a2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDIsOSArMzQyLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U2V0TGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlPiB8fCAhSlNUZXN0U2V0TGlrZTo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXRMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExp
a2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwogICAgIGVsc2UKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RT
ZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXRMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNTQsOSArMzU0LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0U2V0TGlrZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
ZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkg
KzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWIKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXI+IHx8ICFKU1Rlc3RTdHJp
bmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RTdHJpbmdpZmllckFub255CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTIwOSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RTdHJpbmdpZmllck5hbWVkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRP
cGVyYXRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+IHx8ICFKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkTwogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFcKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcg
KzExNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNzc4LDkgKzc3OCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0VHlwZWRlZnM+IHx8ICFKU1Rlc3RUeXBlZGVmczo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RUeXBlZGVmcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5
cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgZWxzZQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBl
ZGVmcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RUeXBlZGVmcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RUeXBlZGVmcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckds
b2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTV29ya2VyR2xvYmFsU2NvcGU6OnMKICAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2Vs
bFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBKU1dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBz
cGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvckpTV29ya2VyR2xvYmFsU2NvcGUsIEpTV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29wZS5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyAr
ODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNyArMTYzLDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNXb3JrbGV0R2xvYmFsU2NvcGU6Ogog
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9i
YWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUsIEpT
V29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9i
YWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSwgSlNX
b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2Jh
bFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2xldEdsb2Jh
bFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIE9iamNGYWxsYmFj
a09iamVjdEltcDo6dG9Cb29sZWFuKEpTCiBKU0M6Oklzb1N1YnNwYWNlKiBPYmpjRmFsbGJhY2tP
YmplY3RJbXA6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SlNDOjpJc29TdWJzcGFjZVBlclZNPiBwZXJWTShbXSAoSlNDOjpWTSYgdm0p
IHsKLSAgICAgICAgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJBTUVURVJTKCp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIE9iamNGYWxsYmFja09iamVjdEltcCk7CisgICAgICAgIHJl
dHVybiBJU09fU1VCU1BBQ0VfUEFSQU1FVEVSUyh2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKICAgICB9KTsKICAgICByZXR1cm4gJnBl
clZNLmdldCgpLmZvclZNKHZtKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIEpTTW9k
dWxlUmVjb3JkOwogY2xhc3MgVk07CiB9CiAK
</data>
<flag name="review"
          id="470653"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="470657"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445472</attachid>
            <date>2021-11-30 14:52:32 -0800</date>
            <delta_ts>2021-11-30 16:22:21 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-233648.patch</filename>
            <type>text/plain</type>
            <size>431267</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MzI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5MCBA
QAorMjAyMS0xMS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBTdWJzcGFjZXMgZnJvbSBWTSB0byBIZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjQ4CisgICAgICAgIHJkYXI6Ly84NTg3NTc1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFN1YnNwYWNlcyBh
cmUgSGVhcCBkYXRhIHN0cnVjdHVyZXMgdG8gYmVnaW4gd2l0aCwgYW5kIHRoaXMgcmVmYWN0b3Jp
bmcgaXMgbmVlZGVkCisgICAgICAgIGluIHByZXBhcmF0aW9uIGZvciB0aGUgZ2xvYmFsIEdDLgor
CisgICAgICAgIDEuIEVtYmVkIEhlYXBDZWxsVHlwZSBhbmQgSXNvSGVhcENlbGxUeXBlIGluc3Rh
bmNlcyBpbiBIZWFwIGRpcmVjdGx5IGluc3RlYWQgb2YKKyAgICAgICAgICAgbWFsbG9jJ2luZyB0
aGVtIHNlcGFyYXRlbHkgYW5kIHJlZmVyZW5jaW5nIHRoZW0gdmlhIHVuaXF1ZV9wdHJzLiAgVGhl
c2UKKyAgICAgICAgICAgaW5zdGFuY2VzIGFyZSBhbHdheXMgaW5zdGFudGlhdGVkIHVuY29uZGl0
aW9uYWxseSBhbnl3YXkuICBUaGlzIGNoYW5nZQorICAgICAgICAgICBlbGltaW5hdGVzIHRoZSB1
bm5lZWRlZCBidXN5IHdvcmsgdG8gYWxsb2NhdGUgdGhlbSBzZXBhcmF0ZWx5LgorCisgICAgICAg
IDIuIEludHJvZHVjZSBhIEhlYXBTdWJzcGFjZVR5cGVzLmggdGhhdCAjaW5jbHVkZSBhbGwgdGhl
IHR5cGVzIHRoYXQgd2UgaGF2ZQorICAgICAgICAgICBzdWJzcGFjZXMgZm9yLiAgVGhpcyBtYWtl
cyBpdCBzbyB0aGF0IEhlYXAuY3BwJ3MgI2luY2x1ZGUgbGlzdCBpcyBub3QgZmxvb2RlZAorICAg
ICAgICAgICB3aXRoIHRoZXNlIHR5cGVzIHdpdGggc3Vic3BhY2VzLCBhbmQgdGhhdCBpdCdsbCBi
ZSBlYXNpZXIgdG8gZGlzY2VybiBiZXR3ZWVuCisgICAgICAgICAgIHRoZXNlIFN1YnNwYWNlIHR5
cGVzIGZyb20gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIEhl
YXAuCisKKyAgICAgICAgMy4gQWRkIFZNIGFjY2Vzc29yIG1ldGhvZHMgZm9yIHN1YnNwYWNlcyB0
aGF0IGZvcndhcmQgdG8gSGVhcC4gIFRoaXMgd2lsbCBtYWtlIGl0CisgICAgICAgICAgIGVhc2ll
ciBmb3IgdXMgdG8gcmVkaXJlY3QgdG8gYSB0aHJlYWQgbG9jYWwgYWxsb2NhdG9yIGxhdGVyIGZv
ciB0aGUgZ2xvYmFsIEdDLgorCisgICAgICAgIDQuIFJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZXMg
aW4gVk0uaC4KKworICAgICAgICA1LiBSZW1vdmUgdW51c2VkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZVZpYVN1YnNwYWNlcygpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0V2YWxDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9GdW5jdGlvbkNv
ZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaDoK
KyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvUmVwYXRjaC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09i
amVjdCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVx
KToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGhlYXAvQ29kZUJsb2Nr
U2V0Lmg6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyk6IERlbGV0ZWQuCisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlND
OjpIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRl
QWxsVW5saW5rZWRDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJr
ZWRDb21waWxlZENvZGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcEluRmluYWxpemUpOgor
ICAgICAgICAoSlNDOjpIZWFwOjphZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6U3BhY2VBbmRTZXQ6OlNwYWNlQW5kU2V0KToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcik6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVh
Y2hDb2RlQmxvY2tTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UpOgorICAgICAgICAqIGhlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaDogQWRkZWQu
CisgICAgICAgICogaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaDoKKyAgICAgICAgKiBoZWFwL0lzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaDoKKyAgICAgICAgKiBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5
cGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBl
PENlbGxUeXBlPjo6SXNvSW5saW5lZEhlYXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6Oklzb0lu
bGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZmluaXNo
U3dlZXAgY29uc3QpOgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxU
eXBlPjo6ZGVzdHJveSBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKEpTQ01lbW9yeUZvb3RwcmludDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoSlNGaWxl
RGVzY3JpcHRvcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnJh
bmRlZFN0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpC
dXR0ZXJmbHk6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6Z3Jvd0FycmF5
UmlnaHQpOgorICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6OnJlYWxsb2NBcnJheVJpZ2h0SWZQb3Nz
aWJsZSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6
Q3VzdG9tR2V0dGVyU2V0dGVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogcnVudGltZS9ET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmg6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6Cisg
ICAgICAgIChKU0M6Okhhc2hNYXBCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3Ry
aWN0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpzdWJzcGFjZUZvcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFi
bGVCdXR0ZXJmbHk6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZS5oOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VQcm90b3R5cGU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAoSlNDOjpK
U1Byb3h5OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvTWF0aE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL051bWJlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OnN1
YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZWRBcmd1bWVudHM6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmg6CisgICAgICAg
ICogcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09i
amVjdC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9s
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGhy
b3dTY29wZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Y2VsbEhl
YXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OlZNOjpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUpOgorICAgICAgICAoSlNDOjpWTTo6cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSk6Cisg
ICAgICAgIChKU0M6OlZNOjppbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAg
ICAgICAgKEpTQzo6Vk06OmNlbGxTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjp2YXJpYWJsZVNp
emVkQ2VsbFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmRlc3RydWN0aWJsZU9iamVjdFNwYWNl
KToKKyAgICAgICAgKEpTQzo6Vk06OmFycmF5U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Ymln
SW50U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Y2FsbGVlU3BhY2UpOgorICAgICAgICAoSlND
OjpWTTo6Y2xvbmVkQXJndW1lbnRzU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Y3VzdG9tR2V0
dGVyU2V0dGVyU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6ZGF0ZUluc3RhbmNlU3BhY2UpOgor
ICAgICAgICAoSlNDOjpWTTo6ZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6ZXhjZXB0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmZ1bmN0aW9uU3BhY2Up
OgorICAgICAgICAoSlNDOjpWTTo6Z2V0dGVyU2V0dGVyU3BhY2UpOgorICAgICAgICAoSlNDOjpW
TTo6Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6aW50
ZXJuYWxGdW5jdGlvblNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmpzUHJveHlTcGFjZSk6Cisg
ICAgICAgIChKU0M6OlZNOjpuYXRpdmVFeGVjdXRhYmxlU3BhY2UpOgorICAgICAgICAoSlNDOjpW
TTo6bnVtYmVyT2JqZWN0U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6cGxhaW5PYmplY3RTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpwcm9taXNlU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6
cHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnByb3BlcnR5
VGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpyZWdFeHBTcGFjZSk6CisgICAgICAgIChK
U0M6OlZNOjpyZWdFeHBPYmplY3RTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpyb3BlU3RyaW5n
U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6c2NvcGVkQXJndW1lbnRzU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06
OnN0cmluZ1NwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnN0cmluZ09iamVjdFNwYWNlKToKKyAg
ICAgICAgKEpTQzo6Vk06OnN0cnVjdHVyZUNoYWluU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6
c3RydWN0dXJlUmFyZURhdGFTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpzdHJ1Y3R1cmVTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpicmFuZGVkU3RydWN0dXJlU3BhY2UpOgorICAgICAgICAo
SlNDOjpWTTo6c3ltYm9sVGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk6CisgICAgICAgIChKU0M6OlZNOjpleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpTQzo6Vk06
OmNvZGVCbG9ja1NwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk6CisgICAgICAgIChK
U0M6OlZNOjpzZXRGdXp6ZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpTcGFj
ZUFuZFNldDo6U3BhY2VBbmRTZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6U3BhY2VB
bmRTZXQ6OnNldEZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpmb3JFYWNoQ29kZUJs
b2NrU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6Zm9yRWFjaFNjcmlwdEV4ZWN1
dGFibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Vk06OnNldEZ1enplckFnZW50KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaDoKKyAgICAgICAgKiB0b29s
cy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFs
UHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmg6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlUYWdQcm90b3R5cGUuaDoKKwogMjAyMS0xMS0zMCAgQWxleGV5IFNodmF5a2EgIDxhc2h2
YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lICJxdWV1ZVRhc2tUb0V2ZW50TG9vcCIg
dG8gInF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw5ICs3NjAsMTIgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGhlYXAvSGVhcElubGluZXMu
aAogICAgIGhlYXAvSGVhcE9ic2VydmVyLmgKICAgICBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aAorICAgIGhlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmgKICAgICBoZWFwL0lzb0NlbGxTZXQuaAogICAgIGhlYXAvSXNvSGVhcENlbGxUeXBlLmgK
KyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2UuaAogICAgIGhlYXAvSXNv
U3Vic3BhY2VJbmxpbmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRl
c3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNDTWVtb3J5Rm9vdHByaW50
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTgsNyArMTk1
OCw3IEBACiAJCUUzQzY5NEIzMjMwMjY4NzcwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M2OTRCMTIz
MDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQzczQTkxMjVCRkE3M0IwMEVGRTMwMyAv
KiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFu
LmggKi87IH07CiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5Q0FBMURC
OUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTggLyogSXNv
SW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGUuaCAqLzsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNDQTNB
NEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4MDJCRiAv
KiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMzUxNUYyNDFCODlE
NzAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1h
cmtlZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OwpAQCAtMjAwOSw2ICsyMDA5LDcgQEAKIAkJRkUy
MENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBM
TEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUyODdEMDIyNTJGQjJFODAwRDcyM0Y5IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjg3RDAxMjUy
RkIyRTgwMEQ3MjNGOSAvKiBWZXJpZmllclNsb3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUyQTg3NjAxRjAyMzgxNjAwRUIzMUIy
IC8qIE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJBODc1RjFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJl
c2VydmVkWm9uZVNpemUuaCAqLzsgfTsKKwkJRkUyQ0M5MzAyNzU2QjJCOTAwM0Y1QUI4IC8qIEhl
YXBTdWJzcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTJDQzkyRjI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJE
MzFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkz
IC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAy
MkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMzNkI1MzI1
REI0OTdEMDA5OEYwMzQgLyogTWFya2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM2QjUyMjVEQjQ5N0Qw
MDk4RjAzNCAvKiBNYXJraW5nQ29uc3RyYWludEV4ZWN1dG9yUGFpci5oICovOyB9OwpAQCAtMjA0
MCw2ICsyMDQxLDcgQEAKIAkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNERDUzMUVB
OUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
NjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5
NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY1
QjE1MTI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVCMTUwMjc0
ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovOyB9Owog
CQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBE
REQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAx
IC8qIFZNVHJhcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNkY1NkREMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU3NDk3RTYyMDkwMDFCMTAwMDM1
NjVCIC8qIEpTQ1B0clRhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU3NDk3RTUyMDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NDM0LDYgKzU0MzYs
NyBAQAogCQlGRTI4N0QwMTI1MkZCMkU4MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAv
KiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNaW5pbXVtUmVzZXJ2
ZWRab25lU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTJCRDY2RTI1QzBE
QzgyMDA5OTlEM0IgLyogVmVyaWZpZXJTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQ0M5MkYyNzU2QjJCOTAwM0Y1QUI4IC8qIEhlYXBTdWJzcGFj
ZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBTdWJzcGFjZVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkU2QTdBMUQ2RUE1RkUwMDYw
Rjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMwMjJE
MDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lnaWxs
Q3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ5Niw2ICs1
NDk5LDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uU2Nv
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAwQTY5
NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2VsbFR5
cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2REMx
RTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NTg2LDYgKzY1OTAsNyBAQAogCQkJCUE1NEMyQUFGMUM2NTQ0RDEwMEExOEQ3OCAvKiBIZWFwU25h
cHNob3QuaCAqLywKIAkJCQlBNTMxMUMzNDFDNzdDRUFDMDBFNkIxQjYgLyogSGVhcFNuYXBzaG90
QnVpbGRlci5jcHAgKi8sCiAJCQkJQTUzMTFDMzUxQzc3Q0VBQzAwRTZCMUI2IC8qIEhlYXBTbmFw
c2hvdEJ1aWxkZXIuaCAqLywKKwkJCQlGRTJDQzkyRjI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1
YnNwYWNlVHlwZXMuaCAqLywKIAkJCQkwRkFERTY3MjFENEQyM0JDMDA3Njg0NTcgLyogSGVhcFV0
aWwuaCAqLywKIAkJCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcCAqLywKIAkJCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmggKi8sCkBAIC02NTk3LDYgKzY2MDIsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQw
MDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEw
MDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAx
MzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYw
MUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBG
RENFMTJDMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0Ux
MkIxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1
MkJEQzAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MDcsNiArMTA0
MTMsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4
NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xl
eGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDkzNCw2ICsxMDk0MSw3IEBA
CiAJCQkJRTMzN0I5NjcyMjQzMjRFQTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0JEMkI3NjIyRjI3NTAyMDAxMTc2NUMgLyogV2FzbUNv
bXBpbGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUyQ0M5MzAyNzU2QjJCOTAwM0Y1
QUI4IC8qIEhlYXBTdWJzcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFF
N0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1OTND
ODk4QkU3MTRBNjRCRTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAg
c2l6ZV90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNp
emVvZihKU1ZhbHVlKTsKIAogICAgICAgICAgICAgaWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAg
ICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9j
YXRvcklmRXhpc3RzKTsKKyAgICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3IobmV3U2l6ZSwgQWxs
b2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgICAgICAgICAgICAgaml0
LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRv
ciksIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKworbmFtZXNwYWNlIERG
RyB7CiAKIGNsYXNzIEZyZXF1ZW50RXhpdFNpdGUgewogcHVibGljOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAg
ICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1Rh
ZywgRXZhbENvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAgICAgCiAgICAgaWYgKCF2aXNpdG9yLmlz
TWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMuYWRkKGVkZ2UpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwogICAgIAogICAgIGlmIChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CiAgICAgICAgIC8vIElm
IHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28g
bWFrZSBzdXJlIHRoYXQgaXQKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpCiAgICAgLy8gbm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3
ZWFrbHkgZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRo
ZW4gd2UKICAgICAvLyB3aWxsIGtlZXAgZml4cG9pbnRpbmcgdW50aWwgdGhlIGVuZC4KICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotICAg
IHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLmFkZChlZGdlKTsK
KyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLmFkZChl
ZGdlKTsKICAgICBlZGdlLT5ydW5Db25zdHJhaW50KGxvY2tlciwgdm0sIHZpc2l0b3IpOwogfQog
CkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5h
bGl6ZQogICAgICAgICBtX2NvZGVCbG9jay5jbGVhcigpOwogICAgIH0KICAgICAKLSAgICB2bS5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzLnJlbW92ZSh0aGlzKTsKLSAg
ICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhp
cyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJl
bW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6YWN0aXZhdGUoKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6cnVuQ29uc3QKICAgICBjb2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNz
KGxvY2tlciwgdmlzaXRvcik7CiAKICAgICBpZiAodmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2sp
KQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENv
bnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQogCiB0ZW1wbGF0ZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Vk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1
bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0
aW9uQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJv
Z3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNv
ZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCku
c3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsTGlu
a0luZm87CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBHZXRCeUtpbmQg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29u
c3RydWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlzKTsKKyAgICB2
bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LmFkZCh0aGlzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZmluYWxpegogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ2FsbCk7CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYmICFpc1N0aWxsVmFsaWQpCi0g
ICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5yZW1vdmUo
dGhpcyk7CisgICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCku
c2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDE0
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIFBhcnNl
ckVycm9yOworY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwog
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKLWNsYXNzIENhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKIAogZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CiAgICAgVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1
bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4g
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBA
IC0xMzEsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0
cnVjdC5jbGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2Uo
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRB
bGxvY2F0ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUp
IHsKLSAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmly
dHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAg
ICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0
YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBz
aXplX3Qgc2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsK
IAotICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxs
b2NhdG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8
fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigp
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UmVhbGxvY2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jv
d3RoRmFjdG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4
dC0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxs
b2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJ
ZkV4aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRv
ckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CkBAIC0xMTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBl
ZEFycmF5V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQ
Uik7CiAgICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAg
IHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRj
aEdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNj
cmF0Y2hHUFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpA
QCAtMTM3MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVC
dXR0ZXJmCiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwg
dm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBz
Y3JhdGNoMywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gz
LCBzbG93Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4
aW5nSGVhZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXpl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODMwMSw3ICs4MzAxLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAg
ICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExW
YWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAog
ICAgICAgICBzcGxhdFdvcmRzKApAQCAtMTM5MjIsNyArMTM5MjIsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkg
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAg
ICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAg
ICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
KTsKIAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5h
ZGQoCkBAIC0xNTAxNyw3ICsxNTAxNyw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAq
IHNpemVvZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5C
eXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxv
Y2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9j
YXRvcklmRXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVI
ZWFwQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFs
bG9jYXRvcigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVy
Zmx5ID0gbV9vdXQuYW5jaG9yKApAQCAtMTcwMzksNyArMTcwMzksNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAog
ICAgICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGlu
Z0hlYWRlcikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWls
Q2FzZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2Up
OwogICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9j
YXRvciwgZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQo
c3RhcnRPZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDcsNiArMTQ3LDggQEAgbW9kdWxlIERTTAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmFz
aWNCbG9ja0xvY2F0aW9uOworCiB2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJhc2Uq
IGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
IAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNv
bnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJh
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25zdCBG
dW5jdG9yJik7Ci0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMTggKzYwLDYgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUoY29uc3QgQWJz
dHJhYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6
Oml0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewot
ICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFu
ZFNldCkgewotICAgICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAot
ICAgICAgICAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVD
dXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVS
b290cy5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCkBA
IC00MCwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRlICJIZWFwU25hcHNob3QuaCIKKyNpbmNsdWRl
ICJIZWFwU3Vic3BhY2VUeXBlcy5oIgogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxU
eXBlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAi
SklUV29ya2xpc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IgpAQCAtMjg2LDYgKzI4OSwxMTQgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3Ro
cmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1
dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisKKyAgICAvLyBIZWFwQ2VsbFR5cGVz
CisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVh
cENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpCisgICAgLCBjZWxsSGVhcENlbGxUeXBl
KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVk
c0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGFwaUdsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisg
ICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCisgICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD4+KCkpCisgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKyAgICAs
IGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQorICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkp
CisgICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERh
dGVJbnN0YW5jZT4oKSkKKyAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigp
KQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKyAgICAsIGdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+KCkp
CisgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKKyAgICAsIGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rv
cjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQorICAgICwgbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQorICAgICwg
d2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQor
ICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0
PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4+KCkpCisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKyNp
ZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdD4+KCkpCisgICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisgICAg
LCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxDb2xs
YXRvcj4oKSkKKyAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1l
c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4oKSkK
KyAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsTGlzdEZvcm1hdD4oKSkKKyAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkpCisgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0PigpKQorICAgICwg
aW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1
cmFsUnVsZXM+KCkpCisgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorICAgICwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNl
Z21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRsU2VnbWVudHNIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKKyAgICAsIHdl
YkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5R2xvYmFsPigpKQorICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQorICAgICwg
d2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlNZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKKyAgICAsIHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJB
c3NlbWJseU1vZHVsZVJlY29yZD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKyAgICAsIHdl
YkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2Vt
Ymx5VGFnPigpKQorI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAg
ICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPigpKQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1
ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQor
ICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCisKKyAgICAvLyBTdWJzcGFjZXMK
KyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2Fn
ZSBBdXhpbGlhcnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHgyNDFlOTQ2CisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRl
eGluZ0hlYWRlciIsICp0aGlzLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCisgICAgLCBjZWxs
U3BhY2UoIkpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKKyAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKKyAgICAsIGRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHg0ZjVlZDdhOQorICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKKyAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKKyAgICAsIGNhbGxlZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKKyAg
ICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCisgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVy
U2V0dGVyKQorICAgICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQorICAgICwgZG9tQXR0cmli
dXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikKKyAgICAsIGV4Y2VwdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNl
cHRpb24pCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Up
IC8vIEhhc2g6MHg3YjczMGIyMAorICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcy
CisgICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCisgICAgLCBpbnRlcm5hbEZ1
bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIElu
dGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAorICAgICwganNQcm94eVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQorICAgICwg
bmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUK
KyAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCisgICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBN
YWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KKyAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQorICAgICwgcHJvcGVy
dHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCisgICAgLCBwcm9wZXJ0eVRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgorICAgICwgcmVnRXhwU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4
cCkKKyAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCisgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQorICAg
ICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKKyAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U3BhcnNlQXJyYXlWYWx1ZU1hcCkKKyAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYK
KyAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCisgICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKKyAg
ICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNh
NGU2MmQKKyAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQor
ICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQorICAgICwgc3ltYm9s
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAorICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBjb2RlQmxvY2tTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJs
b2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5j
dGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCisgICAgLCBwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3CisgICAgLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFz
aDoweGY2YjgyOGQ5CisKIHsKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKQEAgLTU3OSwz
MSArNjkwLDMxIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemUKIHsK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5m
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1i
b2xUYWJsZT4odm0uc3ltYm9sVGFibGVTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENv
ZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBh
dCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5LgotICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKKyAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOworICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4oZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1
biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBD
b2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJs
b2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KKyAgICBmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQp
OwogICAgICAgICB9KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN0cnVjdHVyZVJhcmVEYXRhPih2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKLSAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPih2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7Ci0gICAgaWYgKHZt
Lm1fd2Vha1NldFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEpTV2Vha1NldD4oKnZtLm1fd2Vha1NldFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFr
TWFwU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SlNXZWFrTWFwPigqdm0ubV93ZWFrTWFwU3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtPYmplY3RS
ZWZTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxK
U1dlYWtPYmplY3RSZWY+KCp2bS5tX3dlYWtPYmplY3RSZWZTcGFjZSk7Ci0gICAgaWYgKHZtLm1f
ZXJyb3JJbnN0YW5jZVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4o
c3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zZXQpOworICAgIGlmIChtX3dlYWtTZXRTcGFjZSkKKyAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCptX3dlYWtTZXRT
cGFjZSk7CisgICAgaWYgKG1fd2Vha01hcFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKm1fd2Vha01hcFNwYWNlKTsKKyAgICBp
ZiAobV93ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqbV93ZWFrT2JqZWN0UmVmU3BhY2UpOwor
ICAgIGlmIChtX2Vycm9ySW5zdGFuY2VTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqbV9lcnJvckluc3RhbmNlU3BhY2Up
OwogCiAgICAgLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBjdXJyZW50bHkgcmVseSBvbiBzZXJp
YWwgZmluYWxpemF0aW9uIGJlY2F1c2UgdGhleSBjYW4gcG9zdCB0YXNrcyB0byB0aGUgZGVmZXJy
ZWRXb3JrVGltZXIsIHdoaWNoIG5vcm1hbGx5IGV4cGVjdHMgdGFza3MgdG8gb25seSBiZSBwb3N0
ZWQgYnkgdGhlIEFQSSBsb2NrIGhvbGRlci4KLSAgICBpZiAodm0ubV9maW5hbGl6YXRpb25SZWdp
c3RyeVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2Up
OworICAgIGlmIChtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKm1f
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0g
ICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqdm0u
bV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCptX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOwog
I2VuZGlmCiB9CiAKQEAgLTkwNSw3ICsxMDE2LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2Rl
QmxvY2tzKERlbGV0ZUFsbAogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgdm0u
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAgICAgICAgICAgICBI
ZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICAgICAgICAg
IGF1dG8mIHNldCA9IHNwYWNlQW5kU2V0LnNldDsKQEAgLTkyNCw4ICsxMDM1LDggQEAgdm9pZCBI
ZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAogICAgICAgICAvLyBwb2ludHMgaW50
byBhIENvZGVCbG9jayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2Nl
ZWQgYmVjYXVzZQogICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBp
dCB3aWxsIGNhbGwgaW50byBkZWFkIGNvZGUuCiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKSB7Ci0gICAgICAgICAgICB2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBr
aW5kKSB7CisgICAgICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKKyAgICAg
ICAgICAgIG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAo
SGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGtpbmQsIGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCk7CiAgICAgICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8SlNX
ZWJBc3NlbWJseUNvZGVCbG9jayo+KGNlbGwpOwogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+
Y2xlYXJKU0NhbGxJQ3Modm0pOwpAQCAtOTQ2LDcgKzEwNTcsNyBAQCB2b2lkIEhlYXA6OmRlbGV0
ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlv
blNjb3BlKTsKIAogICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hM
aXZlQ2VsbCgKKyAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNo
TGl2ZUNlbGwoCiAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7
CiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5jbGVhckNvZGUodm0pOwpAQCAtOTU1LDEwICsxMDY2LDEwIEBAIHZvaWQg
SGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBIZWFwOjpkZWxldGVV
bm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7Ci0gICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBm
b3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFj
ZS5zd2VlcCgpOyB9KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGlu
ZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFs
aXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9y
IGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtl
ZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFj
ZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFj
aENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9
KTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJv
dXRpbmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjIxNCw4IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZp
bmFsaXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCk7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhvbGQgb250byBhIGxvdCBvZiBtZW1v
cnksIHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAg
aWYgKHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQotICAgICAgICB2bSgpLm1fd2ViQXNz
ZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseU1lbW9yeVNw
YWNlKQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CiAjZW5kaWYK
IH0KIApAQCAtMjgwNSw3ICsyOTE2LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMo
KQogICAgICAgICAiTyIsICJPdXRwdXQiLAogICAgICAgICBNQUtFX01BUktJTkdfQ09OU1RSQUlO
VF9FWEVDVVRPUl9QQUlSKChbXSAoYXV0byYgdmlzaXRvcikgewogICAgICAgICAgICAgdXNpbmcg
VmlzaXRvciA9IGRlY2x0eXBlKHZpc2l0b3IpOwotICAgICAgICAgICAgVk0mIHZtID0gdmlzaXRv
ci52bSgpOworICAgICAgICAgICAgSGVhcCogaGVhcCA9IHZpc2l0b3IuaGVhcCgpOwogCiAgICAg
ICAgICAgICAvLyBUaGUgYHZpc2l0b3IyYCBhcmd1bWVudCBpcyBzdHJhbmdlbHkgbmFtZWQgYmVj
YXVzZSB0aGUgV2luQ2Fpcm8gcG9ydAogICAgICAgICAgICAgLy8gZ2V0cyBjb25mdXNlZCAgYW5k
IHRoaW5rcyB3ZSdyZSB0cnlpbmcgdG8gY2FwdHVyZSB0aGUgb3V0ZXIgdmlzaXRvcgpAQCAtMjgy
NCwxMSArMjkzNSwxMSBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29w
ZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwot
ICAgICAgICAgICAgICAgIGFkZCh2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2
bS5tX3dlYWtNYXBTcGFjZSkgeworICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01hcFNwYWNl
KSB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlz
aXRvciwgUm9vdE1hcmtSZWFzb246OldlYWtNYXBTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYWRk
KCp2bS5tX3dlYWtNYXBTcGFjZSk7CisgICAgICAgICAgICAgICAgYWRkKCpoZWFwLT5tX3dlYWtN
YXBTcGFjZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWlu
dFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZywKQEAgLTMwNjIsNCArMzE3MywxMzUgQEAgdm9p
ZCBIZWFwOjp2ZXJpZnlHQygpCiAgICAgbV92ZXJpZmllclNsb3RWaXNpdG9yID0gbnVsbHB0cjsK
IH0KIAorI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFt
ZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Ns
b3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1
dG8gc3BhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJu
IG1fIyNuYW1lLmdldCgpOyBcCisgICAgfQorCisKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgYXBpR2xvYmFsT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0FQSUdsb2JhbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElW
YWx1ZVdyYXBwZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJy
YXlCdWZmZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTQXJyYXlJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhc3luY0dlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Fz
eW5jR2VuZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJp
Z0ludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBCaWdJbnRPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYmlnVWludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNC
aWdVaW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
b29sZWFuT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6MHhkNzkxNmQ0MQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQ29uc3RydWN0b3JT
cGFjZSwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVj
dG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xv
YmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2Fs
bGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RTcGFjZSwgY2FsbGJhY2tPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwg
Y3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVu
Y3Rpb25TcGFjZSwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0
YVZpZXdTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIERlYnVnZ2VyU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlLCBFcnJv
ckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0YQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGZsb2F0MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0
MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvblJhcmVEYXRhKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhnbG9iYWxPYmplY3RTcGFjZSwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9i
amVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNj
cmlwdEhvc3RTcGFjZSwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUsIEluc3Bl
Y3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJ
bnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGphdmFT
Y3JpcHRDYWxsRnJhbWVTcGFjZSwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5z
cGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwganNNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUsIEpTTW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG1hcEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcDo6QnVja2V0VHlw
ZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VP
YmplY3RTcGFjZSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlLCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhu
YXRpdmVTdGRGdW5jdGlvblNwYWNlLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNO
YXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0CitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
UHJveHlPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJv
eHlSZXZva2VTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlSZXZva2UpIC8vIEhhc2g6MHhi
NTA2YTkzOQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFy
Z3VtZW50c1RhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFy
Z3VtZW50c1RhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNj
cmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBK
U1NjcmlwdEZldGNoUGFyYW1ldGVycykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTU2NyaXB0RmV0Y2hlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzZXRCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJp
bmdJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3Vy
Y2VDb2RlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBT
eW1ib2xPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVt
cG9yYWxDYWxlbmRhcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRl
bXBvcmFsVGltZVpvbmUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1VpbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2Nr
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9j
aykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFj
ZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwg
d2Vha01hcEhlYXBDZWxsVHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRI
ZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBl
LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNl
LCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2Jq
Q0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUs
IE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKKyNlbmRpZgorI2lmZGVm
IEpTQ19HTElCX0FQSV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBqc2NDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9i
amVjdFNwYWNlLCBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PikKKyNlbmRpZgorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRs
Q29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxh
eU5hbWVzSGVhcENlbGxUeXBlLCBJbnRsRGlzcGxheU5hbWVzKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMaXN0Rm9ybWF0U3BhY2UsIGludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIElu
dGxMb2NhbGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51
bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTnVtYmVy
Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVy
YWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxl
cykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwg
SW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMp
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNUb1dh
c21JQ0NhbGxlZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgd2Vi
QXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlv
blNwYWNlLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseUZ1bmN0
aW9uKSAvLyBIYXNoOjB4OGI3YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseUdsb2JhbFNwYWNlLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsIHdlYkFzc2VtYmx5SW5zdGFuY2VI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3NlbWJseU1l
bW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNwYWNlLCB3ZWJBc3NlbWJs
eU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlU
YWJsZVNwYWNlLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFi
bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlU
YWdTcGFjZSwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24pIC8vIEhhc2g6MHhkNGE1ZmYwMQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1
YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1f
IyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4g
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3Bh
Y2UpOyBcCisgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCisgICAgfQorCitEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4
OTU4ZTNlOWQKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYworCisjdW5kZWYgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29w
ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3RvclBoYXNlLmgiCisjaW5jbHVkZSAiQ29tcGxldGVTdWJz
cGFjZS5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKICNpbmNsdWRlICJHQ0Nv
bmR1Y3Rvci5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCkBAIC0zMyw2
ICszNCwxMSBAQAogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhlYXBGaW5hbGl6
ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgorI2luY2x1ZGUgIklzb0Nl
bGxTZXQuaCIKKyNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIK
QEAgLTU4LDkgKzY0LDExIEBAIGNsYXNzIENvbGxlY3RpbmdTY29wZTsKIGNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CiBjbGFzcyBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrOworY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFz
cyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOwogY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBWZXJp
ZmllcjsKQEAgLTY5LDggKzc3LDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRT
dHViUm91dGluZVNldDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5
OworY2xhc3MgSlNTdHJpbmc7CiBjbGFzcyBKU1ZhbHVlOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTWFjaGluZVRocmVhZHM7CiBjbGFzcyBNYXJrU3RhY2tBcnJheTsKIGNs
YXNzIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50OwpAQCAtNzI5LDYgKzczNywzMTggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCB7IGZhbHNlIH07CiAg
ICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwogICAgIENvbmRpdGlvbiBtX2NvbGxl
Y3RDb250aW51b3VzbHlDb25kaXRpb247CisKK3B1YmxpYzoKKyAgICAvLyBIZWFwQ2VsbFR5cGVz
CisgICAgSGVhcENlbGxUeXBlIGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5
cGUgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBjZWxs
SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGUgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGVycm9ySW5z
dGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4gc3RyaW5nSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSB3ZWFrTWFwSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWFr
U2V0SGVhcENlbGxUeXBlOworICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAor
ICAgIElzb0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgor
I2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlIGFwaVdyYXBw
ZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrQVBJV3Jh
cHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUganNjQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgorICAgIElzb0hlYXBDZWxsVHlwZSBp
bnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxEYXRlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bERpc3BsYXlOYW1l
c0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUg
aW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFNlZ21l
bnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBJc29IZWFwQ2Vs
bFR5cGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3
ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNz
ZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1i
bHlNZW1vcnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TW9k
dWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlUYWJsZUhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5
cGU7CisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgc3RkOjp1
bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0TWFsbG9jQWxs
b2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcjsKKwor
ICAgIC8vIFN1YnNwYWNlcworICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMg
Z28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KKyAg
ICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCisKKyAgICAvLyBX
ZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5n
IGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCisgICAgLy8gYmVpbmcg
aW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlv
dXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQorICAgIC8vIGNhbiBoYXJkY29kZSB0
aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0
IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCisgICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgor
ICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJh
Y3RlZCB0aGlzPworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUyNDgKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
a2luZCkgeworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6CisgICAgICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdh
Y2FnZTo6SlNWYWx1ZToKKyAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAg
IH0KKyAgICAKKyAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxU
eXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCisgICAgQ29tcGxldGVTdWJz
cGFjZSBjZWxsU3BhY2U7CisgICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNw
YWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUg
dGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsg
dGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0
cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisK
KyAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJpZ0ludFNwYWNl
OworICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGNsb25lZEFy
Z3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlclNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGRvbUF0
dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGV4Y2VwdGlvblNwYWNl
OworICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGdldHRlclNldHRlclNw
YWNlOworICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOworICAg
IElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBqc1By
b3h5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHBsYWluT2JqZWN0
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHBy
b3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVn
RXhwT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmluZ1NwYWNlOworICAgIElz
b1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIHNwYXJzZUFy
cmF5VmFsdWVNYXBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFp
blNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVy
ZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7CisKKyNkZWZpbmUgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAor
ICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICAgICAgcmV0
dXJuIG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1
YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+
IG1fIyNuYW1lOworCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkK
KyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0FQSVdyYXBwZXJHbG9i
YWxPYmplY3RTcGFjZSkKKyNlbmRpZgorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihhcnJheUl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihhc3luY0dlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50T2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdVaW50NjRBcnJheVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm9vbGVhbk9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm91bmRGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tDb25zdHJ1Y3Rv
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tH
bG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGNhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGNhbGxiYWNrT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRhdGFWaWV3U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1Z2dlclNjb3BlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihlcnJvckluc3RhbmNlU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmbG9hdDMyQXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0NjRBcnJheVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZnVuY3Rpb25SYXJlRGF0YVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2VuZXJhdG9yU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnbG9iYWxPYmplY3RT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQx
NkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQz
MkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqYXZh
U2NyaXB0Q2FsbEZyYW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihqc01vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIobWFwQnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihtYXBJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIobWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uihtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoZXJT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEJ1Y2tldFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0SXRlcmF0b3JT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2hhZG93UmVhbG1TcGFjZSk7
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpY3RFdmFsQWN0aXZh
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaW5n
SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNv
dXJjZUNvZGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5
bWJvbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9s
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MTZBcnJh
eVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDMyQXJy
YXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFs
aXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih3ZWFrU2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWFrTWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3aXRoU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxDb2xsYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bERhdGVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsRGlzcGxheU5hbWVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnRsTGlzdEZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudEl0
ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
U2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsU2VnbWVudHNTcGFjZSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlFeGNl
cHRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJs
eVRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJB
c3NlbWJseVRhZ1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSkKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgorICAgIAorICAgIElzb0NlbGxTZXQgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7CisgICAgSXNvQ2VsbFNldCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisjZGVmaW5lIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAg
ICAgIGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCisgICAgICAgICAg
ICByZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAorICAgICAgICBpZiAobW9kZSA9PSBTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsg
XAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAgfSBcCisgICAgSXNvU3Vic3Bh
Y2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8j
I25hbWU7CisgICAgCisgICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOworICAg
ICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQorICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKQorICAgICAgICAgICAgLCBzZXQoc3BhY2UpCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYgc3Bh
Y2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0NlbGxT
ZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQorICAg
ICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKKyAgICAg
ICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOworICAgICAgICB9
CisgICAgfTsKKyAgICAKKyAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRl
IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFz
c2VzIG9mCisgICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgorICAgICAgICBmdW5jKGNvZGVCbG9j
a1NwYWNlKTsKKyAgICB9CisKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
UihldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgU3BhY2VBbmRTZXQgZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2U7CisgICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2Ny
aXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBpZiAo
bV9ldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJs
ZVNwYWNlKTsKKyAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAg
IGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCpt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UpOworICAgIH0KKworICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2U7CisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01F
TUJFUgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGhlYWRlciBmaWxl
IGlzIHNpbXBseSB0byAjaW5jbHVkZSBhbGwgdGhlIHR5cGVzCisvLyB0aGF0IHdlIGhhdmUgU3Vi
c3BhY2VzIGZvciBzbyB0aGF0IEhlYXAuY3BwJ3MgI2luY2x1ZGUgbGlzdCBpcyBub3QgZmxvb2Rl
ZAorLy8gd2l0aCB0aGVzZSwgYW5kIHRoYXQgaXQnbGwgYmUgZWFzaWVyIHRvIGRpc2Nlcm4gYmV0
d2VlbiB0aGVzZSBTdWJzcGFjZSB0eXBlcworLy8gZnJvbSBvdGhlciBkYXRhIHN0cnVjdHVyZXMg
bmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgSGVhcC4KKworI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5o
IgorI2luY2x1ZGUgIkJvb2xlYW5PYmplY3QuaCIKKyNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJl
LmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiRGF0ZUluc3RhbmNl
LmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVk
ZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgor
I2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFj
a09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0RhdGFWaWV3LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkpTSmF2YVNjcmlw
dENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNs
dWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVl
LmgiCisjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCisjaW5jbHVkZSAi
UHJveHlSZXZva2UuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKKyNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
aCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgorCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlm
CisKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxs
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMjEgQEAgcHVibGljOgogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgfklzb0hlYXBDZWxsVHlwZSgpOwogCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRy
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdHJ1Y3QgQXJncyB7Cisg
ICAgICAgIEFyZ3MoKQorICAgICAgICAgICAgOiBtb2RlKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0
aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCisgICAgICAg
ICAgICAsIGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVzdHJveSkKKyAgICAgICAgeyB9CisKKyAg
ICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisgICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBm
dW5jdGlvblB0cjsKKyAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpu
ZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rp
b24sICZDZWxsVHlwZTo6ZGVzdHJveSk7Ci0gICAgfQorICAgIElzb0hlYXBDZWxsVHlwZShBcmdz
PENlbGxUeXBlPiYmIGFyZ3MpCisgICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9kZSwg
YXJncy5mdW5jdGlvblB0cikKKyAgICB7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmluYWw7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgY29uc3Qg
ZmluYWw7CkBAIC01Myw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJv
eUZ1bmN0aW9uUHRyKTsKKwogICAgIERlc3Ryb3lGdW5jdGlvblB0ciBXVEZfVlRCTF9GVU5DUFRS
X1BUUkFVVEhfU1RSKCJJc29IZWFwQ2VsbFR5cGUuZGVzdHJveSIpIG1fZGVzdHJveTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVh
cENlbGxUeXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMy
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+CiBjbGFz
cyBJc29JbmxpbmVkSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGljIEhlYXBDZWxsVHlwZSB7CiBw
dWJsaWM6Ci0gICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpCi0gICAgICAgIDogSGVhcENlbGxU
eXBlKENlbGxBdHRyaWJ1dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0
cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQotICAg
IHsKLSAgICB9CisgICAgSXNvSW5saW5lZEhlYXBDZWxsVHlwZSgpOwogCiAgICAgc3RydWN0IERl
c3Ryb3lGdW5jIHsKLSAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBK
U0NlbGwqIGNlbGwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENlbGxUeXBlOjpkZXN0
cm95KGNlbGwpOwotICAgICAgICB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRv
cigpKFZNJiwgSlNDZWxsKikgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgZmluaXNoU3dlZXAo
TWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNvbnN0IGZp
bmFsCi0gICAgewotICAgICAgICBoYW5kbGUuZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBl
KGZyZWVMaXN0LCBEZXN0cm95RnVuYygpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRlc3Ryb3koVk0m
LCBKU0NlbGwqIGNlbGwpIGNvbnN0IGZpbmFsCi0gICAgewotICAgICAgICBDZWxsVHlwZTo6ZGVz
dHJveShjZWxsKTsKLSAgICB9CisgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFu
ZGxlJiwgRnJlZUxpc3QqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0Nl
bGwqKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2Vs
bFR5cGVJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCisKKyNp
bmNsdWRlICJNYXJrZWRCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGU+CitpbmxpbmUgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46
Oklzb0lubGluZWRIZWFwQ2VsbFR5cGUoKQorICAgIDogSGVhcENlbGxUeXBlKENlbGxBdHRyaWJ1
dGVzKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKQoreworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZT4KK0FMV0FZU19JTkxJTkUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxU
eXBlPENlbGxUeXBlPjo6RGVzdHJveUZ1bmM6Om9wZXJhdG9yKCkoVk0mLCBKU0NlbGwqIGNlbGwp
IGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlPgoraW5saW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxs
VHlwZT46OmZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSwgRnJlZUxpc3Qq
IGZyZWVMaXN0KSBjb25zdAoreworICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2Vs
bFR5cGUoZnJlZUxpc3QsIERlc3Ryb3lGdW5jKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZT4KK2lubGluZSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+Ojpk
ZXN0cm95KFZNJiwgSlNDZWxsKiBjZWxsKSBjb25zdAoreworICAgIENlbGxUeXBlOjpkZXN0cm95
KGNlbGwpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjphcmVNYXJrCiAvLyBzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0CiAvLyBzY3JpYmJs
ZU1vZGUgPT0gRG9udFNjcmliYmxlCiAvLyBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZAotLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJpY3Rv
cnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcKKy8vIGRlc3RydWN0aW9uTW9kZSAhPSBCbG9ja0hhc0Rl
c3RydWN0b3JzQW5kQ29sbGVjdG9ySXNSdW5uaW5nCiAvLwogLy8gZW1wdHlNb2RlID0gSXNFbXB0
eQogLy8gICAgIGRlc3RydWN0aW9uTW9kZSA9IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgIGNsYXNzIEpTQ2FsbGVlOwogICAg
IGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU291cmNlT3JpZ2luOworICAgIGNsYXNzIFZpcnR1
YWxSZWdpc3RlcjsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
Z2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFnZ3JlZ2F0
ZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
QXJyYXlJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgT2xla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNyw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0dlbmVy
YXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShBc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgQXN5bmNJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWlj
c09iamVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BdG9taWNzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEF0b21pY3NPYmpl
Y3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMg
QXRvbWljc09iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShCaWdJbnRQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBCaWdJbnRQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QnJhbmRlZFN0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5icmFuZGVkU3RydWN0dXJlU3BhY2UoKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgY2hlY2tCcmFuZChTeW1ib2wqIGJyYW5kKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIEFMV0FZU19JTkxJTkUgdW5z
aWduZWQgQnV0dGVyZmx5OjpvcHRpbWEKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5
LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90
IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0KQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9w
ZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0
ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIGRlZmVycmFs
Q29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoVU5M
SUtFTFkoIWJhc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtODksNyArODksNyBA
QCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuCiBpbmxpbmUgQnV0dGVy
Zmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mIHZtLCBKU09iamVjdCosIHNp
emVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhp
bmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykKIHsKICAgICBzaXpl
X3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFzSW5k
ZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBiYXNl
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CisgICAgdm9p
ZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7
CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJv
cGVydHlDYXBhY2l0eSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTgsNyArOTgsNyBAQCBp
bmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pCiBpbmxpbmUgQnV0dGVyZmx5
KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFj
aXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29u
c3QgSW5kZXhpbmdIZWFkZXImIGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHks
IHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXpl
SW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFiYXNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2Us
IHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxp
bmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJpCiAgICAgdm9pZCogdGhlQmFzZSA9
IGJhc2UoMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgc2l6ZV90IG9sZFNpemUgPSB0b3RhbFNp
emUoMCwgcHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFkZXIsIG9sZEluZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsKICAgICBzaXplX3QgbmV3U2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9w
ZXJ0eUNhcGFjaXR5LCB0cnVlLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAg
dm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGRuJ3Qg
YmUgYSBtZW1jcHkuCkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0
ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAgLy8gT2JqZWN0cyB3aXRoIG5vIHByb3BlcnRpZXMgYXJl
IGNvbW1vbiBpbiBhcnJheXMsIGFuZCB3ZSBhcmUgZm9jdXNpbmcgb24gdmVyeSBsYXJnZSBhcnJh
eSBjcmFmdGVkIGJ5IHJlcGVhdGluZyBBcnJheSNwdXNoLCBzby4uLiB0aGF0J3MgZmluZSEKICAg
ICBib29sIGNhblJlYWxsb2MgPSAhcHJvcGVydHlDYXBhY2l0eSAmJiAhdm0uaGVhcC5tdXRhdG9y
U2hvdWxkQmVGZW5jZWQoKSAmJiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVCYXNlKS0+aXNQ
cmVjaXNlQWxsb2NhdGlvbigpOwogICAgIGlmIChjYW5SZWFsbG9jKSB7Ci0gICAgICAgIHZvaWQq
IG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5yZWFsbG9jYXRlUHJl
Y2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPih0aGVC
YXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkucmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbCh2bSwg
Yml0d2lzZV9jYXN0PEhlYXBDZWxsKj4odGhlQmFzZSksIG5ld1NpemUsICZkZWZlcnJhbENvbnRl
eHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghbmV3
QmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gZnJvbUJh
c2UobmV3QmFzZSwgMCwgcHJvcGVydHlDYXBhY2l0eSk7CiAgICAgfQogCi0gICAgdm9pZCogbmV3
QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpS
ZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRl
eHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBnY1NhZmVNZW1jcHkoc3RhdGljX2Nhc3Q8
SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSksIG9sZFNp
emUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDYWNoZWRC
eXRlY29kZTsKIGNsYXNzIFNvdXJjZUNvZGVLZXk7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTsKIAogZW51bSBjbGFzcyBTb3VyY2VDb2RlVHlwZTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAm
dm0uY2xvbmVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2xvbmVkQXJndW1l
bnRzU3BhY2UoKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKENvbnNvbGVPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBDb25zb2xlT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21H
ZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21H
ZXR0ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDdXN0b21HZXR0ZXJTZXR0
ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRl
ciBjdXN0b21TZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZG9tQXR0
cmlidXRlR2V0dGVyU2V0dGVyU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRE9NQXR0cmlidXRlR2V0
dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0ZXIgY3VzdG9tR2V0dGVyLCBDdXN0
b21TZXR0ZXIgY3VzdG9tU2V0dGVyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmRhdGVJbnN0YW5jZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRhdGVJbnN0YW5j
ZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKERhdGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1
bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAg
IHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52
YXJpYWJsZVNpemVkQ2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1
bWVudHMgb2JqZWN0IGJ1dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJv
dXMgaWYgd2UgR0MgcmlnaHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShF
cnJvclByb3RvdHlwZUJhc2UsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbi5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlv
blNwYWNlKCk7CiAgICAgfQogCiAgICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24gewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgRmluYWxpemF0aW9uUmVn
aXN0cnlQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUsIEludHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEdlbmVyYXRvclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdl
bmVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5nZXR0ZXJTZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5nZXR0
ZXJTZXR0ZXJTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZXR0ZXJTZXR0ZXIqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnZXR0ZXIs
IEpTT2JqZWN0KiBzZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
YXNoTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hhc2hNYXBJbXBsLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6OmFs
bG9jYXRpb25TaXplKGNhcGFjaXR5KTsKLSAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNp
emUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAg
IHZvaWQqIGRhdGEgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRl
Tm9uVmlydHVhbCh2bSwgYWxsb2NhdGlvblNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNp
emVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3NlcyB0aGF0
IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uaW50
ZXJuYWxGdW5jdGlvblNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5
QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShJbnRsQ29sbGF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVy
LmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lc1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZv
cm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SW50bExpc3RGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExvY2FsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEludGxMb2NhbGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5k
eSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEludGxPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxOCBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRlclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRlclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIElu
dGxTZWdtZW50ZXJQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50c1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRz
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
dGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQK
ICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7CiAKICAgICAgICAg
dW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rv
ckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAg
ICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6
dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwpAQCAtNzgsNyArNzgsNyBAQCBKU0FycmF5KiBK
U0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICB8fCBpbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBpbmRleEJpYXMgPSAwOwogICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBB
cnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUsIGlu
aXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAg
ICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90YWxTaXplKGluZGV4Qmlhcywg
b3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0
aCkpLAogICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmFy
cmF5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZSgpOwogICAgIH0KICAgICAg
ICAgCiBwcm90ZWN0ZWQ6CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJy
YXk6OnRyeUNyZWF0ZShWTSYgdgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1Zl
Y3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhpbnQpOwotICAgICAgICB2b2lkKiB0
ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFs
KAorICAgICAgICB2b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5hbGxvY2F0ZU5vblZpcnR1YWwoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRl
cmZseTo6dG90YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgbnVsbHB0ciwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTQXJyYXlCdWZmZXJQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0FycmF5
QnVmZmVyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEFycmF5QnVmZmVyU2hhcmluZ01vZGUgPSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6CiAgICAgICAg
IC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCogdGVtcDsKICAgICAgICAg
c2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7Ci0gICAgICAgIHRlbXAg
PSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgdGVtcCA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0
ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0
dXJuTnVsbCk7CiAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0lu
dDo6Y3JlYXRlV2l0aExlbgogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGggPD0gbWF4TGVuZ3Ro
KTsKLSAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFs
bG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogZGF0YSA9IHZtLnBy
aW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxl
bmd0aCAqIHNpemVvZihEaWdpdCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0
dXJuTnVsbCk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRhKSkgewogICAgICAgICBpZiAobnVsbE9y
R2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uYmlnSW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uYmlnSW50U3BhY2UoKTsKICAgICB9
CiAKICAgICBlbnVtIGNsYXNzIEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uY2FsbGVlU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDYWxsZWUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
U2NvcGUqIHNjb3BlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU0RhdGFWaWV3UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNEYXRhVmlld1Byb3RvdHlwZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uZnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlvblNwYWNlKCk7
CiAgICAgfQogICAgIAogICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50U2NvcGUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ltbXV0YWJsZUJ1dHRlcmZseS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tdXRhYmxl
QnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIC8vIFdlIGFsbG9jYXRlIG91dCBvZiB0aGUgSlNWYWx1ZSBnaWdhY2FnZSBhcyBvdGhl
ciBjb2RlIGV4cGVjdHMgYWxsIGJ1dHRlcmZsaWVzIHRvIGxpdmUgdGhlcmUuCi0gICAgICAgIHJl
dHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBPbmx5IGNhbGwgdGhpcyBpZiB5b3UganVz
dCBhbGxvY2F0ZWQgdGhpcyBidXR0ZXJmbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1
cm4gJnZtLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0udmFyaWFi
bGVTaXplZENlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRh
YmxlT2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTTW9kdWxl
TG9hZGVyLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBlbnVtIFN0
YXR1cyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNPTk9iamVjdCwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTT05PYmplY3QqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2UKIENvbXBsZXRlU3Vic3BhY2UqIEpTRmluYWxPYmplY3Q6OnN1YnNwYWNlRm9yKFZNJiB2
bSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbik7Ci0g
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVsaXN0ZnJvbWFycmF5bGlr
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ucHJv
bWlzZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb21pc2VTcGFjZSgpOwogICAgIH0KIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Byb21pc2UqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Byb21pc2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU1Byb21pc2VQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKiBKU1Byb3BlcnR5TmFtZQogICAgIHVuc2lnbmVkIHByb3BlcnR5TmFtZXNC
dWZmZXJTaXplSW5CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQ+KHByb3BlcnR5TmFtZXNTaXplKSAq
IHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KTsKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+KiBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gbnVsbHB0cjsKICAgICBpZiAocHJvcGVydHlOYW1l
c0J1ZmZlclNpemVJbkJ5dGVzKSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0
aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUlu
Qnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAg
IHByb3BlcnR5TmFtZXNCdWZmZXIgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyW2ld
LmNsZWFyKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
cHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb3BlcnR5
TmFtZUVudW1lcmF0b3JTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwg
UHJvcGVydHlOYW1lQXJyYXkmJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUpID09IHNpemVvZihKU1Byb3h5KSk7Ci0g
ICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmpzUHJv
eHlTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU1Byb3h5KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0cmlu
Z1NwYWNlKCk7CiAgICAgfQogICAgIAogICAgIC8vIFdlIGVtcGxveSBvdmVyZmxvdyBjaGVja3Mg
aW4gbWFueSBwbGFjZXMgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IE1heExlbmd0aApAQCAtMjcw
LDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewot
ICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5y
b3BlU3RyaW5nU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBXZSB1c2UgbG93ZXIgM2JpdHMgb2Yg
ZmliZXIwIGZvciBmbGFncy4gVGhlc2UgYml0cyBhcmUgdXNhYmxlIGR1ZSB0byBhbGlnbm1lbnQs
IGFuZCBpdCBpcyBPSyBldmVuIGluIDMyYml0IGFyY2hpdGVjdHVyZS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTWFwSXRlcmF0b3JQcm90b3R5
cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hcFByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFz
U3RhdGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShNYXRoT2JqZWN0
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTWF0aE9i
amVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoTmF0aXZlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
cmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ubmF0
aXZlRXhlY3V0YWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ubnVtYmVyT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgTnVtYmVy
T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazsKKwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUg
ZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKQEAgLTM5LDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wcm9n
cmFtRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFByb2dyYW1F
eGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5VGFibGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlUYWJsZVNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnByb3BlcnR5VGFibGVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShSZWZsZWN0T2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUmVmbGVjdE9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5yZWdFeHBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5yZWdFeHBTcGFjZSgpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWdFeHAqIGNyZWF0ZShWTSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgT3B0aW9uU2V0PFlhcnI6
OkZsYWdzPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5yZWdFeHBPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5y
ZWdFeHBPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0
cl90IGxhc3RJbmRleElzTm90V3JpdGFibGVGbGFnID0gMGIwMTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShSZWdFeHBQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2NvcGVk
QXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UgPSBu
dWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRhYmxlLT5sZW5ndGgoKSkgewogICAgICAg
ICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9IHRvdGFsTGVuZ3RoIC0gdGFibGUt
Pmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVu
a25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBu
dWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBzdG9yYWdl
ID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICog
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6QXNzZXJ0KSk7CiAgICAgfQogCiAgICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPSBu
ZXcgKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJn
dW1lbnRzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7
Ci0gICAgICAgIHJldHVybiAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0uc2NvcGVkQXJndW1lbnRzU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFu
IGFyZ3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRh
bmdlcm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2V0SXRlcmF0b3JQcm90b3R5cGUq
IGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFNldFByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1No
YWRvd1JlYWxtUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFNoYWRvd1JlYWxtUHJvdG90eXBlKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVN
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnNw
YXJzZUFycmF5VmFsdWVNYXBTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zcGFyc2VBcnJheVZh
bHVlTWFwU3BhY2UoKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdP
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJpbmdPYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uc3RydWN0dXJlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2UoKTsK
ICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG90
eXBlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIFN0cnVjdHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFYKICAgICAg
ICAgKytzaXplOwogICAgICsrc2l6ZTsgLy8gU2VudGluZWwgbnVsbHB0ci4KICAgICBzaXplX3Qg
Ynl0ZXMgPSBDaGVja2VkPHNpemVfdD4oc2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQpOwotICAg
IFN0cnVjdHVyZUlEKiB2ZWN0b3IgPSBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmVJRCo+KHZtLmpzVmFs
dWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51
bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgU3RydWN0dXJlSUQq
IHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOwogICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVz
KTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmVDaGFpbj4odm0pKSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hh
aW5TdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvcik7CiAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKHZt
LCBoZWFkKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN0
cnVjdHVyZUNoYWluU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4q
IGNyZWF0ZShWTSYsIEpTT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlUmFyZURhdGFT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZVJhcmVEYXRhKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTeW1ib2xQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTeW1i
b2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNyArNDU2
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHJldHVybiAmdm0uc3ltYm9sVGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5zeW1ib2xUYWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBj
cmVhdGUoVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOCw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE5vdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsTm93LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsTm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbE5vdywgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsTm93KiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02NCw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsT2JqZWN0
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9y
YWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0
Zi9TdGFja1RyYWNlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyMSArMzIsMTUg
QEAKICNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCi0jaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCi0jaW5jbHVk
ZSAiQm9vbGVhbk9iamVjdC5oIgotI2luY2x1ZGUgIkJyYW5kZWRTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCIKLSNpbmNs
dWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJEYXRlSW5z
dGFuY2UuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiRGVmZXJyZWRX
b3JrVGltZXIuaCIKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJEb3VibGVQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKQEAgLTU1LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgiCiAjaW5jbHVk
ZSAiRlRMVGh1bmtzLmgiCi0jaW5jbHVkZSAiRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCIKICNpbmNsdWRlICJGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCkBAIC02Niw3
NyArNTksMjUgQEAKICNpbmNsdWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkludGxDYWNoZS5oIgotI2luY2x1ZGUgIkludGxDb2xsYXRvci5o
IgotI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxEaXNwbGF5
TmFtZXMuaCIKLSNpbmNsdWRlICJJbnRsTGlzdEZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxMb2Nh
bGUuaCIKLSNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFBsdXJh
bFJ1bGVzLmgiCi0jaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgotI2luY2x1ZGUg
IkludGxTZWdtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCi0jaW5j
bHVkZSAiSW50bFNlZ21lbnRzLmgiCi0jaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCi0jaW5j
bHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNp
bmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiSklUU2l6ZVN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgotI2lu
Y2x1ZGUgIkpTQVBJR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIu
aCIKLSNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgotI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5oIgot
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9t
R2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgotI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKLSNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU01vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKLSNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJKU1NldC5oIgot
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKLSNp
bmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCIKLSNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNU
eXBlZEFycmF5cy5oIgotI2luY2x1ZGUgIkpTV2Vha01hcC5oIgotI2luY2x1ZGUgIkpTV2Vha09i
amVjdFJlZi5oIgotI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUdsb2JhbC5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKLSNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5TW9kdWxlLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseVRhYmxlLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVRhZy5oIgotI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCkBAIC0xNTEsMjcgKzkyLDE2IEBACiAjaW5jbHVkZSAi
UHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlUYWJsZS5oIgotI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVk
ZSAiUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCi0j
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgog
I2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIK
LSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgotI2luY2x1
ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgot
I2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKLSNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9u
LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCi0jaW5jbHVkZSAiVGVtcG9yYWxQbGFp
blRpbWUuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVzdFJ1
bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlw
ZVByb2ZpbGVyLmgiCkBAIC0xODMsMTkgKzExMywxNiBAQAogI2luY2x1ZGUgIldhc21Xb3JrbGlz
dC5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5o
IgotI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCIKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlYWRXcml0ZUxvY2suaD4KICNp
bmNsdWRlIDx3dGYvU2ltcGxlU3RhdHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tUcmFjZS5oPgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nVGFibGUuaD4KIAogI2lmIEVOQUJM
RShDX0xPT1ApCi0jaW5jbHVkZSAiQ0xvb3BTdGFjay5oIgogI2luY2x1ZGUgIkNMb29wU3RhY2tJ
bmxpbmVzLmgiCiAjZW5kaWYKIApAQCAtMjA3LDE1ICsxMzQsNiBAQAogI2luY2x1ZGUgIlJlZ0V4
cC5oIgogI2VuZGlmCiAKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotI2luY2x1ZGUgIk9iakND
YWxsYmFja0Z1bmN0aW9uLmgiCi0jZW5kaWYKLQotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVE
Ci0jaW5jbHVkZSAiSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDQ2Fs
bGJhY2tGdW5jdGlvbi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBBdG9taWM8dW5z
aWduZWQ+IFZNOjpzX251bWJlck9mSURzOwpAQCAtMjkxLDEwOSArMjA5LDYgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgbV9yYW5kb20oT3B0aW9uczo6
c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA/IE9wdGlvbnM6OnNlZWRPZlZNUmFuZG9tRm9yRnV6
emVyKCkgOiBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQogICAgICwgbV9pbnRlZ3Jp
dHlSYW5kb20oKnRoaXMpCiAgICAgLCBoZWFwKCp0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RN
YWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNh
Z2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpz
VmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBl
KG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3Ry
dWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlI
ZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNO
b3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXIpKSkK
LSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRy
aWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAs
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENl
bGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAs
IGFwaUdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0FQ
SUdsb2JhbE9iamVjdD4oKSkKLSAgICAsIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDYWxsYmFja0NvbnN0cnVjdG9yPigpKQotICAgICwg
Y2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4+KCkpCi0gICAgLCBjYWxsYmFja09iamVj
dEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+PigpKQotICAgICwgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4oKSkKLSAg
ICAsIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkpCi0gICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8RGF0ZUluc3RhbmNlPigpKQotICAgICwgZXJy
b3JJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxFcnJvckluc3Rh
bmNlPigpKQotICAgICwgZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5PigpKQotICAgICwgZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50PigpKQotICAgICwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTR2xvYmFsT2JqZWN0PigpKQotICAgICwgaW5qZWN0ZWRT
Y3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVj
dG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKLSAgICAsIGphdmFTY3JpcHRDYWxsRnJhbWVI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW5zcGVjdG9yOjpKU0phdmFTY3Jp
cHRDYWxsRnJhbWU+KCkpCi0gICAgLCBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZVJlY29yZD4oKSkKLSAgICAsIG1vZHVsZU5hbWVzcGFj
ZU9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU01vZHVsZU5hbWVz
cGFjZU9iamVjdD4oKSkKLSAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTTmF0aXZlU3RkRnVuY3Rpb24+KCkpCi0gICAgLCBzdHJpbmdI
ZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4o
KSkKLSAgICAsIHdlYWtNYXBIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNX
ZWFrTWFwPigpKQotICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1dlYWtTZXQ+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
bWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKLSNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAotICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4+
KCkpCi0gICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotI2lmZGVmIEpTQ19H
TElCX0FQSV9FTkFCTEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4o
KSkKLSAgICAsIGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZShJc29I
ZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckdsb2JhbE9i
amVjdD4+KCkpCi0gICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEpTQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCi0jZW5kaWYKLSAgICAsIGlu
dGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsQ29sbGF0
b3I+KCkpCi0gICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQotICAgICwgaW50bERpc3BsYXlOYW1l
c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGlzcGxheU5hbWVzPigp
KQotICAgICwgaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SW50bExpc3RGb3JtYXQ+KCkpCi0gICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxMb2NhbGU+KCkpCi0gICAgLCBpbnRsTnVtYmVyRm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkp
Ci0gICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SW50bFBsdXJhbFJ1bGVzPigpKQotICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pigp
KQotICAgICwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxJbnRsU2VnbWVudEl0ZXJhdG9yPigpKQotICAgICwgaW50bFNlZ21lbnRlckhlYXBD
ZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsU2VnbWVudGVyPigpKQotICAgICwg
aW50bFNlZ21lbnRzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdt
ZW50cz4oKSkKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVC
bG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrPigpKQotICAgICwgd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUV4Y2VwdGlvbj4oKSkKLSAgICAsIHdlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNz
ZW1ibHlGdW5jdGlvbj4oKSkKLSAgICAsIHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlHbG9iYWw+KCkpCi0gICAgLCB3ZWJB
c3NlbWJseUluc3RhbmNlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNZW1vcnk+KCkpCi0gICAgLCB3
ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dl
YkFzc2VtYmx5TW9kdWxlPigpKQotICAgICwgd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ+KCkp
Ci0gICAgLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5VGFnSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlUYWc+KCkpCi0jZW5kaWYK
LSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2Fn
ZSBBdXhpbGlhcnkiLCBoZWFwLCAqYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCi0gICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCAq
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHgyNDFlOTQ2Ci0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRl
eGluZ0hlYWRlciIsIGhlYXAsICppbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCi0gICAgLCBjZWxs
U3BhY2UoIkpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKLSAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsIGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKLSAgICAsIGRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsICpkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHg0ZjVlZDdhOQotICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKLSAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKLSAgICAsIGNhbGxlZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKLSAg
ICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCi0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVy
U2V0dGVyKQotICAgICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
KmRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQotICAgICwgZG9tQXR0cmli
dXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikKLSAgICAsIGV4Y2VwdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNl
cHRpb24pCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Up
IC8vIEhhc2g6MHg3YjczMGIyMAotICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcy
Ci0gICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhl
YXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQotICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgLCBpbnRlcm5hbEZ1
bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIElu
dGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAotICAgICwganNQcm94eVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQotICAgICwg
bmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUK
LSAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCi0gICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBN
YWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KLSAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQotICAgICwgcHJvcGVy
dHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCi0gICAgLCBwcm9wZXJ0eVRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgotICAgICwgcmVnRXhwU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4
cCkKLSAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCi0gICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKnN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQotICAg
ICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFw
Q2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKLSAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U3BhcnNlQXJyYXlWYWx1ZU1hcCkKLSAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYK
LSAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVh
cENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCi0gICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKLSAg
ICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNh
NGU2MmQKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQot
ICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQotICAgICwgc3ltYm9s
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAotICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBjb2RlQmxvY2tTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJs
b2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKLSAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5j
dGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCi0gICAgLCBwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3Ci0gICAgLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFz
aDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YShudWxs
cHRyKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQpAQCAtMTU3MiwxMzcgKzEzODcsNiBA
QCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICBtX3NoYWRvd0NoaWNrZW4gPSBt
YWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKLSNkZWZpbmUgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAg
IElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJU
KCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUo
c3BhY2UpOyBcCi0gICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgIH0KLQotCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpR2xvYmFsT2JqZWN0U3Bh
Y2UsICphcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQVBJR2xvYmFsT2JqZWN0KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVZhbHVlV3JhcHBlclNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElWYWx1ZVdyYXBwZXIpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJyYXlCdWZmZXJTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIEpTQXJyYXlCdWZmZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coYXJyYXlJdGVyYXRvclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUl0ZXJhdG9y
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFzeW5jR2VuZXJhdG9y
U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FzeW5jR2VuZXJhdG9yKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludDY0QXJyYXlTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTQmlnSW50NjRBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhiaWdJbnRPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEJpZ0ludE9i
amVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhiaWdVaW50NjRB
cnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdVaW50NjRBcnJheSkKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib29sZWFuT2JqZWN0U3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBCb29sZWFuT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQm91
bmRGdW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coY2FsbGJhY2tDb25zdHJ1Y3RvclNwYWNlLCAqY2FsbGJhY2tDb25zdHJ1
Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVjdG9yKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UsICpjYWxs
YmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tG
dW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBI
YXNoOjB4ZTc2NDhlYmMKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
YWxsYmFja09iamVjdFNwYWNlLCAqY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJh
Y2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbUdldHRlckZ1bmN0
aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UsICpjdXN0
b21TZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBEZWJ1Z2dl
clNjb3BlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5z
dGFuY2VTcGFjZSwgKmVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUsIEVycm9ySW5zdGFuY2UpIC8v
IEhhc2g6MHgzZjQwZDRhCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZmxvYXQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0MzJBcnJheSkKLURZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0QXJyYXlTcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGZ1bmN0aW9uUmFyZURhdGFTcGFjZSwgKmRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uUmFyZURhdGEpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZ2VuZXJhdG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0dl
bmVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhnbG9iYWxP
YmplY3RTcGFjZSwgKmdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNHbG9iYWxPYmplY3QpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW5qZWN0ZWRTY3JpcHRIb3N0
U3BhY2UsICppbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZSwgSW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5KQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTSW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnQzMkFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0ludDMy
QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coamF2YVNjcmlw
dENhbGxGcmFtZVNwYWNlLCAqamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5zcGVj
dG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwgKmpzTW9kdWxlUmVjb3JkSGVhcENlbGxU
eXBlLCBKU01vZHVsZVJlY29yZCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhtYXBCdWNrZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTWFwOjpCdWNrZXRUeXBl
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEl0ZXJhdG9yU3Bh
Y2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXAp
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3BhY2UsICptb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5cGUsIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UsICpuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwg
SlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0Ci1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5
cGUsIFByb3h5T2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHByb3h5UmV2b2tlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBQcm94eVJldm9rZSkgLy8gSGFz
aDoweGI1MDZhOTM5Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2Nv
cGVkQXJndW1lbnRzVGFibGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNj
b3BlZEFyZ3VtZW50c1RhYmxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgSlNTY3JpcHRGZXRjaGVyKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tl
dFR5cGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0
b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBK
U1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzaGFkb3dSZWFs
bVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwg
KmNlbGxIZWFwQ2VsbFR5cGUsIFN0cmljdEV2YWxBY3RpdmF0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN0cmluZ0l0ZXJhdG9yU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU1N0cmluZ0l0ZXJhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTU291cmNlQ29kZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhz
eW1ib2xTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN5bWJvbCkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIFN5bWJvbE9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgKmRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgKmNl
bGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsQ2FsZW5kYXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxEdXJhdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wb3JhbEluc3RhbnRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5z
dGFudCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBs
YWluVGltZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxQbGFpblRpbWUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNl
LCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxUaW1lWm9uZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU1VpbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dWludDhDbGFtcGVkQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhDbGFtcGVk
QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDE2QXJy
YXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDE2QXJyYXkpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVWludDMyQXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2spCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsICp3ZWFrTWFwSGVhcENlbGxUeXBlLCBKU1dl
YWtNYXApIC8vIEhhc2g6MHg2NjJiMTJhMwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYWtTZXRTcGFjZSwgKndlYWtTZXRIZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkg
Ly8gSGFzaDoweDRjNzgxYjMwCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2Vha09iamVjdFJlZlNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXZWFrT2JqZWN0UmVm
KSAvLyBIYXNoOjB4OGVjNjhmMWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3aXRoU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTV2l0aFNjb3BlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZpbmFsaXphdGlvblJlZ2lzdHJ5
U3BhY2UsICpmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlLCBKU0ZpbmFsaXphdGlvblJlZ2lz
dHJ5KQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCAqYXBpV3JhcHBlck9iamVjdEhl
YXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3Bh
Y2UsICpvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZSwgT2JqQ0NhbGxiYWNrRnVuY3Rp
b24pIC8vIEhhc2g6MHgxMGY2MTBiOAotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlXcmFwcGVyT2Jq
ZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCAqanNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBD
ZWxsVHlwZSwgSlNDQ2FsbGJhY2tGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxi
YWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q+KQotI2VuZGlmCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bENvbGxhdG9yU3BhY2UsICppbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUsIEludGxDb2xsYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxs
VHlwZSwgSW50bERhdGVUaW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxEaXNwbGF5TmFtZXNTcGFjZSwgKmludGxEaXNwbGF5TmFtZXNIZWFwQ2Vs
bFR5cGUsIEludGxEaXNwbGF5TmFtZXMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coaW50bExpc3RGb3JtYXRTcGFjZSwgKmludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBl
LCBJbnRsTGlzdEZvcm1hdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTG9jYWxlU3BhY2UsICppbnRsTG9jYWxlSGVhcENlbGxUeXBlLCBJbnRsTG9jYWxlKQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRT
cGFjZSwgKmludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxOdW1iZXJGb3JtYXQpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3Bh
Y2UsICppbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxlcykKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
U3BhY2UsICppbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxT
ZWdtZW50SXRlcmF0b3JTcGFjZSwgKmludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUsIElu
dGxTZWdtZW50SXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFNlZ21lbnRlclNwYWNlLCAqaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwgSW50bFNl
Z21lbnRlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2Vn
bWVudHNTcGFjZSwgKmludGxTZWdtZW50c0hlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRzKQotI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1RvV2FzbUlD
Q2FsbGVlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3BhY2UsICp3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwgSlNX
ZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgKndlYkFz
c2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25T
cGFjZSwgKndlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5RnVuY3Rp
b24pIC8vIEhhc2g6MHg4YjdjMzJkYgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UsICp3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsICp3ZWJBc3NlbWJseUluc3RhbmNl
SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UpCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNZW1vcnlTcGFjZSwgKndlYkFzc2VtYmx5
TWVtb3J5SGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TWVtb3J5KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlU3BhY2UsICp3ZWJBc3Nl
bWJseU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNl
LCAqd2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2Vt
Ymx5VGFibGVTcGFjZSwgKndlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1i
bHlUYWJsZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseVRhZ1NwYWNlLCAqd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlU
YWcpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb25TcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDRhNWZmMDEKLSNlbmRpZgotCi0jdW5kZWYgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XCi0KLSNkZWZpbmUgRFlOQU1JQ19TUEFDRV9B
TkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKLSAg
ICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VS
VCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5k
U2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCi0gICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKLSAgICAgICAgbV8jI25hbWUgPSBXVEZNb3Zl
KHNwYWNlKTsgXAotICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAotICAgIH0KLQot
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNw
YWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgRXZhbEV4ZWN1dGFibGUpIC8vIEhh
c2g6MHg5NThlM2U5ZAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyht
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwotCi0jdW5kZWYg
RFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwotCiBKU0NlbGwqIFZNOjpz
ZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tl
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDI4ICsyOCwyMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxEYXRhLmgi
CiAjaW5jbHVkZSAiQ2FsbGVlQml0cy5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCIKLSNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVu
dEpTTG9jay5oIgogI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRl
QWxsQ29kZUVmZm9ydC5oIgotI2luY2x1ZGUgIkRpc2FsbG93Vk1FbnRyeS5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUuaCIKLSNpbmNsdWRlICJGdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNp
bmNsdWRlICJJbnRlZ3JpdHkuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKLSNpbmNsdWRlICJJ
c29DZWxsU2V0LmgiCi0jaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkpTT05BdG9tU3RyaW5nQ2FjaGUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKKyNpbmNsdWRlICJOYXRpdmVGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCkBAIC01OCwxMCArNTMsOCBAQAogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiVk1UcmFwcy5oIgogI2luY2x1ZGUgIldhc21Db250
ZXh0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRl
ckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTY5LDEx
ICs2Miw5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotI2luY2x1ZGUgPHd0Zi9TdGFja0Jv
dW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3Rv
cHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTgxLDEwICs3Miw2IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQot
I2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+Ci0jZW5kaWYKLQogLy8gRW5hYmxlIHRoZSBPYmpl
Y3RpdmUtQyBBUEkgZm9yIHBsYXRmb3JtcyB3aXRoIGEgbW9kZXJuIHJ1bnRpbWUuIFRoaXMgaGFz
IHRvIG1hdGNoIGV4YWN0bHkgd2hhdCB3ZQogLy8gaGF2ZSBpbiBKU0Jhc2UuaC4KICNpZiAhZGVm
aW5lZChKU0NfT0JKQ19BUElfRU5BQkxFRCkKQEAgLTk4LDE2ICs4NSwxNyBAQAogbmFtZXNwYWNl
IFdURiB7CiBjbGFzcyBSdW5Mb29wOwogY2xhc3MgU2ltcGxlU3RhdHM7CitjbGFzcyBTdGFja1Ry
YWNlOwogfSAvLyBuYW1lc3BhY2UgV1RGCiB1c2luZyBXVEY6OlNpbXBsZVN0YXRzOwordXNpbmcg
V1RGOjpTdGFja1RyYWNlOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQmFzaWNCbG9ja0xv
Y2F0aW9uOworY2xhc3MgQXJnTGlzdDsKIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKIGNsYXNz
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CiBjbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBDYWxs
TGlua0luZm87CiBlbnVtIGNsYXNzIENhbGxNb2RlOwogc3RydWN0IENoZWNrcG9pbnRPU1JFeGl0
U2lkZVN0YXRlOwogY2xhc3MgQ29kZUJsb2NrOwpAQCAtMTE2LDEwMSArMTA0LDQxIEBAIGNsYXNz
IENvbW1vbklkZW50aWZpZXJzOwogY2xhc3MgQ29tcGFjdFREWkVudmlyb25tZW50TWFwOwogY2xh
c3MgQ29uc2VydmF0aXZlUm9vdHM7CiBjbGFzcyBDb250cm9sRmxvd1Byb2ZpbGVyOwotY2xhc3Mg
Q3VzdG9tR2V0dGVyU2V0dGVyOwotY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyOwotY2xh
c3MgRGF0ZUluc3RhbmNlOwotY2xhc3MgRXJyb3JJbnN0YW5jZTsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIEV4Y2VwdGlvblNjb3BlOwotY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I7Ci1jbGFzcyBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci1jbGFzcyBIYW5k
bGVTdGFjazsKK2NsYXNzIEZ1enplckFnZW50OwogY2xhc3MgSGFzT3duUHJvcGVydHlDYWNoZTsK
IGNsYXNzIEhlYXBBbmFseXplcjsKIGNsYXNzIEhlYXBQcm9maWxlcjsKLWNsYXNzIElkZW50aWZp
ZXI7CiBjbGFzcyBJbnRlcnByZXRlcjsKIGNsYXNzIEludGxDYWNoZTsKLWNsYXNzIEludGxDb2xs
YXRvcjsKLWNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKLWNsYXNzIEludGxEaXNwbGF5TmFtZXM7
Ci1jbGFzcyBJbnRsTGlzdEZvcm1hdDsKLWNsYXNzIEludGxMb2NhbGU7Ci1jbGFzcyBJbnRsTnVt
YmVyRm9ybWF0OwotY2xhc3MgSW50bFBsdXJhbFJ1bGVzOwotY2xhc3MgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdDsKLWNsYXNzIEludGxTZWdtZW50SXRlcmF0b3I7Ci1jbGFzcyBJbnRsU2VnbWVudGVy
OwotY2xhc3MgSW50bFNlZ21lbnRzOwotY2xhc3MgSlNBUElHbG9iYWxPYmplY3Q7Ci1jbGFzcyBK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7Ci1jbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7Ci1jbGFz
cyBKU0NDYWxsYmFja0Z1bmN0aW9uOwotY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yOwogY2xh
c3MgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKLWNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwotY2xhc3MgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q7Ci1jbGFzcyBKU01vZHVsZVJlY29yZDsKLWNsYXNzIEpTTmF0aXZlU3RkRnVu
Y3Rpb247Ci1jbGFzcyBKU05vbkZpbmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBK
U1Byb21pc2U7CiBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci1jbGFzcyBKU1J1bkxv
b3BUaW1lcjsKLWNsYXNzIEpTV2Vha01hcDsKLWNsYXNzIEpTV2Vha1NldDsKLWNsYXNzIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5R2xvYmFsOwotY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOwotY2xhc3MgSlNXZWJBc3NlbWJseU1lbW9yeTsKLWNsYXNzIEpT
V2ViQXNzZW1ibHlNb2R1bGU7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5VGFibGU7CiBjbGFzcyBKSVRT
aXplU3RhdGlzdGljczsKIGNsYXNzIEpJVFRodW5rczsKLWNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7Ci1jbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlv
bjsKIGNsYXNzIERlZmVycmVkV29ya1RpbWVyOwogY2xhc3MgUmVnRXhwOwogY2xhc3MgUmVnRXhw
Q2FjaGU7CiBjbGFzcyBSZWdpc3RlcjsKLWNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogI2lm
IEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5k
aWYKIGNsYXNzIFNoYWRvd0NoaWNrZW47CiBjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwotY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJv
dmlkZXJDYWNoZTsKLWNsYXNzIFN0YWNrRnJhbWU7CiBjbGFzcyBTdHJ1Y3R1cmU7Ci0jaWYgRU5B
QkxFKFJFR0VYUF9UUkFDSU5HKQotY2xhc3MgUmVnRXhwOwotI2VuZGlmCiBjbGFzcyBTeW1ib2w7
Ci1jbGFzcyBUZW1wb3JhbER1cmF0aW9uOwotY2xhc3MgVGVtcG9yYWxJbnN0YW50OwogY2xhc3Mg
VHlwZWRBcnJheUNvbnRyb2xsZXI7Ci1jbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKLWNsYXNzIFVu
bGlua2VkRXZhbENvZGVCbG9jazsKLWNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwot
Y2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrOwotY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3Bl
OwotY2xhc3MgVGVtcG9yYWxDYWxlbmRhcjsKLWNsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwotY2xh
c3MgVGVtcG9yYWxUaW1lWm9uZTsKLWNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBj
bGFzcyBUeXBlUHJvZmlsZXI7CiBjbGFzcyBUeXBlUHJvZmlsZXJMb2c7CiBjbGFzcyBXYXRjaGRv
ZzsKLWNsYXNzIFdhdGNocG9pbnQ7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwotY2xhc3MgV2ViQXNz
ZW1ibHlGdW5jdGlvbjsKLWNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCiAjaWYgRU5B
QkxFKERGR19KSVQpICYmIEFTU0VSVF9FTkFCTEVECiAjZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19H
Q19WQUxJREFUSU9OIDEKQEAgLTIyMCwxMCArMTQ4LDYgQEAgY2xhc3MgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ7CiAKIGNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RG
R19ET0VTX0dDX1ZBTElEQVRJT047CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZTsKLXRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlPiBjbGFzcyBJc29JbmxpbmVkSGVhcENlbGxUeXBlOwotdGVtcGxh
dGU8dHlwZW5hbWUgUGFyZW50PiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0OwotCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiBuYW1lc3BhY2UgRlRMIHsKIGNsYXNzIFRodW5rczsKQEAgLTIzNSwxNCArMTU5
LDkgQEAgY2xhc3MgRGF0YWJhc2U7CiBuYW1lc3BhY2UgRE9NSklUIHsKIGNsYXNzIFNpZ25hdHVy
ZTsKIH0KLW5hbWVzcGFjZSBZYXJyIHsKLWNsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlcjsKLX0K
IAogc3RydWN0IEVudHJ5RnJhbWU7Ci1zdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEluc3RydWN0
aW9uOwotc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogY2xhc3MgUXVldWVkVGFzayB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7CkBAIC0yNjEsOCArMTgwLDYgQEAgcHJpdmF0
ZToKICAgICBSZWY8TWljcm90YXNrPiBtX21pY3JvdGFzazsKIH07CiAKLWNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwotCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7
CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMzU3LDExICsyNzQsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZ1enplckFnZW50KiBmdXp6ZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnV6
emVyQWdlbnQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEZ1enplckFnZW50KHN0ZDo6dW5pcXVlX3B0
cjxGdXp6ZXJBZ2VudD4mJiBmdXp6ZXJBZ2VudCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2VudCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNh
biBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOwotICAgICAgICBtX2Z1enplckFnZW50ID0gV1RG
TW92ZShmdXp6ZXJBZ2VudCk7Ci0gICAgfQorICAgIHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1
bmlxdWVfcHRyPEZ1enplckFnZW50PiYmKTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJP
ZklEcygpIHsgcmV0dXJuIHNfbnVtYmVyT2ZJRHMubG9hZCgpOyB9CiAgICAgdW5zaWduZWQgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CkBAIC00MTMsMTQ1ICszMjYsNTggQEAgcHJpdmF0ZToK
IAogcHVibGljOgogICAgIEhlYXAgaGVhcDsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmFz
dE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0b3I7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gcHJpbWl0aXZl
R2lnYWNhZ2VBbGxvY2F0b3I7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFsT2JqZWN0SGVh
cENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNhbGxiYWNr
Q29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY3VzdG9tU2V0dGVy
RnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gZGF0ZUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gZmluYWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
amVjdGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGphdmFTY3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5h
dGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29Jbmxp
bmVkSGVhcENlbGxUeXBlPEpTU3RyaW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGFwaVdyYXBwZXJPYmplY3RIZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tB
UElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGU7Ci0jZW5kaWYK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGludGxEaXNwbGF5TmFtZXNIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGU7Ci0j
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1i
bHlHbG9iYWxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1lbW9yeUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseU1vZHVs
ZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBl
PiB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlOwotI2VuZGlmCisKKyAgICBj
b25zdCBIZWFwQ2VsbFR5cGUmIGNlbGxIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmNlbGxI
ZWFwQ2VsbFR5cGU7IH0KKyAgICBjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCkgeyByZXR1cm4gaGVhcC5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7IH07CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVRTaXplU3RhdGlzdGljcz4gaml0U2l6ZVN0YXRpc3RpY3M7CiAjZW5kaWYK
ICAgICAKLSAgICBDb21wbGV0ZVN1YnNwYWNlIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2U7IC8vIFR5cGVkIGFycmF5cywgc3RyaW5ncywgYml0dmVjdG9ycywgZXRjIGdvIGhlcmUuCi0g
ICAgQ29tcGxldGVTdWJzcGFjZSBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gQnV0
dGVyZmxpZXMsIGFycmF5cyBvZiBKU1ZhbHVlcywgZXRjIGdvIGhlcmUuCi0gICAgQ29tcGxldGVT
dWJzcGFjZSBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsg
Ly8gSlNJbW11dGFibGVCdXR0ZXJmbHkgZ29lcyBoZXJlLgotCi0gICAgLy8gV2UgbWFrZSBjcm9z
cy1jdXR0aW5nIGFzc3VtcHRpb25zIGFib3V0IHR5cGVkIGFycmF5cyBiZWluZyBpbiB0aGUgcHJp
bWl0aXZlIEdpZ2FjYWdlIGFuZCBidXR0ZXJmbGllcwotICAgIC8vIGJlaW5nIGluIHRoZSBKU1Zh
bHVlIGdpZ2FjYWdlLiBGb3Igc29tZSB0eXBlcywgaXQncyBzdXBlciBvYnZpb3VzIHdoZXJlIHRo
ZXkgc2hvdWxkIGdvLCBhbmQgc28gd2UKLSAgICAvLyBjYW4gaGFyZGNvZGUgdGhhdCBmYWN0LiBC
dXQgc29tZXRpbWVzIGl0J3Mgbm90IGNsZWFyLCBzbyB3ZSBhYnN0cmFjdCBpdCBieSBoYXZpbmcg
YSBHaWdhY2FnZTo6S2luZAotICAgIC8vIGNvbnN0YW50IHNvbWV3aGVyZS4KLSAgICAvLyBGSVhN
RTogTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIGlmIGV2ZXJ5b25lIGFic3RyYWN0ZWQgdGhpcz8K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ4Ci0g
ICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNwYWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KEdpZ2FjYWdlOjpLaW5kIGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAg
ICAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgotICAgICAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFs
dWU6Ci0gICAgICAgICAgICByZXR1cm4ganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7Ci0g
ICAgICAgIGNhc2UgR2lnYWNhZ2U6Ok51bWJlck9mS2luZHM6Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJzcGFjZUZvcjxDZWxsVHlwZT4odm0pIHRv
IGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgotICAgIENvbXBsZXRlU3Vic3BhY2UgY2VsbFNw
YWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXplZENlbGxTcGFjZTsgLy8gRklY
TUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3ZSBoYXZlIHRoaW5ncyBpbiBo
ZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHM7IHRob3NlIHNob3Vs
ZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpTVmFsdWVTdHJpY3QgYXV4aWxp
YXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI4NTgKLSAg
ICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwotICAgIAotICAgIElz
b1N1YnNwYWNlIGFycmF5U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRz
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNv
U3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7Ci0gICAg
SXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIGZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7Ci0gICAgSXNvU3Vi
c3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOwotICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFj
ZTsKLSAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2UgbnVtYmVyT2JqZWN0U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlO
YW1lRW51bWVyYXRvclNwYWNlOwotICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsK
LSAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByZWdFeHBPYmpl
Y3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3Bh
Y2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1
ZU1hcFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOwotICAgIElzb1N1YnNwYWNl
IHN0cmluZ09iamVjdFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBicmFuZGVkU3RydWN0dXJlU3BhY2U7
Ci0gICAgSXNvU3Vic3BhY2Ugc3ltYm9sVGFibGVTcGFjZTsKKyAgICBBTFdBWVNfSU5MSU5FIENv
bXBsZXRlU3Vic3BhY2UmIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVy
biBoZWFwLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkgeyBy
ZXR1cm4gaGVhcC5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNw
YWNlJiBnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKEdpZ2FjYWdlOjpLaW5kIGtpbmQpIHsgcmV0dXJu
IGhlYXAuZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShraW5kKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
Q29tcGxldGVTdWJzcGFjZSYgY2VsbFNwYWNlKCkgeyByZXR1cm4gaGVhcC5jZWxsU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnZhcmlhYmxlU2l6ZWRDZWxsU3BhY2U7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCkgeyByZXR1
cm4gaGVhcC5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsgfQorCisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgYXJyYXlTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYXJyYXlTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJpZ0ludFNwYWNlKCkgeyByZXR1cm4gaGVhcC5i
aWdJbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGNhbGxlZVNwYWNl
KCkgeyByZXR1cm4gaGVhcC5jYWxsZWVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vi
c3BhY2UmIGNsb25lZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jbG9uZWRBcmd1bWVu
dHNTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGN1c3RvbUdldHRlclNl
dHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGRhdGVJbnN0YW5jZVNwYWNlKCkgeyByZXR1cm4g
aGVhcC5kYXRlSW5zdGFuY2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IGRvbUF0dHJpYnV0ZUdldHRlclNldHRlclNwYWNlKCkgeyByZXR1cm4gaGVhcC5kb21BdHRyaWJ1
dGVHZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4
Y2VwdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5leGNlcHRpb25TcGFjZTsgfQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpIHsg
cmV0dXJuIGhlYXAuZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOyB9CisgICAgQUxXQVlT
X0lOTElORSBJc29TdWJzcGFjZSYgZnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuZnVuY3Rp
b25TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGdldHRlclNldHRlclNw
YWNlKCkgeyByZXR1cm4gaGVhcC5nZXR0ZXJTZXR0ZXJTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlKCkgeyByZXR1cm4g
aGVhcC5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUg
SXNvU3Vic3BhY2UmIGludGVybmFsRnVuY3Rpb25TcGFjZSgpIHsgcmV0dXJuIGhlYXAuaW50ZXJu
YWxGdW5jdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYganNQcm94
eVNwYWNlKCkgeyByZXR1cm4gaGVhcC5qc1Byb3h5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlJiBuYXRpdmVFeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLm5hdGl2
ZUV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIG51bWJl
ck9iamVjdFNwYWNlKCkgeyByZXR1cm4gaGVhcC5udW1iZXJPYmplY3RTcGFjZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHBsYWluT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFw
LnBsYWluT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9t
aXNlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb21pc2VTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgSXNvU3Vic3BhY2UmIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZSgpIHsgcmV0dXJuIGhl
YXAucHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgcHJvcGVydHlUYWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eVRhYmxl
U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByZWdFeHBTcGFjZSgpIHsg
cmV0dXJuIGhlYXAucmVnRXhwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiByZWdFeHBPYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucmVnRXhwT2JqZWN0U3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiByb3BlU3RyaW5nU3BhY2UoKSB7IHJldHVy
biBoZWFwLnJvcGVTdHJpbmdTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IHNjb3BlZEFyZ3VtZW50c1NwYWNlKCkgeyByZXR1cm4gaGVhcC5zY29wZWRBcmd1bWVudHNTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHNwYXJzZUFycmF5VmFsdWVNYXBT
cGFjZSgpIHsgcmV0dXJuIGhlYXAuc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cmlu
Z1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RyaW5nT2JqZWN0U3Bh
Y2UoKSB7IHJldHVybiBoZWFwLnN0cmluZ09iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgc3RydWN0dXJlQ2hhaW5TcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0
dXJlQ2hhaW5TcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVy
ZVJhcmVEYXRhU3BhY2UoKSB7IHJldHVybiBoZWFwLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJ1Y3R1cmVTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuc3RydWN0dXJlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBi
cmFuZGVkU3RydWN0dXJlU3BhY2UoKSB7IHJldHVybiBoZWFwLmJyYW5kZWRTdHJ1Y3R1cmVTcGFj
ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHN5bWJvbFRhYmxlU3BhY2UoKSB7
IHJldHVybiBoZWFwLnN5bWJvbFRhYmxlU3BhY2U7IH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKICAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBcCi0gICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIGlm
IChtXyMjbmFtZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwKLSAg
ICAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXAotICAgICAgICByZXR1cm4gbmFtZSMj
U2xvdygpOyBcCi0gICAgfSBcCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UqIG5h
bWUjI1Nsb3coKTsgXAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV8jI25hbWU7
Ci0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5u
YW1lPG1vZGU+KCk7IH0KIAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCkBAIC02NTcs
NzQgKzQ4MywyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIKLSAgICAKLSAgICBJc29DZWxsU2V0IGV4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOwotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZXNXaXRoRmluYWxpemVyczsKKworICAgIEFMV0FZU19JTkxJTkUgSXNvQ2VsbFNl
dCYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoKSB7IHJldHVybiBo
ZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5h
bGl6ZXJzKCkgeyByZXR1cm4gaGVhcC5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5h
bGl6ZXJzOyB9CiAKICNkZWZpbmUgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIo
bmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAgICBJc29TdWJz
cGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKGF1dG8qIHNwYWNlQW5kU2V0ID0g
bV8jI25hbWUuZ2V0KCkpIFwKLSAgICAgICAgICAgIHJldHVybiAmc3BhY2VBbmRTZXQtPnNwYWNl
OyBcCi0gICAgICAgIGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIFwK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93
KCk7IFwKLSAgICB9IFwKLSAgICBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBcCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtXyMjbmFtZTsKLSAgICAKLSAgICBzdHJ1Y3QgU3Bh
Y2VBbmRTZXQgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAg
QUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSogbmFtZSgpIHsgcmV0dXJuIGhlYXAubmFtZTxtb2Rl
PigpOyB9CiAKLSAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7Ci0gICAgICAgIElzb0NlbGxTZXQg
c2V0OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgICAgICBTcGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCi0gICAgICAgICAg
ICA6IHNwYWNlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCi0gICAgICAg
ICAgICAsIHNldChzcGFjZSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBzdGF0aWMgSXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KAotICAgICAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtCi0gICAgICAgICAgICAgICAgT0JK
RUNUX09GRlNFVE9GKFNwYWNlQW5kU2V0LCBzcGFjZSkgKwotICAgICAgICAgICAgICAgIE9CSkVD
VF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAot
ICAgIFNwYWNlQW5kU2V0IGNvZGVCbG9ja1NwYWNlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb2RlQmxvY2tTcGFjZShjb25zdCBGdW5jJiBmdW5jKQot
ICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGluY2x1ZGUgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSBiZWNhdXNlIHRoaXMgaXMgYWJvdXQgc3Vic2NsYXNzZXMgb2YKLSAgICAgICAg
Ly8gSlNDOjpDb2RlQmxvY2suCi0gICAgICAgIGZ1bmMoY29kZUJsb2NrU3BhY2UpOwotICAgIH0K
KyAgICB1c2luZyBTcGFjZUFuZFNldCA9IEhlYXA6OlNwYWNlQW5kU2V0OworICAgIEFMV0FZU19J
TkxJTkUgU3BhY2VBbmRTZXQmIGNvZGVCbG9ja1NwYWNlKCkgeyByZXR1cm4gaGVhcC5jb2RlQmxv
Y2tTcGFjZTsgfQogCiAgICAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIoZXZh
bEV4ZWN1dGFibGVTcGFjZSkKICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
Uihtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgIFNwYWNlQW5kU2V0IGZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlOwotICAgIFNwYWNlQW5kU2V0IHByb2dyYW1FeGVjdXRhYmxlU3BhY2U7
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaFNjcmlwdEV4
ZWN1dGFibGVTcGFjZShjb25zdCBGdW5jJiBmdW5jKQotICAgIHsKLSAgICAgICAgaWYgKG1fZXZh
bEV4ZWN1dGFibGVTcGFjZSkKLSAgICAgICAgICAgIGZ1bmMoKm1fZXZhbEV4ZWN1dGFibGVTcGFj
ZSk7Ci0gICAgICAgIGZ1bmMoZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UpOwotICAgICAgICBpZiAo
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKQotICAgICAgICAgICAgZnVuYygqbV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAgZnVuYyhwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlKTsKLSAgICB9Ci0KLSAgICBTcGFjZUFuZFNldCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlOwogCi0jdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVIK
KyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgp
IHsgcmV0dXJuIGhlYXAuZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIFNwYWNlQW5kU2V0JiBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5w
cm9ncmFtRXhlY3V0YWJsZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFuZFNldCYg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAudW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQogCiAgICAgVk1UeXBlIHZtVHlwZTsKICAgICBDbGll
bnREYXRhKiBjbGllbnREYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkVudHJ5RnJhbWUuaCIKKyNpbmNsdWRlICJGdXp6ZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIldhdGNoZG9nLmgiCkBAIC05MCw0ICs5MSwxMCBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBW
TTo6dG9wSlNDYWxsRnJhbWUoKSBjCiAgICAgcmV0dXJuIGZyYW1lOwogfQogCitpbmxpbmUgdm9p
ZCBWTTo6c2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50PiYmIGZ1enpl
ckFnZW50KQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9mdXp6ZXJBZ2Vu
dCwgIk9ubHkgb25lIEZ1enplckFnZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiIpOwor
ICAgIG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enplckFnZW50KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vh
a01hcFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFdlYWtNYXBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVj
dFJlZlByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYWtPYmplY3RSZWZQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBX
ZWFrT2JqZWN0UmVmUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShXZWFrU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha1NldFByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0
ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAg
ICBKU0RvbGxhclZNQ2FsbEZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0y
MjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgUm9vdCogcm9vdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdC5nZXQoKTsgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBSb290KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkBAIC0zNTQsNyArMzU0LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFNpbXBsZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKQEAgLTQyNiw3ICs0MjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTUwOCw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTU5MCw3ICs1OTAs
NyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgUnVudGltZUFycmF5
KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCkBAIC03NzIsNyArNzcyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04NzIsNyArODcyLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC04OTcsNyArODk3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uY2Vs
bFNwYWNlKCk7CiAgICAgfQogCiAgICAgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENv
cnJlY3RTbG90U3RhdHVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC05NDgsNyAr
OTQ4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0uY2VsbFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBKU1Rlc3RD
dXN0b21HZXR0ZXJTZXR0ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4Mzgs
NyArMTgzOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBjbGFzcyBDbGllbnQgZmluYWwgOiBwdWJsaWMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xp
ZW50IHsKQEAgLTE5MzMsNyArMTkzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBXYXNtU3RyZWFtaW5nQ29tcGlsZXIoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q29tcGlsZXJNb2RlIGNvbXBpbGVyTW9kZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlLCBKU09iamVjdCogaW1wb3J0
T2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRl
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
Y2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KICAgICAK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1dlYkFzc2VtYmx5LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZSogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Q
cm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1By
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdl
YkFzc2VtYmx5VGFnUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
ODEgQEAKKzIwMjEtMTEtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgU3Vic3BhY2VzIGZyb20gVk0gdG8gSGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY0OAorICAgICAgICByZGFyOi8vODU4NzU3
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBFbWJl
ZCBJc29IZWFwQ2VsbFR5cGUgaW5zdGFuY2VzIGluIEpTVk1DbGllbnREYXRhIGRpcmVjdGx5IGlu
c3RlYWQgb2YKKyAgICAgICAgICAgbWFsbG9jJ2luZyB0aGVtIHNlcGFyYXRlbHkgYW5kIHJlZmVy
ZW5jaW5nIHRoZW0gdmlhIHVuaXF1ZV9wdHJzLiAgVGhlc2UKKyAgICAgICAgICAgaW5zdGFuY2Vz
IGFyZSBhbHdheXMgaW5zdGFudGlhdGVkIHVuY29uZGl0aW9uYWxseSBhbnl3YXkuICBUaGlzIGNo
YW5nZQorICAgICAgICAgICBlbGltaW5hdGVzIHRoZSB1bm5lZWRlZCBidXN5IHdvcmsgdG8gYWxs
b2NhdGUgdGhlbSBzZXBhcmF0ZWx5LgorCisgICAgICAgIDIuIEFkZCBtaXNzaW5nIGluaXRpYWxp
emF0aW9uIG9mIEpTVk1DbGllbnREYXRhOjptX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuCisgICAgICAgICAgIFRoaXMgaGFzbid0IGJlZW4gYW4gaXNzdWUgc28gZmFy
IGJlY2F1c2Ugd2UgZG9uJ3QgY3VycmVudGx5IGFsbG93IHNoYXJlZCB3b3JrZXJzLgorCisgICAg
ICAgIDMuIFJlYmFzZSBiaW5kaW5ncyB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0
ZXJhdG9yLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3I6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0
YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVJdGVy
YWJsZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNF
eHBvc2VkU3Rhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9zZWRTdGFyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V4cG9z
ZWRTdGFyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENF
UmVhY3Rpb25zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRy
YWNlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT046OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFu
Y2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3REb21haW5TZWN1cml0eURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RG9tYWluU2VjdXJpdHk6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uOjpzdWJzcGFjZUZv
ckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEdsb2JhbE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRl
cmZhY2VET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXNDYWxsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0SW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
X2VudHJpZXNDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SXRlcmFibGU6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVj
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RNYXBMaWtlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lc3BhY2VPYmplY3Q6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uX2VudHJpZXND
YWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbERPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWw6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQ6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlTZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlYWRPbmx5U2V0
TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXRMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXRMaWtlOjpzdWJzcGFj
ZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrbGV0R2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2Jh
bFNjb3BlLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgor
CiAyMDIxLTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgcnZmYyB0byBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJ
dGVyYXRvci5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUFzeW5jSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNET01Bc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNE
T01JdGVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
CiAgICAgc3RhdGljIEpTRE9NSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBAIElz
b1N1YnNwYWNlKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I+IHx8ICFKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4pCi0gICAgICAgIGNsaWVudERh
dGEuc2V0RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IpKTsK
KyAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JT
cGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3IpKTsKICAgICBlbHNlCi0gICAgICAgIGNsaWVudERhdGEuc2V0RmlsZVN5
c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmlsZVN5
c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yKSk7CisgICAgICAgIGNsaWVudERhdGEuc2V0Rmls
ZVN5c3RlbURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yU3BhY2UobWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0Zp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOwogICAgIGF1dG8qIHNwYWNlID0gY2xp
ZW50RGF0YS5maWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZSgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIkpTV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgpAQCAtNTks
MzMgKzYwLDM0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNs
aWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9i
dWlsdGluTmFtZXModm0pCi0gICAgLCBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZShKU0M6Oklz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFJ1bnRpbWVBcnJheT4oKSkKLSAgICAsIG1fcnVudGltZU9i
amVjdEhlYXBDZWxsVHlwZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q+KCkpCi0gICAgLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlKEpT
Qzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXaW5kb3dQcm94eT4oKSkKLSAgICAsIG1faGVh
cENlbGxUeXBlRm9ySlNET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0RP
TVdpbmRvdz4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU+KCkpCi0gICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93KEpT
Qzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNSZW1vdGVET01XaW5kb3c+KCkpCi0gICAgLCBt
X2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPigpKQorICAgICwgbV9ydW50aW1lQXJyYXlIZWFw
Q2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8UnVudGltZUFycmF5PigpKQorICAg
ICwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdz
PEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q+KCkpCisgICAgLCBtX3dpbmRvd1Byb3h5SGVh
cENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2luZG93UHJveHk+KCkpCisg
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpB
cmdzPEpTRE9NV2luZG93PigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU+KCkpCisgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2lu
ZG93KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTUmVtb3RlRE9NV2luZG93PigpKQorICAg
ICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxU
eXBlOjpBcmdzPEpTV29ya2VyR2xvYmFsU2NvcGU+KCkpCisgICAgLCBtX2hlYXBDZWxsVHlwZUZv
ckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4oKSkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCkpCisgICAg
LCBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKEpTQzo6SXNvSGVh
cENlbGxUeXBlOjpBcmdzPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigpKQogI2VuZGlmCi0g
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCisgICAgLCBtX2hlYXBDZWxs
VHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
V29ya2xldEdsb2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAg
ICwgbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT4oKSkKKyAgICAsIG1f
aGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKLSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU+KCkpCisgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4o
KSkKICNlbmRpZgotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0lEQlNlcmlhbGl6YXRpb25H
bG9iYWxPYmplY3Q+KCkpCi0gICAgLCBtX2RvbUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RPTUJ1aWx0aW5D
b25zdHJ1Y3RvckJhc2UpCi0gICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQ29uc3RydWN0b3JCYXNl
KQotICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01PYmplY3QpCi0gICAgLCBtX2RvbVdpbmRv
d1Byb3BlcnRpZXNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQotICAgICwgbV9ydW50aW1lQXJyYXlTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGUs
IFJ1bnRpbWVBcnJheSkKLSAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBSdW50aW1lTWV0aG9kKSAvLyBIYXNo
OjB4ZjcwYzRhODUKLSAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICptX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3QpCi0gICAgLCBtX3dpbmRvd1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKm1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCi0gICAg
LCBtX2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV9o
ZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdCkKKyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNJREJTZXJpYWxp
emF0aW9uR2xvYmFsT2JqZWN0KEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTSURCU2VyaWFs
aXphdGlvbkdsb2JhbE9iamVjdD4oKSkKKyAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RP
TUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UpCisgICAgLCBtX2RvbUNvbnN0cnVjdG9yU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTUNvbnN0
cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tTmFtZXNwYWNlT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0RPTU9iamVjdCkKKyAgICAs
IG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNET01XaW5kb3dQcm9wZXJ0aWVzKQorICAgICwgbV9ydW50
aW1lQXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3J1bnRpbWVBcnJheUhl
YXBDZWxsVHlwZSwgUnVudGltZUFycmF5KQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBSdW50aW1lTWV0
aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fcnVudGltZU9iamVjdFNwYWNlIElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpC
aW5kaW5nczo6UnVudGltZU9iamVjdCkKKyAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlLCBKU1dpbmRvd1By
b3h5KQorICAgICwgbV9pZGJTZXJpYWxpemF0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QsIEpT
SURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCkKICAgICAsIG1fc3Vic3BhY2VzKG1ha2VVbmlx
dWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC05MiwyNiArOTIsMjYg
QEAgcHJpdmF0ZToKICAgICBKU0J1aWx0aW5GdW5jdGlvbnMgbV9idWlsdGluRnVuY3Rpb25zOwog
ICAgIFdlYkNvcmVCdWlsdGluTmFtZXMgbV9idWlsdGluTmFtZXM7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9ydW50aW1lT2JqZWN0SGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV93aW5kb3dQ
cm94eUhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX3J1bnRpbWVBcnJh
eUhlYXBDZWxsVHlwZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX3J1bnRpbWVPYmplY3RI
ZWFwQ2VsbFR5cGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV93aW5kb3dQcm94eUhlYXBD
ZWxsVHlwZTsKIHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6
SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlw
ZUZvckpTUmVtb3RlRE9NV2luZG93OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxs
VHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9y
SlNET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1f
aGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3c7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5
cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVh
cENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENl
bGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOworICAg
IEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFw
Q2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5
cGU+IG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6
Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxK
U0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBD
ZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q7
CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6
YXRpb25HbG9iYWxPYmplY3Q7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpJc29TdWJzcGFjZSBtX2Rv
bUJ1aWx0aW5Db25zdHJ1Y3RvclNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODUyLDEzICs0ODUyLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpKVxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBzcGFjZTtcbiIpOwogICAgIGlmIChJc0RPTUdsb2Jh
bE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBz
cGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvciR7Y2xhc3NOYW1lfSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+
IHx8ICEke2NsYXNzTmFtZX06Om5lZWRzRGVzdHJ1Y3Rpb24pO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgJHtjbGFzc05hbWV9PilcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2lu
dGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1l
fSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50
ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVy
ZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCAke2NsYXNzTmFtZX0pO1xuIik7CiAgICAgfQog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpXG4iKTsKQEAgLTY3
MzEsOSArNjczMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCAke2l0ZXJhdG9yTmFtZX0+IHx8ICEke2l0ZXJhdG9yTmFtZX06Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsICR7aXRlcmF0b3JOYW1lfT4pCi0gICAgICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCAke2l0ZXJh
dG9yTmFtZX0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCAke2l0ZXJhdG9yTmFtZX0pOworICAg
ICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3Ike2l0ZXJhdG9yTmFtZX0uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
XCJ1bnJlYWNoYWJsZS1jb2RlXCIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZVwiKQpAQCAtNzUyOSw3ICs3NTI5LDcgQEAgc3ViIEdlbmVyYXRlUHJvdG90eXBl
RGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoJHtwcm90b3R5cGVDbGFzc05hbWV9LCBC
YXNlKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RP
TVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw3
ICszNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0RPTVdpbmRvdzo6c3Vic3BhY2VGCiAgICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRvdy5nZXQoKSkKICAgICAgICAgcmV0dXJu
IHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU0RPTVdpbmRvdywgSlNET01XaW5kb3cpOworICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yRE9NV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRE9NV2luZG93LCBKU0RP
TVdpbmRvdyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRPTVdpbmRv
dy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNE
T01XaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTcwLDcgKzE3MCw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmEKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZv
ckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0
YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4
cG9zZWRTdGFyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU0V4cG9zZWRTdGFyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzYsOSArMjM2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNFeHBvc2VkU3Rhcjo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU0V4cG9zZWRTdGFyPiB8fCAhSlNFeHBvc2VkU3Rhcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU0V4cG9zZWRTdGFyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2Vk
U3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0YXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTRXhwb3NlZFN0YXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0V4cG9zZWRTdGFyKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkU3RhciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNFeHBvc2VkU3Rhcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
ckV4cG9zZWRTdGFyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNTIsOSArMjUyLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaQogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz4gfHwgIUpTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNQYWludFdvcmtsZXRHbG9iYWxTYwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JQYWludFdvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwot
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5t
X2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUsIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwg
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclBhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0
YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwot
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEu
bV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtlckds
b2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTU2hhcmVkV29ya2VyR2xvYmFsU2MKICAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBz
cGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVu
dERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLCBKU1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUsIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDM4LDkgKzQzOCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rpb25zOjpzdWIKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+IHx8ICFKU1Rlc3RDRVJlYWN0aW9uczo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9ucz4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RD
RVJlYWN0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
RVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RDRVJlYWN0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjY0LDkgKzI2NCw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENFUmVhY3Rpb25zU3RyaW4KICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4gfHwgIUpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtNTEzLDkgKzUxMyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENhbGxU
cmFjZXI6OnN1YnMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNl
cj4gfHwgIUpTVGVzdENhbGxUcmFjZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
Q2FsbFRyYWNlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RDYWxsVHJhY2VyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2Fs
bFRyYWNlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3Niw5ICsxNzYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPiB8fCAhSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtNzg5LDkgKzc4OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcz4gfHwgIUpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q29uZGl0aW9uYWxJbmNsdWRlcy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNjExLDkgKzYxMSw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENvbmRpdGlvbmFsbHlSZWEKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4gfHwgIUpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RET01KSVRQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTEyNTIsOSArMTI1Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERPTUpJVDo6c3Vic3Bh
Y2UKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RE9NSklUPiB8fCAhSlNUZXN0
RE9NSklUOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERPTUpJVD4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERP
TUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2Vs
bFR5cGUsIEpTVGVzdERPTUpJVCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERP
TUpJVCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RE9NSklUKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVC5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC04MDgsOSArODA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0RGVmYXVsdFRvSlNPTjo6cwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3REZWZhdWx0VG9KU09OPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTjo6bmVlZHNEZXN0cnVjdGlv
bik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
VGVzdERlZmF1bHRUb0pTT04pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRU
b0pTT04pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVs
dFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWZhdWx0VG9KU09OLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0xNjIsOSArMTYyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRvSlNP
TkluZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZT4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRv
SlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtMjkyLDkgKzI5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CiAgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzMyLDkgKzMzMiw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdERlZmF1bHRUb0pTT05JbmgKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOwogICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5j
cHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4gfHwgIUpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMyMCw5ICszMjAsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3REb21haW5TZWN1cml0eTo6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERvbWFpblNlY3VyaXR5PiB8fCAhSlNUZXN0RG9tYWluU2VjdXJpdHk6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9tYWluU2VjdXJpdHk+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RG9tYWluU2VjdXJpdHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RG9tYWluU2Vj
dXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RG9tYWluU2VjdXJpdHkpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RG9tYWluU2VjdXJpdHkuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQ1OSw5ICs0NTksOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+IHx8ICFKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEVuYWJsZWRCeVNldHRpbmcuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkRm9yQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xODYsOSArMTg2LDkgQEAgSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0RW5hYmxlZEZvckNvbnRleAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dD4gfHwgIUpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PikKLSAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVu
YWJsZWRGb3JDb250ZXh0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTMyMSw5ICszMjEsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3I+IHx8ICFKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudENvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RXZlbnRUYXJnZXQ6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4gfHwgIUpTVGVzdEV2ZW50VGFyZ2V0OjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0PikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2
ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEV2ZW50VGFy
Z2V0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFy
Z2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEV2
ZW50VGFyZ2V0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2
ZW50VGFyZ2V0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5ICsxODcsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFeGNlcHRpb246OnN1YnNwCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4gfHwgIUpTVGVzdEV4Y2VwdGlvbjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBK
U1Rlc3RFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEV4Y2VwdGlvbik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24uZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMTk3LDkgKzE5Nyw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZT4gfHwgIUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxNCw3ICsxODE0LDcgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0R2xvYmFsT2JqZWN0OjpzdQogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVG
b3JKU1Rlc3RHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCk7CisgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTVGVz
dEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
R2xvYmFsT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI3Niw5ICsyNzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rl
c3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkgKzI3Niw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHIKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiB8fCAhSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0z
MDgsOSArMzA4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlcldpdAog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyAr
MTgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTEwNCw5ICsxMTA0LDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJbnRlcmZhY2VJdGVyYXRvcj4g
fHwgIVRlc3RJbnRlcmZhY2VJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
VGVzdEludGVyZmFjZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgVGVzdEludGVyZmFjZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IFRlc3RJbnRlcmZhY2VJdGVyYXRvcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRl
c3RJbnRlcmZhY2VJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJbnRlcmZhY2VJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFjZUl0ZXJh
dG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2VJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAg
LTExOTYsOSArMTE5Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZTo6c3Vi
c3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPiB8fCAhSlNU
ZXN0SW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RJbnRlcmZhY2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZSk7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0SW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE4Nyw5
ICsxODcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nCiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
PiB8fCAhSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuZ2V0KCk7CiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEl0ZXJh
YmxlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC0yMDEsOSArMjAxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yPiB8fCAhVGVzdEl0ZXJhYmxlSXRlcmF0b3I6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yPikKLSAg
ICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7Cisg
ICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVy
YXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5jZWxsSGVhcENlbGxUeXBlLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CisgICAgICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBUZXN0SXRlcmFibGVJdGVyYXRvcik7CiAgICAgICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKQEAgLTI5Myw5ICsyOTMsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RJdGVyYWJsZTo6c3Vic3BhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dEl0ZXJhYmxlPiB8fCAhSlNUZXN0SXRlcmFibGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SXRlcmFibGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJs
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEl0ZXJhYmxlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SXRlcmFibGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0SXRlcmFibGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0SXRlcmFibGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzAsOSArMjMwLDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydQogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4gfHwgIUpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMzUsOSArMzM1LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0TGVnYWN5Tm9JbnRlcmZhYwogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdD4gfHwgIUpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5T3Zl
cnJpZGVCdQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBM
aWtlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RNYXBMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjYsOSArMzY2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0TWFwTGlrZTo6c3Vic3BhYwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RNYXBMaWtlPiB8fCAhSlNUZXN0TWFwTGlrZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RNYXBMaWtlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2UpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE1hcExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtlKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TWFwTGlrZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RN
YXBMaWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7CkBAIC0zODAsOSArMzgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zPiB8fCAhSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNDQs
OSArMzQ0LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkUwogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDAxLDkgKzQwMSw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZAogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2
LDkgKzI0Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlclRocm8KICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24+IHx8ICFKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTI3MCw5ICsyNzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjIsOSArMjYyLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aAogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yMjAsOSArMjIwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsVwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjIwLDkgKzIyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGUK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXI+IHx8ICFKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ2LDkgKzI0Niw5IEBA
IEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJu
IHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIp
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5ICszMDAsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlck5vSWRlCiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPiB8fCAhSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMCw5ICszMDAsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlclRocm93CiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMzMSw5ICszMzEsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM3OCw5ICsz
NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+
IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTQyOCw5ICs0MjgsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+IHx8ICFKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTI3Nyw5ICsyNzcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzYxLDkg
KzM2MSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzM4LDkgKzMzOCw5IEBAIEpTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAgcmV0dXJuIHNwYWNlOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQo
KTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgwLDkgKzI4MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVz
cGFjZU9iamVjdDoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZXNwYWNl
T2JqZWN0PiB8fCAhSlNUZXN0TmFtZXNwYWNlT2JqZWN0OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVzcGFjZU9iamVjdD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVzcGFjZU9iamVjdCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVz
cGFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lc3Bh
Y2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdCA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVzcGFjZU9iamVjdC5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Tm9kZVByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDA1LDkgKzQwNSw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9k
ZUl0ZXJhdG9yPiB8fCAhVGVzdE5vZGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgVGVzdE5vZGVJdGVyYXRvcj4pCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBU
ZXN0Tm9kZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBUZXN0Tm9kZUl0ZXJh
dG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFRlc3ROb2RlSXRlcmF0b3IpOworICAgICAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBUZXN0Tm9kZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkBAIC00OTcsOSArNDk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Tm9k
ZTo6c3Vic3BhY2VGbwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPiB8
fCAhSlNUZXN0Tm9kZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdE5vZGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
b2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5vZGUpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3ROb2RlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODY2LDcgKzE4NjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2JqUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC05MDA2LDkgKzkwMDYsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RPYmo6OnN1YnNwYWNlRm9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE9iaj4gfHwgIUpTVGVzdE9iajo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RPYmo+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T2Jq
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVh
cENlbGxUeXBlLCBKU1Rlc3RPYmopOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
YmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9iaik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPYmouZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzQsOSArMjM0LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3BlcmF0aW9uQ29uZGl0aQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD4gfHwgIUpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yOTUsOSArMjk1LDkgQEAgSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICByZXR1cm4gc3BhY2U7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiB8fCAhSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMzgsOSArMjM4LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cgogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
PiB8fCAhSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6bmVlZHNEZXN0
cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQbHVnaW5JbnRl
cmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTI0NCw5ICsyNDQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbkludGVyZmFj
ZT4gfHwgIUpTVGVzdFBsdWdpbkludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
bHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRl
cmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1Z2luSW50ZXJm
YWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbklu
dGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RQbHVnaW5JbnRlcmZhY2UuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90
eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zMDEs
OSArMzAxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UHJvbWlzZVJlamVjdGlvbgogICAg
ICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+IHx8
ICFKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwNSw5ICszMDUsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RSZWFkT25seU1hcExpa2U6CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4gfHwgIUpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seU1hcExpa2U+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3RSZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RS
ZWFkT25seU1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25s
eU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CiAgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seU1hcExpa2UuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlTZXRMaWtlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjg0LDkg
KzI4NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFJlYWRPbmx5U2V0TGlrZToKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlPiB8fCAhSlNUZXN0
UmVhZE9ubHlTZXRMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5
U2V0TGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlr
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2UpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xNzEsOSArMTcxLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0UmVwb3J0RXh0cmFNZW1vcgogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+IHx8ICFKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVwb3J0
RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZXBvcnRFeHRyYU1l
bW9yeUNvc3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTM0OSw5ICszNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gfHwgIUpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdFNldExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTM0Miw5ICszNDIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RT
ZXRMaWtlOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExp
a2U+IHx8ICFKU1Rlc3RTZXRMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNl
dExpa2U+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2UpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRM
aWtlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2Uu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsK
QEAgLTM1NCw5ICszNTQsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXRMaWtlV2l0aE92
ZXJyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM+IHx8ICFKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllcj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RTdHJpbmdpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lm
aWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MTkyLDkgKzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnkK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb24+IHx8ICFKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6bmVlZHNE
ZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj4p
Ci0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7Cisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAt
MjA5LDkgKzIwOSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWQK
ICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbj4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKTsK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVyYQogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+IHx8
ICFKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6Om5lZWRzRGVzdHJ1Y3Rp
b24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZz4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZzo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTIwOCw5ICsyMDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGU+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
UmVhZE9ubHlBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3Ry
aW5naWZpZXJSZWFkVwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVh
ZFdyaXRlQXR0cmlidXRlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFR5cGVk
ZWZzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
CkBAIC03NzgsOSArNzc4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0VHlwZWRlZnM6OnN1
YnNwYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RUeXBlZGVmcz4gfHwgIUpT
VGVzdFR5cGVkZWZzOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVkZWZzPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVz
dFR5cGVkZWZzKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5
cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFR5cGVkZWZzKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFR5cGVk
ZWZzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZz
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNXb3JrZXJHbG9i
YWxTY29wZTo6cwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29w
ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
V29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFs
U2NvcGUsIEpTV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29y
a2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29w
ZSwgSlNXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9i
YWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1dvcmtlckdsb2Jh
bFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU0M6Oklz
b1N1YnNwYWNlKiBKU1dvcmtsZXRHbG9iYWxTY29wZTo6CiAgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwot
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKmNsaWVudERhdGEubV9oZWFw
Q2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSwgSlNXb3JrbGV0R2xvYmFsU2NvcGUpOwor
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtsZXRHbG9iYWxTY29wZS5n
ZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmts
ZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4o
SlMKIEpTQzo6SXNvU3Vic3BhY2UqIE9iamNGYWxsYmFja09iamVjdEltcDo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU0M6Oklzb1N1
YnNwYWNlUGVyVk0+IHBlclZNKFtdIChKU0M6OlZNJiB2bSkgewotICAgICAgICByZXR1cm4gSVNP
X1NVQlNQQUNFX1BBUkFNRVRFUlMoKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKTsKKyAgICAgICAgcmV0dXJuIElTT19TVUJTUEFDRV9QQVJB
TUVURVJTKHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBPYmpjRmFsbGJhY2tP
YmplY3RJbXApOwogICAgIH0pOwogICAgIHJldHVybiAmcGVyVk0uZ2V0KCkuZm9yVk0odm0pOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiBjbGFzcyBWTTsK
IH0KIAo=
</data>
<flag name="commit-queue"
          id="470672"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445484</attachid>
            <date>2021-11-30 16:18:29 -0800</date>
            <delta_ts>2021-11-30 16:18:29 -0800</delta_ts>
            <desc>patch for landing + speculative fix for Windows build.</desc>
            <filename>bug-233648b.patch</filename>
            <type>text/plain</type>
            <size>431653</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MzI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5MCBA
QAorMjAyMS0xMS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBTdWJzcGFjZXMgZnJvbSBWTSB0byBIZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjQ4CisgICAgICAgIHJkYXI6Ly84NTg3NTc1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFN1YnNwYWNlcyBh
cmUgSGVhcCBkYXRhIHN0cnVjdHVyZXMgdG8gYmVnaW4gd2l0aCwgYW5kIHRoaXMgcmVmYWN0b3Jp
bmcgaXMgbmVlZGVkCisgICAgICAgIGluIHByZXBhcmF0aW9uIGZvciB0aGUgZ2xvYmFsIEdDLgor
CisgICAgICAgIDEuIEVtYmVkIEhlYXBDZWxsVHlwZSBhbmQgSXNvSGVhcENlbGxUeXBlIGluc3Rh
bmNlcyBpbiBIZWFwIGRpcmVjdGx5IGluc3RlYWQgb2YKKyAgICAgICAgICAgbWFsbG9jJ2luZyB0
aGVtIHNlcGFyYXRlbHkgYW5kIHJlZmVyZW5jaW5nIHRoZW0gdmlhIHVuaXF1ZV9wdHJzLiAgVGhl
c2UKKyAgICAgICAgICAgaW5zdGFuY2VzIGFyZSBhbHdheXMgaW5zdGFudGlhdGVkIHVuY29uZGl0
aW9uYWxseSBhbnl3YXkuICBUaGlzIGNoYW5nZQorICAgICAgICAgICBlbGltaW5hdGVzIHRoZSB1
bm5lZWRlZCBidXN5IHdvcmsgdG8gYWxsb2NhdGUgdGhlbSBzZXBhcmF0ZWx5LgorCisgICAgICAg
IDIuIEludHJvZHVjZSBhIEhlYXBTdWJzcGFjZVR5cGVzLmggdGhhdCAjaW5jbHVkZSBhbGwgdGhl
IHR5cGVzIHRoYXQgd2UgaGF2ZQorICAgICAgICAgICBzdWJzcGFjZXMgZm9yLiAgVGhpcyBtYWtl
cyBpdCBzbyB0aGF0IEhlYXAuY3BwJ3MgI2luY2x1ZGUgbGlzdCBpcyBub3QgZmxvb2RlZAorICAg
ICAgICAgICB3aXRoIHRoZXNlIHR5cGVzIHdpdGggc3Vic3BhY2VzLCBhbmQgdGhhdCBpdCdsbCBi
ZSBlYXNpZXIgdG8gZGlzY2VybiBiZXR3ZWVuCisgICAgICAgICAgIHRoZXNlIFN1YnNwYWNlIHR5
cGVzIGZyb20gb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIEhl
YXAuCisKKyAgICAgICAgMy4gQWRkIFZNIGFjY2Vzc29yIG1ldGhvZHMgZm9yIHN1YnNwYWNlcyB0
aGF0IGZvcndhcmQgdG8gSGVhcC4gIFRoaXMgd2lsbCBtYWtlIGl0CisgICAgICAgICAgIGVhc2ll
ciBmb3IgdXMgdG8gcmVkaXJlY3QgdG8gYSB0aHJlYWQgbG9jYWwgYWxsb2NhdG9yIGxhdGVyIGZv
ciB0aGUgZ2xvYmFsIEdDLgorCisgICAgICAgIDQuIFJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZXMg
aW4gVk0uaC4KKworICAgICAgICA1LiBSZW1vdmUgdW51c2VkIENvZGVCbG9ja1NldDo6aXRlcmF0
ZVZpYVN1YnNwYWNlcygpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0V2YWxDb2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9GdW5jdGlvbkNv
ZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaDoK
KyAgICAgICAgKiBieXRlY29kZS9Qcm9ncmFtQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvUmVwYXRjaC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlu
a2VkQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09i
amVjdCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXROZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVx
KToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGhlYXAvQ29kZUJsb2Nr
U2V0Lmg6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6aXRlcmF0ZVZpYVN1YnNwYWNlcyk6IERlbGV0ZWQuCisgICAgICAg
ICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChK
U0M6OkhlYXA6OmZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlND
OjpIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRl
QWxsVW5saW5rZWRDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJr
ZWRDb21waWxlZENvZGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcEluRmluYWxpemUpOgor
ICAgICAgICAoSlNDOjpIZWFwOjphZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6U3BhY2VBbmRTZXQ6OlNwYWNlQW5kU2V0KToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6U3BhY2VBbmRTZXQ6OnNldEZvcik6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVh
Y2hDb2RlQmxvY2tTcGFjZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hTY3JpcHRFeGVj
dXRhYmxlU3BhY2UpOgorICAgICAgICAqIGhlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaDogQWRkZWQu
CisgICAgICAgICogaGVhcC9Jc29IZWFwQ2VsbFR5cGUuaDoKKyAgICAgICAgKiBoZWFwL0lzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaDoKKyAgICAgICAgKiBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5
cGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBl
PENlbGxUeXBlPjo6SXNvSW5saW5lZEhlYXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6Oklzb0lu
bGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZmluaXNo
U3dlZXAgY29uc3QpOgorICAgICAgICAoSlNDOjpJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxU
eXBlPjo6ZGVzdHJveSBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKEpTQ01lbW9yeUZvb3RwcmludDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAoSlNGaWxl
RGVzY3JpcHRvcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnJh
bmRlZFN0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoSlNDOjpCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpC
dXR0ZXJmbHk6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6Z3Jvd0FycmF5
UmlnaHQpOgorICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6OnJlYWxsb2NBcnJheVJpZ2h0SWZQb3Nz
aWJsZSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Db25zb2xlT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6
Q3VzdG9tR2V0dGVyU2V0dGVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogcnVudGltZS9ET01B
dHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
RGlyZWN0QXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmg6CisgICAgICAgICogcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6Cisg
ICAgICAgIChKU0M6Okhhc2hNYXBCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg6CisgICAgICAgICog
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZVBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3Ry
aWN0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnRyeUNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNyZWF0ZVdp
dGhMZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpzdWJzcGFjZUZvcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaDoKKyAgICAgICAgKEpTQzo6SlNJbW11dGFi
bGVCdXR0ZXJmbHk6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVu
dmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZS5oOgorICAgICAgICAoSlNDOjpKU1Byb21pc2U6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5oOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VQcm90b3R5cGU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm94eS5oOgorICAgICAgICAoSlNDOjpK
U1Byb3h5OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFwSXRlcmF0b3JQ
cm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL01hcFByb3RvdHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvTWF0aE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JQcm90
b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL051bWJlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpOdW1iZXJPYmplY3Q6OnN1
YnNwYWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZWRBcmd1bWVudHM6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmg6CisgICAgICAg
ICogcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09i
amVjdC5oOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9s
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGhy
b3dTY29wZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Y2VsbEhl
YXBDZWxsVHlwZSk6CisgICAgICAgIChKU0M6OlZNOjpkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUpOgorICAgICAgICAoSlNDOjpWTTo6cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSk6Cisg
ICAgICAgIChKU0M6OlZNOjppbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpnaWdhY2FnZUF1eGlsaWFyeVNwYWNlKToKKyAg
ICAgICAgKEpTQzo6Vk06OmNlbGxTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjp2YXJpYWJsZVNp
emVkQ2VsbFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmRlc3RydWN0aWJsZU9iamVjdFNwYWNl
KToKKyAgICAgICAgKEpTQzo6Vk06OmFycmF5U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Ymln
SW50U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Y2FsbGVlU3BhY2UpOgorICAgICAgICAoSlND
OjpWTTo6Y2xvbmVkQXJndW1lbnRzU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6Y3VzdG9tR2V0
dGVyU2V0dGVyU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6ZGF0ZUluc3RhbmNlU3BhY2UpOgor
ICAgICAgICAoSlNDOjpWTTo6ZG9tQXR0cmlidXRlR2V0dGVyU2V0dGVyU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6ZXhjZXB0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6ZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZVNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmZ1bmN0aW9uU3BhY2Up
OgorICAgICAgICAoSlNDOjpWTTo6Z2V0dGVyU2V0dGVyU3BhY2UpOgorICAgICAgICAoSlNDOjpW
TTo6Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6aW50
ZXJuYWxGdW5jdGlvblNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmpzUHJveHlTcGFjZSk6Cisg
ICAgICAgIChKU0M6OlZNOjpuYXRpdmVFeGVjdXRhYmxlU3BhY2UpOgorICAgICAgICAoSlNDOjpW
TTo6bnVtYmVyT2JqZWN0U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6cGxhaW5PYmplY3RTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpwcm9taXNlU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6
cHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnByb3BlcnR5
VGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpyZWdFeHBTcGFjZSk6CisgICAgICAgIChK
U0M6OlZNOjpyZWdFeHBPYmplY3RTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpyb3BlU3RyaW5n
U3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6c2NvcGVkQXJndW1lbnRzU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6c3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06
OnN0cmluZ1NwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnN0cmluZ09iamVjdFNwYWNlKToKKyAg
ICAgICAgKEpTQzo6Vk06OnN0cnVjdHVyZUNoYWluU3BhY2UpOgorICAgICAgICAoSlNDOjpWTTo6
c3RydWN0dXJlUmFyZURhdGFTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpzdHJ1Y3R1cmVTcGFj
ZSk6CisgICAgICAgIChKU0M6OlZNOjpicmFuZGVkU3RydWN0dXJlU3BhY2UpOgorICAgICAgICAo
SlNDOjpWTTo6c3ltYm9sVGFibGVTcGFjZSk6CisgICAgICAgIChKU0M6OlZNOjpleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyk6CisgICAgICAgIChKU0M6OlZNOjpleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKToKKyAgICAgICAgKEpTQzo6Vk06
OmNvZGVCbG9ja1NwYWNlKToKKyAgICAgICAgKEpTQzo6Vk06OmZ1bmN0aW9uRXhlY3V0YWJsZVNw
YWNlKToKKyAgICAgICAgKEpTQzo6Vk06OnByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOgorICAgICAg
ICAoSlNDOjpWTTo6dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk6CisgICAgICAgIChK
U0M6OlZNOjpzZXRGdXp6ZXJBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpTcGFj
ZUFuZFNldDo6U3BhY2VBbmRTZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6U3BhY2VB
bmRTZXQ6OnNldEZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjpmb3JFYWNoQ29kZUJs
b2NrU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6Zm9yRWFjaFNjcmlwdEV4ZWN1
dGFibGVTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6Vk06OnNldEZ1enplckFnZW50KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtN
YXBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUu
aDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaDoKKyAgICAgICAgKiB0b29s
cy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmg6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlF
eGNlcHRpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFs
UHJvdG90eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmg6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlUYWdQcm90b3R5cGUuaDoKKwogMjAyMS0xMS0zMCAgQWxleGV5IFNodmF5a2EgIDxhc2h2
YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lICJxdWV1ZVRhc2tUb0V2ZW50TG9vcCIg
dG8gInF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw5ICs3NjAsMTIgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGhlYXAvSGVhcElubGluZXMu
aAogICAgIGhlYXAvSGVhcE9ic2VydmVyLmgKICAgICBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
aAorICAgIGhlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmgKICAgICBoZWFwL0lzb0NlbGxTZXQuaAogICAgIGhlYXAvSXNvSGVhcENlbGxUeXBlLmgK
KyAgICBoZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAorICAgIGhlYXAvSXNvSW5saW5lZEhl
YXBDZWxsVHlwZUlubGluZXMuaAogICAgIGhlYXAvSXNvU3Vic3BhY2UuaAogICAgIGhlYXAvSXNv
U3Vic3BhY2VJbmxpbmVzLmgKICAgICBoZWFwL0lzb1N1YnNwYWNlUGVyVk0uaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmRl
c3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNDTWVtb3J5Rm9vdHByaW50
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NTgsNyArMTk1
OCw3IEBACiAJCUUzQzY5NEIzMjMwMjY4NzcwMDZGQkU0MiAvKiBXYXNtT1NSRW50cnlEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M2OTRCMTIz
MDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQzczQTkxMjVCRkE3M0IwMEVGRTMwMyAv
KiBXYXNtU3RyZWFtaW5nUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFu
LmggKi87IH07CiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5Q0FBMURC
OUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTggLyogSXNv
SW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGUuaCAqLzsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNDQTNB
NEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4MDJCRiAv
KiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMzUxNUYyNDFCODlE
NzAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1h
cmtlZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OwpAQCAtMjAwOSw2ICsyMDA5LDcgQEAKIAkJRkUy
MENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBM
TEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUyODdEMDIyNTJGQjJFODAwRDcyM0Y5IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjg3RDAxMjUy
RkIyRTgwMEQ3MjNGOSAvKiBWZXJpZmllclNsb3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUyQTg3NjAxRjAyMzgxNjAwRUIzMUIy
IC8qIE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJBODc1RjFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJl
c2VydmVkWm9uZVNpemUuaCAqLzsgfTsKKwkJRkUyQ0M5MzAyNzU2QjJCOTAwM0Y1QUI4IC8qIEhl
YXBTdWJzcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTJDQzkyRjI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJE
MzFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDExRTNENzM5NjAwQkFDNDkz
IC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAy
MkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMzNkI1MzI1
REI0OTdEMDA5OEYwMzQgLyogTWFya2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzM2QjUyMjVEQjQ5N0Qw
MDk4RjAzNCAvKiBNYXJraW5nQ29uc3RyYWludEV4ZWN1dG9yUGFpci5oICovOyB9OwpAQCAtMjA0
MCw2ICsyMDQxLDcgQEAKIAkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNERDUzMUVB
OUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
NjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5
NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY1
QjE1MTI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVCMTUwMjc0
ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovOyB9Owog
CQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBE
REQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAx
IC8qIFZNVHJhcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNkY1NkREMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU3NDk3RTYyMDkwMDFCMTAwMDM1
NjVCIC8qIEpTQ1B0clRhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU3NDk3RTUyMDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NDM0LDYgKzU0MzYs
NyBAQAogCQlGRTI4N0QwMTI1MkZCMkU4MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAv
KiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNaW5pbXVtUmVzZXJ2
ZWRab25lU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTJCRDY2RTI1QzBE
QzgyMDA5OTlEM0IgLyogVmVyaWZpZXJTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWZXJpZmllclNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQ0M5MkYyNzU2QjJCOTAwM0Y1QUI4IC8qIEhlYXBTdWJzcGFj
ZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBTdWJzcGFjZVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkU2QTdBMUQ2RUE1RkUwMDYw
Rjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMwMjJE
MDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2ls
bENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lnaWxs
Q3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ5Niw2ICs1
NDk5LDcgQEAKIAkJRkU2NDg3MkQyMTQxRDA0ODAwQUIwRDNFIC8qIE9wY29kZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlSW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uU2Nv
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2NDkxMzgxRDc4RjNBMzAwQTY5
NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV4Y2VwdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU2NUIxNTAyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0lubGluZWRIZWFwQ2VsbFR5
cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjU2REMx
RTY0RTkyMDAwRDE3ODAxIC8qIFZNVHJhcHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVk1UcmFwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NTg2LDYgKzY1OTAsNyBAQAogCQkJCUE1NEMyQUFGMUM2NTQ0RDEwMEExOEQ3OCAvKiBIZWFwU25h
cHNob3QuaCAqLywKIAkJCQlBNTMxMUMzNDFDNzdDRUFDMDBFNkIxQjYgLyogSGVhcFNuYXBzaG90
QnVpbGRlci5jcHAgKi8sCiAJCQkJQTUzMTFDMzUxQzc3Q0VBQzAwRTZCMUI2IC8qIEhlYXBTbmFw
c2hvdEJ1aWxkZXIuaCAqLywKKwkJCQlGRTJDQzkyRjI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1
YnNwYWNlVHlwZXMuaCAqLywKIAkJCQkwRkFERTY3MjFENEQyM0JDMDA3Njg0NTcgLyogSGVhcFV0
aWwuaCAqLywKIAkJCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcCAqLywKIAkJCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmggKi8sCkBAIC02NTk3LDYgKzY2MDIsNyBAQAogCQkJCUUzQzhFRDQxMjNBMURCQzQw
MDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovLAogCQkJCUUzQkYxQkFEMjM4QUFFRDEw
MDNBMUMyQiAvKiBJc29IZWFwQ2VsbFR5cGUuaCAqLywKIAkJCQlFM0M4RUQ0MjIzQTFEQkM1MDAx
MzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUZFNjVCMTUwMjc0ODYw
MUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovLAogCQkJCTBG
RENFMTJDMUZBRkI0REUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5jcHAgKi8sCiAJCQkJMEZEQ0Ux
MkIxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmggKi8sCiAJCQkJMEZEMkZEOTIyMEI1
MkJEQzAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oICovLApAQCAtMTA0MDcsNiArMTA0
MTMsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4
NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU2NUIxNTEyNzQ4NjAxRjAwREI1QjE2IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xl
eGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDkzNCw2ICsxMDk0MSw3IEBA
CiAJCQkJRTMzN0I5NjcyMjQzMjRFQTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUyNkFDNEI3MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0JEMkI3NjIyRjI3NTAyMDAxMTc2NUMgLyogV2FzbUNv
bXBpbGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUyQ0M5MzAyNzU2QjJCOTAwM0Y1
QUI4IC8qIEhlYXBTdWJzcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQxMkIzNDFF
N0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1OTND
ODk4QkU3MTRBNjRCRTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAg
c2l6ZV90IG5ld1NpemUgPSBuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNp
emVvZihKU1ZhbHVlKTsKIAogICAgICAgICAgICAgaWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAg
ICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yKG5ld1NpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9j
YXRvcklmRXhpc3RzKTsKKyAgICAgICAgICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3IobmV3U2l6ZSwgQWxs
b2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAgICAgICAgICAgICAgICAgaml0
LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRv
ciksIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgICAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJ
bmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0LDcgKzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKworbmFtZXNwYWNlIERG
RyB7CiAKIGNsYXNzIEZyZXF1ZW50RXhpdFNpdGUgewogcHVibGljOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNl
OworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAg
ICAgc3RhdGljIEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1Rh
ZywgRXZhbENvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp2aXNpdENoaQogICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAgICAgCiAgICAgaWYgKCF2aXNpdG9yLmlz
TWFya2VkKGNvZGVCbG9jaykpCi0gICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Vz
V2l0aEZpbmFsaXplcnMuYWRkKGVkZ2UpOworICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlc1dpdGhGaW5hbGl6ZXJzKCkuYWRkKGVkZ2UpOwogICAgIAogICAgIGlmIChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKSB7CiAgICAgICAgIC8vIElm
IHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28g
bWFrZSBzdXJlIHRoYXQgaXQKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2U6OnZpc2l0Q2hpCiAgICAgLy8gbm90IHlldCBtYXJrZWQgYmVjYXVzZSBpdCB3
ZWFrbHkgZGVwZW5kcyBvbiBhIHN0cnVjdHVyZSB0aGF0IHdlIGRpZCBub3QgeWV0IG1hcmssIHRo
ZW4gd2UKICAgICAvLyB3aWxsIGtlZXAgZml4cG9pbnRpbmcgdW50aWwgdGhlIGVuZC4KICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwotICAg
IHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENvbnN0cmFpbnRzLmFkZChlZGdlKTsK
KyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpLmFkZChl
ZGdlKTsKICAgICBlZGdlLT5ydW5Db25zdHJhaW50KGxvY2tlciwgdm0sIHZpc2l0b3IpOwogfQog
CkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpmaW5h
bGl6ZQogICAgICAgICBtX2NvZGVCbG9jay5jbGVhcigpOwogICAgIH0KICAgICAKLSAgICB2bS5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzLnJlbW92ZSh0aGlzKTsKLSAg
ICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhp
cyk7CisgICAgdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycygpLnJl
bW92ZSh0aGlzKTsKKyAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJh
aW50cygpLnJlbW92ZSh0aGlzKTsKIH0KIAogaW5saW5lIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6YWN0aXZhdGUoKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgRXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZTo6cnVuQ29uc3QKICAgICBjb2RlQmxvY2stPmRldGVybWluZUxpdmVuZXNz
KGxvY2tlciwgdmlzaXRvcik7CiAKICAgICBpZiAodmlzaXRvci5pc01hcmtlZChjb2RlQmxvY2sp
KQotICAgICAgICB2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5y
ZW1vdmUodGhpcyk7CisgICAgICAgIHZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aENv
bnN0cmFpbnRzKCkucmVtb3ZlKHRoaXMpOwogfQogCiB0ZW1wbGF0ZSB2b2lkIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Vk0mLCBBYnN0cmFjdFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAg
IHJldHVybiAmdm0uZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSgpOwogICAgIH0KIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Z1
bmN0aW9uQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0Z1bmN0aW9uQ29kZUJsb2NrLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAg
ICAgewotICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIEZ1
bmN0aW9uQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIEZ1bmN0
aW9uQ29kZUJsb2NrJiBvdGhlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxvY2suaAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFj
ZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZSgpLnNwYWNlOwogICAg
IH0KIAogICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVyKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2dyYW1Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZ3JhbUNvZGVCbG9jay5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJv
Z3JhbUNvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNv
ZGVCbG9ja1NwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlKCku
c3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWxsTGlu
a0luZm87CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBHZXRCeUtpbmQg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogVW5saW5rZWRGdW5jdAogICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29u
c3RydWN0LnNldCh2bSwgdGhpcywgcmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmFkZCh0aGlzKTsKKyAgICB2
bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc2V0LmFkZCh0aGlzKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6ZmluYWxpegogICAgICAgICBjbGVhcklmRGVhZChtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ2FsbCk7CiAgICAgICAgIGNsZWFySWZEZWFkKG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOwogICAgICAgICBpZiAoaXNDbGVhcmVkICYmICFpc1N0aWxsVmFsaWQpCi0g
ICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5yZW1vdmUo
dGhpcyk7CisgICAgICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCku
c2V0LnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDE0
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7
CiBjbGFzcyBEZWNvZGVyOwotY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIFBhcnNl
ckVycm9yOworY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwog
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKLWNsYXNzIENhY2hlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKIAogZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CiAgICAgVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwKQEAgLTY3LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0udW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTcGFjZS5zcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkuc3BhY2U7CiAgICAgfQogCiAgICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1
bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBK
U1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFREWkVudmlyb25tZW50TGluaz4g
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9u
bWVudD4gcGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50IHByaXZhdGVCcmFuZFJlcXVp
cmVtZW50LCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID0gZmFsc2UpCkBA
IC0xMzEsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV91bmxpbmtlZENvZGVC
bG9ja0ZvckNhbGwuY2xlYXIoKTsKICAgICAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0
cnVjdC5jbGVhcigpOwotICAgICAgICB2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNl
LnNldC5yZW1vdmUodGhpcyk7CisgICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2UoKS5zZXQucmVtb3ZlKHRoaXMpOwogICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUGFyc2Uo
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBMZXhpY2FsU2NvcGVGZWF0dXJlcyBsZXhpY2FsU2NvcGVG
ZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRB
bGxvY2F0ZVJhd09iamUKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgaWYgKHNpemUp
IHsKLSAgICAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRv
ciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmly
dHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpIHsKICAgICAg
ICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZShzdG9yYWdlR1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0
YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoCkBAIC0xMDczOCw3ICsxMDczOCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBz
aXplX3Qgc2l6ZSA9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsK
IAotICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlLmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxs
b2NhdG9ySWZFeGlzdHMpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICBpZiAoIWFsbG9jYXRvciB8
fCBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigp
KSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTA3ODIsNyArMTA3ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UmVhbGxvY2F0ZVByCiAgICAgc2l6ZV90IG5ld1NpemUgPSBvbGRTaXplICogb3V0T2ZMaW5lR3Jv
d3RoRmFjdG9yOwogICAgIEFTU0VSVChuZXdTaXplID09IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4
dC0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSk7CiAgICAgCi0gICAgQWxs
b2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxs
b2NhdG9yRm9yTm9uVmlydHVhbChuZXdTaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJ
ZkV4aXN0cyk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKG5ld1NpemUsIEFsbG9jYXRv
ckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgIGlmICghYWxsb2NhdG9yIHx8IG5v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CkBAIC0xMTQ5OSw3ICsxMTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXROZXdUeXBl
ZEFycmF5V2kKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKH43KSwgc2NyYXRjaEdQ
Uik7CiAgICAgfQogICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWQoCi0gICAgICAg
IHN0b3JhZ2VHUFIsIHZtKCkucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRj
aEdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgc3RvcmFnZUdQUiwgdm0oKS5wcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgIHNj
cmF0Y2hHUFIyLCBzbG93Q2FzZXMpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNpemVHUFIpOwpA
QCAtMTM3MDAsNyArMTM3MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVC
dXR0ZXJmCiAgICAgZGlkTm90T3ZlcmZsb3cubGluaygmbV9qaXQpOwogI2VuZGlmCiAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZCgKLSAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwg
dm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgc2NyYXRjaDIsIHNjcmF0Y2gxLCBz
Y3JhdGNoMywgc2xvd0Nhc2VzKTsKKyAgICAgICAgc3RvcmFnZVJlc3VsdEdQUiwgdm0oKS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLCBzY3JhdGNoMiwgc2NyYXRjaDEsIHNjcmF0Y2gz
LCBzbG93Q2FzZXMpOwogICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4
aW5nSGVhZGVyKSksIHN0b3JhZ2VSZXN1bHRHUFIpOwogCiAgICAgbV9qaXQuc3RvcmUzMihzaXpl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVzdWx0R1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODMwMSw3ICs4MzAxLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKH5zdGF0aWNfY2FzdDxpbnRwdHJfdD4oNykpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSwgYnl0ZVNpemUsIHNsb3dDYXNlKTsKKyAg
ICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUodm0oKS5wcmltaXRpdmVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCksIGJ5dGVTaXplLCBzbG93Q2FzZSk7CiAgICAgICAgIExW
YWx1ZSBzdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dDYXNlKTsKIAog
ICAgICAgICBzcGxhdFdvcmRzKApAQCAtMTM5MjIsNyArMTM5MjIsNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm9CdXR0ZXJmbHkg
PSBtX291dC5hbmNob3IobV9vdXQuaW50UHRyWmVybyk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVIZWFwQ2VsbCgKLSAg
ICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yRm9yU2l6ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCisgICAgICAgICAgICAgICAg
ICAgIGFsbG9jYXRvckZvclNpemUodm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LCBidXR0ZXJmbHlTaXplLCBzbG93UGF0aCksCiAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
KTsKIAogICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QnV0dGVyZmx5VmFsdWUgPSBtX291dC5h
ZGQoCkBAIC0xNTAxNyw3ICsxNTAxNyw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUo
c2xvd1BhdGgpOwogCiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IHNpemVJblZhbHVlcyAq
IHNpemVvZihKU1ZhbHVlKTsKLSAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplSW5C
eXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICBBbGxv
Y2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZUluQnl0ZXMsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9j
YXRvcklmRXhpc3RzKTsKICAgICAgICAgTFZhbHVlIHN0YXJ0T2ZTdG9yYWdlID0gYWxsb2NhdGVI
ZWFwQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5sb2NhbEFs
bG9jYXRvcigpKSwgc2xvd1BhdGgpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnV0dGVy
Zmx5ID0gbV9vdXQuYW5jaG9yKApAQCAtMTcwMzksNyArMTcwMzksNyBAQCBJR05PUkVfQ0xBTkdf
V0FSTklOR1NfRU5ECiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlTaXplID0gbV9vdXQuYWRkKAog
ICAgICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGlu
Z0hlYWRlcikpKTsKIAotICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSh2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLCBidXR0ZXJmbHlTaXplLCBmYWls
Q2FzZSk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKHZtKCku
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSwgYnV0dGVyZmx5U2l6ZSwgZmFpbENhc2Up
OwogICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhlYXBDZWxsKGFsbG9j
YXRvciwgZmFpbENhc2UpOwogCiAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5hZGQo
c3RhcnRPZlN0b3JhZ2UsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGluZ0hlYWRlcikp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NDcsNiArMTQ3LDggQEAgbW9kdWxlIERTTAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQmFz
aWNCbG9ja0xvY2F0aW9uOworCiB2b2lkIGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlckJhc2Uq
IGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
IAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNv
bnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJh
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25zdCBG
dW5jdG9yJik7Ci0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVy
YXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMTggKzYwLDYgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUoY29uc3QgQWJz
dHJhYwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBDb2RlQmxvY2tTZXQ6
Oml0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mIHZtLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewot
ICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKLSAgICAgICAgWyZdIChhdXRvJiBzcGFjZUFu
ZFNldCkgewotICAgICAgICAgICAgc3BhY2VBbmRTZXQuc3BhY2UuZm9yRWFjaExpdmVDZWxsKAot
ICAgICAgICAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZ1bmN0b3IoanNDYXN0PENvZGVCbG9jayo+KHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2tTZXQ6Oml0ZXJhdGVD
dXJyZW50bHlFeGVjdXRpbmcoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVS
b290cy5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCkBA
IC00MCwxMCArNDEsMTIgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJIZWFwUHJvZmlsZXIuaCIKICNpbmNsdWRlICJIZWFwU25hcHNob3QuaCIKKyNpbmNsdWRl
ICJIZWFwU3Vic3BhY2VUeXBlcy5oIgogI2luY2x1ZGUgIkhlYXBWZXJpZmllci5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKKyNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxU
eXBlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCiAjaW5jbHVkZSAi
SklUV29ya2xpc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5o
IgpAQCAtMjg2LDYgKzI4OSwxMTQgQEAgSGVhcDo6SGVhcChWTSYgdm0sIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3Ro
cmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1
dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCisKKyAgICAvLyBIZWFwQ2VsbFR5cGVz
CisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVh
cENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpCisgICAgLCBjZWxsSGVhcENlbGxUeXBl
KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwp
KQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShDZWxsQXR0cmlidXRlcyhOZWVk
c0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkKKyAgICAsIGFwaUdsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNBUElHbG9iYWxPYmplY3Q+KCkpCisg
ICAgLCBjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJn
czxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCisgICAgLCBjYWxsYmFja0dsb2JhbE9iamVjdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD4+KCkpCisgICAgLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pj4oKSkKKyAgICAs
IGN1c3RvbUdldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxK
U0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQorICAgICwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KCkp
CisgICAgLCBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPERh
dGVJbnN0YW5jZT4oKSkKKyAgICAsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEVycm9ySW5zdGFuY2U+KCkpCisgICAgLCBmaW5hbGl6YXRpb25SZWdpc3Ry
eUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Pigp
KQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6QXJnczxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4oKSkKKyAgICAsIGdsb2JhbE9i
amVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNHbG9iYWxPYmplY3Q+KCkp
CisgICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OkFyZ3M8SW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdD4oKSkKKyAgICAsIGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEluc3BlY3Rv
cjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lPigpKQorICAgICwganNNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTTW9kdWxlUmVjb3JkPigpKQorICAgICwgbW9k
dWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdD4oKSkKKyAgICAsIG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU05hdGl2ZVN0ZEZ1bmN0aW9uPigpKQorICAgICwg
d2Vha01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrTWFwPigpKQor
ICAgICwgd2Vha1NldEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWFrU2V0
PigpKQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisgICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4+KCkpCisgICAgLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+KCkpCisjZW5kaWYKKyNp
ZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorICAgICwgYXBpV3JhcHBlck9iamVjdEhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+PigpKQorICAgICwgY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdD4+KCkpCisgICAgLCBqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxKU0NDYWxsYmFja0Z1bmN0aW9uPigpKQorI2VuZGlmCisgICAg
LCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxDb2xs
YXRvcj4oKSkKKyAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OkFyZ3M8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bERpc3BsYXlOYW1l
c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bERpc3BsYXlOYW1lcz4oKSkK
KyAgICAsIGludGxMaXN0Rm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJ
bnRsTGlzdEZvcm1hdD4oKSkKKyAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpBcmdzPEludGxMb2NhbGU+KCkpCisgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsTnVtYmVyRm9ybWF0PigpKQorICAgICwg
aW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUGx1
cmFsUnVsZXM+KCkpCisgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6QXJnczxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQorICAgICwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SW50bFNl
Z21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRsU2VnbWVudHNIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEludGxTZWdtZW50cz4oKSkKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKKyAgICAsIHdl
YkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dl
YkFzc2VtYmx5R2xvYmFsPigpKQorICAgICwgd2ViQXNzZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpKQorICAgICwg
d2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2Vi
QXNzZW1ibHlNZW1vcnk+KCkpCisgICAgLCB3ZWJBc3NlbWJseU1vZHVsZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXZWJBc3NlbWJseU1vZHVsZT4oKSkKKyAgICAsIHdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxXZWJB
c3NlbWJseU1vZHVsZVJlY29yZD4oKSkKKyAgICAsIHdlYkFzc2VtYmx5VGFibGVIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpBcmdzPEpTV2ViQXNzZW1ibHlUYWJsZT4oKSkKKyAgICAsIHdl
YkFzc2VtYmx5VGFnSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1dlYkFzc2Vt
Ymx5VGFnPigpKQorI2VuZGlmCisKKyAgICAvLyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9ycworICAg
ICwgZmFzdE1hbGxvY0FsbG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPigpKQorICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1
ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQor
ICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCisKKyAgICAvLyBTdWJzcGFjZXMK
KyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1pdGl2ZSBHaWdhY2Fn
ZSBBdXhpbGlhcnkiLCAqdGhpcywgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBwcmltaXRpdmVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCAqdGhpcywg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHgyNDFlOTQ2CisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbmRl
eGluZ0hlYWRlciIsICp0aGlzLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUsIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCisgICAgLCBjZWxs
U3BhY2UoIkpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0TWFsbG9jQWxsb2Nh
dG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKKyAgICAsIHZhcmlhYmxlU2l6ZWRDZWxsU3Bh
Y2UoIlZhcmlhYmxlIFNpemVkIEpTQ2VsbCIsICp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBmYXN0
TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmNkNzY5Y2MKKyAgICAsIGRlc3RydWN0
aWJsZU9iamVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsICp0aGlzLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHg0ZjVlZDdhOQorICAgICwgYXJyYXlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2Vs
bEhlYXBDZWxsVHlwZSwgSlNBcnJheSkKKyAgICAsIGJpZ0ludFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0JpZ0ludCkKKyAgICAsIGNhbGxlZVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxlZSkKKyAg
ICAsIGNsb25lZEFyZ3VtZW50c1NwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBDbG9uZWRBcmd1bWVudHMpCisgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgQ3VzdG9tR2V0dGVy
U2V0dGVyKQorICAgICwgZGF0ZUluc3RhbmNlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMs
IGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRGF0ZUluc3RhbmNlKQorICAgICwgZG9tQXR0cmli
dXRlR2V0dGVyU2V0dGVyU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2Vs
bFR5cGUsIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcikKKyAgICAsIGV4Y2VwdGlvblNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBFeGNl
cHRpb24pCisgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Up
IC8vIEhhc2g6MHg3YjczMGIyMAorICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZjYTcy
CisgICAgLCBnZXR0ZXJTZXR0ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgY2VsbEhl
YXBDZWxsVHlwZSwgR2V0dGVyU2V0dGVyKQorICAgICwgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhl
YXBDZWxsVHlwZSwgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpCisgICAgLCBpbnRlcm5hbEZ1
bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFwQ2VsbFR5cGUsIElu
dGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAorICAgICwganNQcm94eVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU1Byb3h5KQorICAgICwg
bmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLCBOYXRpdmVFeGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUK
KyAgICAsIG51bWJlck9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBOdW1iZXJPYmplY3QpCisgICAgLCBwbGFpbk9iamVjdFNwYWNlIElTT19TVUJT
UEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBKU05vbkZpbmFsT2JqZWN0KSAvLyBN
YWlubHkgdXNlZCBmb3IgcHJvdG90eXBlcy4KKyAgICAsIHByb21pc2VTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCgqdGhpcywgY2VsbEhlYXBDZWxsVHlwZSwgSlNQcm9taXNlKQorICAgICwgcHJvcGVy
dHlOYW1lRW51bWVyYXRvclNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENl
bGxUeXBlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IpCisgICAgLCBwcm9wZXJ0eVRhYmxlU3Bh
Y2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgorICAgICwgcmVnRXhwU3BhY2UgSVNP
X1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFJlZ0V4
cCkKKyAgICAsIHJlZ0V4cE9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxs
SGVhcENlbGxUeXBlLCBSZWdFeHBPYmplY3QpCisgICAgLCByb3BlU3RyaW5nU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoKnRoaXMsIHN0cmluZ0hlYXBDZWxsVHlwZSwgSlNSb3BlU3RyaW5nKQorICAg
ICwgc2NvcGVkQXJndW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGNlbGxIZWFw
Q2VsbFR5cGUsIFNjb3BlZEFyZ3VtZW50cykKKyAgICAsIHNwYXJzZUFycmF5VmFsdWVNYXBTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwg
U3BhcnNlQXJyYXlWYWx1ZU1hcCkKKyAgICAsIHN0cmluZ1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KCp0aGlzLCBzdHJpbmdIZWFwQ2VsbFR5cGUsIEpTU3RyaW5nKSAvLyBIYXNoOjB4OTBjZjc1OGYK
KyAgICAsIHN0cmluZ09iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVh
cENlbGxUeXBlLCBTdHJpbmdPYmplY3QpCisgICAgLCBzdHJ1Y3R1cmVDaGFpblNwYWNlIElTT19T
VUJTUEFDRV9JTklUKCp0aGlzLCBjZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmVDaGFpbikKKyAg
ICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZVJhcmVEYXRhKSAvLyBIYXNoOjB4YWNh
NGU2MmQKKyAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQor
ICAgICwgYnJhbmRlZFN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBCcmFuZGVkU3RydWN0dXJlKQorICAgICwgc3ltYm9s
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAorICAgICwgZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZVNwYWNlKQorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyhl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCisgICAgLCBjb2RlQmxvY2tTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVCgqdGhpcywgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgQ29kZUJs
b2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5j
dGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCisgICAgLCBwcm9ncmFtRXhlY3V0YWJs
ZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLCBQcm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3CisgICAgLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFz
aDoweGY2YjgyOGQ5CisKIHsKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKQEAgLTU3OSwz
MSArNjkwLDMxIEBAIHZvaWQgSGVhcDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemUKIHsK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5m
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwotICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25h
bEZpbmFsaXplcnM8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5mdW5jdGlvbkV4ZWN1dGFibGVTcGFj
ZS5zcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTeW1i
b2xUYWJsZT4odm0uc3ltYm9sVGFibGVTcGFjZSk7Ci0gICAgZmluYWxpemVNYXJrZWRVbmNvbmRp
dGlvbmFsRmluYWxpemVyczxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPih2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKTsgLy8gV2UgcnVuIHRoaXMgYmVmb3JlIENv
ZGVCbG9jaydzIHVuY29uZGl0aW9uYWwgZmluYWxpemVyIHNpbmNlIENvZGVCbG9jayBsb29rcyBh
dCB0aGUgb3duZXIgZXhlY3V0YWJsZSdzIGluc3RhbGxlZCBDb2RlQmxvY2sgaW4gaXRzIGZpbmFs
aXplVW5jb25kaXRpb25hbGx5LgotICAgIHZtLmZvckVhY2hDb2RlQmxvY2tTcGFjZSgKKyAgICBm
aW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPEZ1bmN0aW9uRXhlY3V0YWJsZT4o
ZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2UpOworICAgIGZpbmFsaXplTWFya2VkVW5jb25k
aXRpb25hbEZpbmFsaXplcnM8U3ltYm9sVGFibGU+KHN5bWJvbFRhYmxlU3BhY2UpOworICAgIGZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4oZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmluYWxpemVycyk7IC8vIFdlIHJ1
biB0aGlzIGJlZm9yZSBDb2RlQmxvY2sncyB1bmNvbmRpdGlvbmFsIGZpbmFsaXplciBzaW5jZSBD
b2RlQmxvY2sgbG9va3MgYXQgdGhlIG93bmVyIGV4ZWN1dGFibGUncyBpbnN0YWxsZWQgQ29kZUJs
b2NrIGluIGl0cyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KKyAgICBmb3JFYWNoQ29kZUJsb2Nr
U3BhY2UoCiAgICAgICAgIFsmXSAoYXV0byYgc3BhY2UpIHsKICAgICAgICAgICAgIHRoaXMtPmZp
bmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8Q29kZUJsb2NrPihzcGFjZS5zZXQp
OwogICAgICAgICB9KTsKLSAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PFN0cnVjdHVyZVJhcmVEYXRhPih2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlKTsKLSAgICBmaW5h
bGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPih2bS51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldCk7Ci0gICAgaWYgKHZt
Lm1fd2Vha1NldFNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXJzPEpTV2Vha1NldD4oKnZtLm1fd2Vha1NldFNwYWNlKTsKLSAgICBpZiAodm0ubV93ZWFr
TWFwU3BhY2UpCi0gICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8
SlNXZWFrTWFwPigqdm0ubV93ZWFrTWFwU3BhY2UpOwotICAgIGlmICh2bS5tX3dlYWtPYmplY3RS
ZWZTcGFjZSkKLSAgICAgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxK
U1dlYWtPYmplY3RSZWY+KCp2bS5tX3dlYWtPYmplY3RSZWZTcGFjZSk7Ci0gICAgaWYgKHZtLm1f
ZXJyb3JJbnN0YW5jZVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzPEVycm9ySW5zdGFuY2U+KCp2bS5tX2Vycm9ySW5zdGFuY2VTcGFjZSk7CisgICAg
ZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxTdHJ1Y3R1cmVSYXJlRGF0YT4o
c3RydWN0dXJlUmFyZURhdGFTcGFjZSk7CisgICAgZmluYWxpemVNYXJrZWRVbmNvbmRpdGlvbmFs
RmluYWxpemVyczxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTcGFjZS5zZXQpOworICAgIGlmIChtX3dlYWtTZXRTcGFjZSkKKyAgICAgICAgZmlu
YWxpemVNYXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYWtTZXQ+KCptX3dlYWtTZXRT
cGFjZSk7CisgICAgaWYgKG1fd2Vha01hcFNwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXJzPEpTV2Vha01hcD4oKm1fd2Vha01hcFNwYWNlKTsKKyAgICBp
ZiAobV93ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgICAgIGZpbmFsaXplTWFya2VkVW5jb25kaXRp
b25hbEZpbmFsaXplcnM8SlNXZWFrT2JqZWN0UmVmPigqbV93ZWFrT2JqZWN0UmVmU3BhY2UpOwor
ICAgIGlmIChtX2Vycm9ySW5zdGFuY2VTcGFjZSkKKyAgICAgICAgZmluYWxpemVNYXJrZWRVbmNv
bmRpdGlvbmFsRmluYWxpemVyczxFcnJvckluc3RhbmNlPigqbV9lcnJvckluc3RhbmNlU3BhY2Up
OwogCiAgICAgLy8gRmluYWxpemF0aW9uUmVnaXN0cmllcyBjdXJyZW50bHkgcmVseSBvbiBzZXJp
YWwgZmluYWxpemF0aW9uIGJlY2F1c2UgdGhleSBjYW4gcG9zdCB0YXNrcyB0byB0aGUgZGVmZXJy
ZWRXb3JrVGltZXIsIHdoaWNoIG5vcm1hbGx5IGV4cGVjdHMgdGFza3MgdG8gb25seSBiZSBwb3N0
ZWQgYnkgdGhlIEFQSSBsb2NrIGhvbGRlci4KLSAgICBpZiAodm0ubV9maW5hbGl6YXRpb25SZWdp
c3RyeVNwYWNlKQotICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTRmluYWxpemF0aW9uUmVnaXN0cnk+KCp2bS5tX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2Up
OworICAgIGlmIChtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgICAgIGZpbmFsaXpl
TWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnM8SlNGaW5hbGl6YXRpb25SZWdpc3RyeT4oKm1f
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0g
ICAgaWYgKHZtLm1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKLSAgICAgICAgZmluYWxpemVN
YXJrZWRVbmNvbmRpdGlvbmFsRmluYWxpemVyczxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrPigqdm0u
bV93ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKQorICAgICAgICBmaW5hbGl6ZU1hcmtlZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJz
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCptX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpOwog
I2VuZGlmCiB9CiAKQEAgLTkwNSw3ICsxMDE2LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2Rl
QmxvY2tzKERlbGV0ZUFsbAogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgdm0u
Zm9yRWFjaFNjcmlwdEV4ZWN1dGFibGVTcGFjZSgKKyAgICBmb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKAogICAgICAgICBbJl0gKGF1dG8mIHNwYWNlQW5kU2V0KSB7CiAgICAgICAgICAgICBI
ZWFwSXRlcmF0aW9uU2NvcGUgaGVhcEl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICAgICAgICAg
IGF1dG8mIHNldCA9IHNwYWNlQW5kU2V0LnNldDsKQEAgLTkyNCw4ICsxMDM1LDggQEAgdm9pZCBI
ZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKERlbGV0ZUFsbAogICAgICAgICAvLyBwb2ludHMgaW50
byBhIENvZGVCbG9jayB0aGF0IGNvdWxkIGJlIGRlYWQuIFRoZSBJQyB3aWxsIHN0aWxsIHN1Y2Nl
ZWQgYmVjYXVzZQogICAgICAgICAvLyBpdCB1c2VzIGEgY2FsbGVlIGNoZWNrLCBidXQgdGhlbiBp
dCB3aWxsIGNhbGwgaW50byBkZWFkIGNvZGUuCiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAgICAgICBpZiAodm0ubV93ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKSB7Ci0gICAgICAgICAgICB2bS5tX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UtPmZvckVhY2hMaXZlQ2VsbChbJl0gKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBr
aW5kKSB7CisgICAgICAgIGlmIChtX3dlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpIHsKKyAgICAg
ICAgICAgIG1fd2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZS0+Zm9yRWFjaExpdmVDZWxsKFsmXSAo
SGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGtpbmQsIGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCk7CiAgICAgICAgICAg
ICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8SlNX
ZWJBc3NlbWJseUNvZGVCbG9jayo+KGNlbGwpOwogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+
Y2xlYXJKU0NhbGxJQ3Modm0pOwpAQCAtOTQ2LDcgKzEwNTcsNyBAQCB2b2lkIEhlYXA6OmRlbGV0
ZUFsbFVubGlua2VkQ29kZUJsb2NrcyhECiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlv
blNjb3BlKTsKIAogICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwotICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc2V0LmZvckVhY2hM
aXZlQ2VsbCgKKyAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlLnNldC5mb3JFYWNo
TGl2ZUNlbGwoCiAgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSB7
CiAgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5jbGVhckNvZGUodm0pOwpAQCAtOTU1LDEwICsxMDY2LDEwIEBAIHZvaWQg
SGVhcDo6ZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxvY2tzKEQKIAogdm9pZCBIZWFwOjpkZWxldGVV
bm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7Ci0gICAgdm0oKS5mb3JFYWNoU2NyaXB0RXhlY3V0YWJs
ZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9KTsKKyAgICBm
b3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFj
ZS5zd2VlcCgpOyB9KTsKICAgICAvLyBTd2VlcGluZyBtdXN0IG9jY3VyIGJlZm9yZSBkZWxldGlu
ZyBzdHVicywgb3RoZXJ3aXNlIHRoZSBzdHVicyBtaWdodCBzdGlsbCB0aGluayB0aGV5J3JlIGFs
aXZlIGFzIHRoZXkgZ2V0IGRlbGV0ZWQuCiAgICAgLy8gQW5kIENvZGVCbG9jayBkZXN0cnVjdG9y
IGlzIGFzc3VtaW5nIHRoYXQgQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkIGJlZm9yZSBVbmxpbmtl
ZENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4KLSAgICB2bSgpLmZvckVhY2hDb2RlQmxvY2tTcGFj
ZShbXSAoYXV0byYgc3BhY2UpIHsgc3BhY2Uuc3BhY2Uuc3dlZXAoKTsgfSk7CisgICAgZm9yRWFj
aENvZGVCbG9ja1NwYWNlKFtdIChhdXRvJiBzcGFjZSkgeyBzcGFjZS5zcGFjZS5zd2VlcCgpOyB9
KTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJv
dXRpbmVzKCk7CiB9CiAKQEAgLTIxMDMsOCArMjIxNCw4IEBAIHZvaWQgSGVhcDo6c3dlZXBJbkZp
bmFsaXplKCkKICAgICBtX29iamVjdFNwYWNlLnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCk7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIFdlIGhvbGQgb250byBhIGxvdCBvZiBtZW1v
cnksIHNvIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIHRvIGJlIHN3ZXB0IGVhZ2VybHkuCi0gICAg
aWYgKHZtKCkubV93ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQotICAgICAgICB2bSgpLm1fd2ViQXNz
ZW1ibHlNZW1vcnlTcGFjZS0+c3dlZXAoKTsKKyAgICBpZiAobV93ZWJBc3NlbWJseU1lbW9yeVNw
YWNlKQorICAgICAgICBtX3dlYkFzc2VtYmx5TWVtb3J5U3BhY2UtPnN3ZWVwKCk7CiAjZW5kaWYK
IH0KIApAQCAtMjgwNSw3ICsyOTE2LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMo
KQogICAgICAgICAiTyIsICJPdXRwdXQiLAogICAgICAgICBNQUtFX01BUktJTkdfQ09OU1RSQUlO
VF9FWEVDVVRPUl9QQUlSKChbXSAoYXV0byYgdmlzaXRvcikgewogICAgICAgICAgICAgdXNpbmcg
VmlzaXRvciA9IGRlY2x0eXBlKHZpc2l0b3IpOwotICAgICAgICAgICAgVk0mIHZtID0gdmlzaXRv
ci52bSgpOworICAgICAgICAgICAgSGVhcCogaGVhcCA9IHZpc2l0b3IuaGVhcCgpOwogCiAgICAg
ICAgICAgICAvLyBUaGUgYHZpc2l0b3IyYCBhcmd1bWVudCBpcyBzdHJhbmdlbHkgbmFtZWQgYmVj
YXVzZSB0aGUgV2luQ2Fpcm8gcG9ydAogICAgICAgICAgICAgLy8gZ2V0cyBjb25mdXNlZCAgYW5k
IHRoaW5rcyB3ZSdyZSB0cnlpbmcgdG8gY2FwdHVyZSB0aGUgb3V0ZXIgdmlzaXRvcgpAQCAtMjgy
NCwxMSArMjkzNSwxMSBAQCB2b2lkIEhlYXA6OmFkZENvcmVDb25zdHJhaW50cygpCiAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBTZXRSb290TWFya1JlYXNvblNjb3BlIHJvb3RTY29w
ZSh2aXNpdG9yLCBSb290TWFya1JlYXNvbjo6RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXMpOwot
ICAgICAgICAgICAgICAgIGFkZCh2bS5leGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cyk7CisgICAgICAgICAgICAgICAgYWRkKGhlYXAtPmV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2VzV2l0aENvbnN0cmFpbnRzKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2
bS5tX3dlYWtNYXBTcGFjZSkgeworICAgICAgICAgICAgaWYgKGhlYXAtPm1fd2Vha01hcFNwYWNl
KSB7CiAgICAgICAgICAgICAgICAgU2V0Um9vdE1hcmtSZWFzb25TY29wZSByb290U2NvcGUodmlz
aXRvciwgUm9vdE1hcmtSZWFzb246OldlYWtNYXBTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYWRk
KCp2bS5tX3dlYWtNYXBTcGFjZSk7CisgICAgICAgICAgICAgICAgYWRkKCpoZWFwLT5tX3dlYWtN
YXBTcGFjZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pKSwKICAgICAgICAgQ29uc3RyYWlu
dFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZywKQEAgLTMwNjIsNCArMzE3MywxMzUgQEAgdm9p
ZCBIZWFwOjp2ZXJpZnlHQygpCiAgICAgbV92ZXJpZmllclNsb3RWaXNpdG9yID0gbnVsbHB0cjsK
IH0KIAorI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFt
ZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCisgICAgSXNvU3Vic3BhY2UqIEhlYXA6Om5hbWUjI1Ns
b3coKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCisgICAgICAgIGF1
dG8gc3BhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCgqdGhp
cywgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCisgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKKyAgICAgICAgcmV0dXJu
IG1fIyNuYW1lLmdldCgpOyBcCisgICAgfQorCisKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgYXBpR2xvYmFsT2JqZWN0SGVhcENl
bGxUeXBlLCBKU0FQSUdsb2JhbE9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhhcGlWYWx1ZVdyYXBwZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBUElW
YWx1ZVdyYXBwZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXJy
YXlCdWZmZXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1ZmZlcikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJhdG9yU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIEpTQXJyYXlJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhhc3luY0dlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Fz
eW5jR2VuZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJp
Z0ludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNCaWdJbnQ2NEFycmF5KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ0ludE9iamVjdFNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBCaWdJbnRPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYmlnVWludDY0QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNC
aWdVaW50NjRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhi
b29sZWFuT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEJvb2xlYW5PYmplY3QpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYm91bmRGdW5jdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLCBKU0JvdW5kRnVuY3Rpb24pIC8vIEhhc2g6MHhkNzkxNmQ0MQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQ29uc3RydWN0b3JT
cGFjZSwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja0NvbnN0cnVj
dG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xv
YmFsT2JqZWN0U3BhY2UsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2Fs
bGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RTcGFjZSwgY2FsbGJhY2tPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4pCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwg
Y3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVu
Y3Rpb25TcGFjZSwgY3VzdG9tU2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUsIEpTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0
YVZpZXdTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNEYXRhVmlldykKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUsIERlYnVnZ2VyU2NvcGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCBlcnJvckluc3RhbmNlSGVhcENlbGxUeXBlLCBFcnJv
ckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0YQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGZsb2F0MzJBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU0Zsb2F0
MzJBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDY0
QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNGbG9hdDY0QXJyYXkpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBGdW5jdGlvblJhcmVEYXRhKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdlbmVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU0dlbmVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhnbG9iYWxPYmplY3RTcGFjZSwgZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9i
amVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNj
cmlwdEhvc3RTcGFjZSwgaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VIZWFwQ2VsbFR5cGUsIEluc3Bl
Y3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50OEFycmF5
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDE2QXJyYXlTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludDMyQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNJ
bnQzMkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGphdmFT
Y3JpcHRDYWxsRnJhbWVTcGFjZSwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZSwgSW5z
cGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coanNNb2R1bGVSZWNvcmRTcGFjZSwganNNb2R1bGVSZWNvcmRIZWFwQ2Vs
bFR5cGUsIEpTTW9kdWxlUmVjb3JkKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKG1hcEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcDo6QnVja2V0VHlw
ZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtYXBJdGVyYXRvclNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VP
YmplY3RTcGFjZSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlLCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhu
YXRpdmVTdGRGdW5jdGlvblNwYWNlLCBuYXRpdmVTdGRGdW5jdGlvbkhlYXBDZWxsVHlwZSwgSlNO
YXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcwZWQ2MWU0CitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwg
UHJveHlPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJv
eHlSZXZva2VTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlSZXZva2UpIC8vIEhhc2g6MHhi
NTA2YTkzOQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNjb3BlZEFy
Z3VtZW50c1RhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFNjb3BlZEFy
Z3VtZW50c1RhYmxlKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNj
cmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBK
U1NjcmlwdEZldGNoUGFyYW1ldGVycykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhzY3JpcHRGZXRjaGVyU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTU2NyaXB0RmV0Y2hlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzZXRCdWNrZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQ6OkJ1Y2tldFR5cGUpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0SXRlcmF0b3JTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTZXQpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2hhZG93UmVhbG1TcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZSwgU2hhZG93UmVhbG1PYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNTdHJp
bmdJdGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzb3Vy
Y2VDb2RlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEpTU291cmNlQ29kZSkK
K0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQorRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBT
eW1ib2xPYmplY3QpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVt
cG9yYWxDYWxlbmRhcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24p
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRl
bXBvcmFsVGltZVpvbmUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LCBKU1VpbnQxNkFycmF5KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHVpbnQzMkFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDMyQXJyYXkpCitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codW5saW5rZWRFdmFsQ29kZUJsb2Nr
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2VkRXZhbENvZGVCbG9j
aykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2spCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFj
ZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwg
d2Vha01hcEhlYXBDZWxsVHlwZSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIHdlYWtTZXRI
ZWFwQ2VsbFR5cGUsIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLCBKU1dpdGhTY29wZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhmaW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBl
LCBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNl
LCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cob2Jq
Q0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUs
IE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBmNjEwYjgKKyNlbmRpZgorI2lmZGVm
IEpTQ19HTElCX0FQSV9FTkFCTEVECitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coYXBpV3JhcHBlck9iamVjdFNwYWNlLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBl
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNjQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBqc2NDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0NDYWxsYmFja0Z1bmN0aW9uKQorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9i
amVjdFNwYWNlLCBjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0PikKKyNlbmRpZgorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRs
Q29sbGF0b3JIZWFwQ2VsbFR5cGUsIEludGxDb2xsYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERpc3BsYXlOYW1lc1NwYWNlLCBpbnRsRGlzcGxh
eU5hbWVzSGVhcENlbGxUeXBlLCBJbnRsRGlzcGxheU5hbWVzKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMaXN0Rm9ybWF0U3BhY2UsIGludGxMaXN0Rm9ybWF0
SGVhcENlbGxUeXBlLCBJbnRsTGlzdEZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIElu
dGxMb2NhbGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51
bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsTnVtYmVy
Rm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVy
YWxSdWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUsIEludGxQbHVyYWxSdWxl
cykKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZSwg
SW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMp
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgSlNUb1dh
c21JQ0NhbGxlZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJB
c3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZSwg
SlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCitEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlFeGNlcHRpb25TcGFjZSwgd2Vi
QXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlv
blNwYWNlLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLCBXZWJBc3NlbWJseUZ1bmN0
aW9uKSAvLyBIYXNoOjB4OGI3YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseUdsb2JhbFNwYWNlLCB3ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxs
VHlwZSwgSlNXZWJBc3NlbWJseUdsb2JhbCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UsIHdlYkFzc2VtYmx5SW5zdGFuY2VI
ZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCB3ZWJBc3NlbWJseU1l
bW9yeUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1lbW9yeSkKK0RZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVNwYWNlLCB3ZWJBc3NlbWJs
eU1vZHVsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseU1vZHVsZSkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseU1vZHVsZVJlY29yZFNwYWNlLCB3
ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlU
YWJsZVNwYWNlLCB3ZWJBc3NlbWJseVRhYmxlSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5VGFi
bGUpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlU
YWdTcGFjZSwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlUYWcpCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24pIC8vIEhhc2g6MHhkNGE1ZmYwMQorI2VuZGlmCisKKyN1bmRlZiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cKKworI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRf
REVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAorICAgIElzb1N1
YnNwYWNlKiBIZWFwOjpuYW1lIyNTbG93KCkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQoIW1f
IyNuYW1lKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4g
SVNPX1NVQlNQQUNFX0lOSVQoKnRoaXMsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAorICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3Bh
Y2UpOyBcCisgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCisgICAgfQorCitEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2Us
IGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4
OTU4ZTNlOWQKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYworCisjdW5kZWYgRFlOQU1J
Q19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29w
ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3RvclBoYXNlLmgiCisjaW5jbHVkZSAiQ29tcGxldGVTdWJz
cGFjZS5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQuaCIKICNpbmNsdWRlICJHQ0Nv
bmR1Y3Rvci5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCkBAIC0zMyw2
ICszNCwxMSBAQAogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUgIkhlYXBGaW5hbGl6
ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgorI2luY2x1ZGUgIklzb0Nl
bGxTZXQuaCIKKyNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKKyNpbmNsdWRlICJJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmgiCisjaW5jbHVkZSAiSXNvU3Vic3BhY2UuaCIKKyNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIK
QEAgLTU4LDkgKzY0LDExIEBAIGNsYXNzIENvbGxlY3RpbmdTY29wZTsKIGNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CiBjbGFzcyBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrOworY2xhc3MgRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiBjbGFz
cyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOworY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOwogY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBWZXJp
ZmllcjsKQEAgLTY5LDggKzc3LDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRT
dHViUm91dGluZVNldDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTSW1tdXRhYmxlQnV0dGVyZmx5
OworY2xhc3MgSlNTdHJpbmc7CiBjbGFzcyBKU1ZhbHVlOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTWFjaGluZVRocmVhZHM7CiBjbGFzcyBNYXJrU3RhY2tBcnJheTsKIGNs
YXNzIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50OwpAQCAtNzI5LDYgKzczNywzMTggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCB7IGZhbHNlIH07CiAg
ICAgTG9jayBtX2NvbGxlY3RDb250aW51b3VzbHlMb2NrOwogICAgIENvbmRpdGlvbiBtX2NvbGxl
Y3RDb250aW51b3VzbHlDb25kaXRpb247CisKK3B1YmxpYzoKKyAgICAvLyBIZWFwQ2VsbFR5cGVz
CisgICAgSGVhcENlbGxUeXBlIGF1eGlsaWFyeUhlYXBDZWxsVHlwZTsKKyAgICBIZWFwQ2VsbFR5
cGUgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBjZWxs
SGVhcENlbGxUeXBlOworICAgIEhlYXBDZWxsVHlwZSBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Cisg
ICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2Vs
bFR5cGUgY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIGN1c3RvbVNldHRlckZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSBkYXRlSW5zdGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGVycm9ySW5z
dGFuY2VIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGZpbmFsaXphdGlvblJlZ2lz
dHJ5Q2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgZ2xvYmFsT2JqZWN0SGVhcENlbGxU
eXBlOworICAgIElzb0hlYXBDZWxsVHlwZSBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZUhlYXBDZWxs
VHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlw
ZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIG1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJ
c29IZWFwQ2VsbFR5cGUgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGU7CisgICAgSXNvSW5s
aW5lZEhlYXBDZWxsVHlwZTxKU1N0cmluZz4gc3RyaW5nSGVhcENlbGxUeXBlOworICAgIElzb0hl
YXBDZWxsVHlwZSB3ZWFrTWFwSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWFr
U2V0SGVhcENlbGxUeXBlOworICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAor
ICAgIElzb0hlYXBDZWxsVHlwZSBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlOworICAgIElz
b0hlYXBDZWxsVHlwZSBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgor
I2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgSXNvSGVhcENlbGxUeXBlIGFwaVdyYXBw
ZXJPYmplY3RIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGNhbGxiYWNrQVBJV3Jh
cHBlckdsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUganNjQ2Fs
bGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKKyNlbmRpZgorICAgIElzb0hlYXBDZWxsVHlwZSBp
bnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxEYXRlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bERpc3BsYXlOYW1l
c0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bExpc3RGb3JtYXRIZWFwQ2Vs
bFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CisgICAg
SXNvSGVhcENlbGxUeXBlIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVh
cENlbGxUeXBlIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5
cGUgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUg
aW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgaW50bFNlZ21l
bnRzSGVhcENlbGxUeXBlOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBJc29IZWFwQ2Vs
bFR5cGUgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxU
eXBlIHdlYkFzc2VtYmx5RXhjZXB0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlw
ZSB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3
ZWJBc3NlbWJseUdsb2JhbEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNz
ZW1ibHlJbnN0YW5jZUhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1i
bHlNZW1vcnlIZWFwQ2VsbFR5cGU7CisgICAgSXNvSGVhcENlbGxUeXBlIHdlYkFzc2VtYmx5TW9k
dWxlSGVhcENlbGxUeXBlOworICAgIElzb0hlYXBDZWxsVHlwZSB3ZWJBc3NlbWJseU1vZHVsZVJl
Y29yZEhlYXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlUYWJsZUhl
YXBDZWxsVHlwZTsKKyAgICBJc29IZWFwQ2VsbFR5cGUgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5
cGU7CisjZW5kaWYKKworICAgIC8vIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JzCisgICAgc3RkOjp1
bmlxdWVfcHRyPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBmYXN0TWFsbG9jQWxs
b2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I+IHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHaWdh
Y2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcjsKKwor
ICAgIC8vIFN1YnNwYWNlcworICAgIENvbXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQgYXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMg
Z28gaGVyZS4KKyAgICBDb21wbGV0ZVN1YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOyAvLyBCdXR0ZXJmbGllcywgYXJyYXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KKyAg
ICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJsZUJ1dHRlcmZseSBnb2VzIGhlcmUuCisKKyAgICAvLyBX
ZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5n
IGluIHRoZSBwcmltaXRpdmUgR2lnYWNhZ2UgYW5kIGJ1dHRlcmZsaWVzCisgICAgLy8gYmVpbmcg
aW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2UuIEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlv
dXMgd2hlcmUgdGhleSBzaG91bGQgZ28sIGFuZCBzbyB3ZQorICAgIC8vIGNhbiBoYXJkY29kZSB0
aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMgaXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0
IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpLaW5kCisgICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgor
ICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJh
Y3RlZCB0aGlzPworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUyNDgKKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
a2luZCkgeworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6CisgICAgICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdh
Y2FnZTo6SlNWYWx1ZToKKyAgICAgICAgICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOworICAg
IH0KKyAgICAKKyAgICAvLyBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxU
eXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0aGVzZSBzdWJzcGFjZXMuCisgICAgQ29tcGxldGVTdWJz
cGFjZSBjZWxsU3BhY2U7CisgICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNw
YWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUg
dGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsg
dGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0
cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CisK
KyAgICBJc29TdWJzcGFjZSBhcnJheVNwYWNlOworICAgIElzb1N1YnNwYWNlIGJpZ0ludFNwYWNl
OworICAgIElzb1N1YnNwYWNlIGNhbGxlZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGNsb25lZEFy
Z3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIGN1c3RvbUdldHRlclNldHRlclNwYWNlOwor
ICAgIElzb1N1YnNwYWNlIGRhdGVJbnN0YW5jZVNwYWNlOworICAgIElzb1N1YnNwYWNlIGRvbUF0
dHJpYnV0ZUdldHRlclNldHRlclNwYWNlOworICAgIElzb1N1YnNwYWNlIGV4Y2VwdGlvblNwYWNl
OworICAgIElzb1N1YnNwYWNlIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZTsKKyAgICBJ
c29TdWJzcGFjZSBmdW5jdGlvblNwYWNlOworICAgIElzb1N1YnNwYWNlIGdldHRlclNldHRlclNw
YWNlOworICAgIElzb1N1YnNwYWNlIGdsb2JhbExleGljYWxFbnZpcm9ubWVudFNwYWNlOworICAg
IElzb1N1YnNwYWNlIGludGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICBJc29TdWJzcGFjZSBqc1By
b3h5U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgbmF0aXZlRXhlY3V0YWJsZVNwYWNlOworICAgIElz
b1N1YnNwYWNlIG51bWJlck9iamVjdFNwYWNlOworICAgIElzb1N1YnNwYWNlIHBsYWluT2JqZWN0
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcHJvbWlzZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHBy
b3BlcnR5TmFtZUVudW1lcmF0b3JTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eVRhYmxl
U3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVnRXhwU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgcmVn
RXhwT2JqZWN0U3BhY2U7CisgICAgSXNvU3Vic3BhY2Ugcm9wZVN0cmluZ1NwYWNlOworICAgIElz
b1N1YnNwYWNlIHNjb3BlZEFyZ3VtZW50c1NwYWNlOworICAgIElzb1N1YnNwYWNlIHNwYXJzZUFy
cmF5VmFsdWVNYXBTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJpbmdTcGFjZTsKKyAgICBJc29T
dWJzcGFjZSBzdHJpbmdPYmplY3RTcGFjZTsKKyAgICBJc29TdWJzcGFjZSBzdHJ1Y3R1cmVDaGFp
blNwYWNlOworICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2U7CisgICAgSXNv
U3Vic3BhY2Ugc3RydWN0dXJlU3BhY2U7CisgICAgSXNvU3Vic3BhY2UgYnJhbmRlZFN0cnVjdHVy
ZVNwYWNlOworICAgIElzb1N1YnNwYWNlIHN5bWJvbFRhYmxlU3BhY2U7CisKKyNkZWZpbmUgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihuYW1lKSBcCisgICAgdGVtcGxhdGU8U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gXAorICAgIElzb1N1YnNwYWNlKiBuYW1lKCkgXAorICAgIHsgXAor
ICAgICAgICBpZiAobV8jI25hbWUgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKKyAgICAgICAgcmV0
dXJuIG5hbWUjI1Nsb3coKTsgXAorICAgIH0gXAorICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1
YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+
IG1fIyNuYW1lOworCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYXBpV3JhcHBlck9iamVjdFNwYWNlKQorICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSkK
KyNlbmRpZgorI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihhcGlXcmFwcGVyT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc2NDYWxsYmFja0Z1bmN0aW9uU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0FQSVdyYXBwZXJHbG9i
YWxPYmplY3RTcGFjZSkKKyNlbmRpZgorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoYXBpR2xvYmFsT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihhcGlWYWx1ZVdyYXBwZXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGFycmF5QnVmZmVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihhcnJheUl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihhc3luY0dlbmVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50NjRBcnJheVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYmlnSW50T2JqZWN0U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihiaWdVaW50NjRBcnJheVNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm9vbGVhbk9iamVjdFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoYm91bmRGdW5jdGlvblNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tDb25zdHJ1Y3Rv
clNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tH
bG9iYWxPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGNhbGxiYWNrRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGNhbGxiYWNrT2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRhdGFWaWV3U3BhY2UpCisgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1Z2dlclNjb3BlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihlcnJvckluc3RhbmNlU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihmbG9hdDMyQXJyYXlTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZsb2F0NjRBcnJheVNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZnVuY3Rpb25SYXJlRGF0YVNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZ2VuZXJhdG9yU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihnbG9iYWxPYmplY3RT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
OEFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQx
NkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnQz
MkFycmF5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqYXZh
U2NyaXB0Q2FsbEZyYW1lU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihqc01vZHVsZVJlY29yZFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIobWFwQnVja2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihtYXBJdGVyYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIobWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uihtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKG5hdGl2ZVN0ZEZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihwcm94eU9iamVjdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIocHJveHlSZXZva2VTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjb3BlZEFyZ3VtZW50c1RhYmxlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzY3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNjcmlwdEZldGNoZXJT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldEJ1Y2tldFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0SXRlcmF0b3JT
cGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNldFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2hhZG93UmVhbG1TcGFjZSk7
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpY3RFdmFsQWN0aXZh
dGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3RyaW5n
SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHNv
dXJjZUNvZGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5
bWJvbFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9s
T2JqZWN0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkK
KyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50MTZBcnJh
eVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWludDMyQXJy
YXlTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1bmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2tTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGZpbmFs
aXphdGlvblJlZ2lzdHJ5U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWFrT2JqZWN0UmVmU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih3ZWFrU2V0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih3ZWFrTWFwU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih3aXRoU2NvcGVTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxDb2xsYXRvclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bERhdGVUaW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsRGlzcGxheU5hbWVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihpbnRsTGlzdEZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudEl0
ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
U2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsU2VnbWVudHNTcGFjZSkKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2UpCisgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNl
KQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlFeGNl
cHRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFz
c2VtYmx5RnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5R2xvYmFsU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUih3ZWJBc3NlbWJseUluc3RhbmNlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseU1lbW9yeVNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSkKKyAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJs
eVRhYmxlU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJB
c3NlbWJseVRhZ1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSkKKyNlbmRpZgorCisjdW5kZWYgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUgorICAgIAorICAgIElzb0NlbGxTZXQgZXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7CisgICAgSXNvQ2VsbFNldCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOworCisjZGVmaW5lIERZTkFNSUNf
U1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG5hbWUpIFwKKyAgICB0ZW1wbGF0ZTxTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBcCisgICAgSXNvU3Vic3BhY2UqIG5hbWUoKSBcCisgICAgeyBcCisgICAg
ICAgIGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fIyNuYW1lLmdldCgpKSBcCisgICAgICAgICAg
ICByZXR1cm4gJnNwYWNlQW5kU2V0LT5zcGFjZTsgXAorICAgICAgICBpZiAobW9kZSA9PSBTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSBcCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsg
XAorICAgICAgICByZXR1cm4gbmFtZSMjU2xvdygpOyBcCisgICAgfSBcCisgICAgSXNvU3Vic3Bh
Y2UqIG5hbWUjI1Nsb3coKTsgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGFjZUFuZFNldD4gbV8j
I25hbWU7CisgICAgCisgICAgc3RydWN0IFNwYWNlQW5kU2V0IHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIElzb1N1YnNwYWNlIHNwYWNlOworICAg
ICAgICBJc29DZWxsU2V0IHNldDsKKyAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICAgICAgU3BhY2VBbmRTZXQoQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQorICAgICAgICAgICAgOiBzcGFjZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKQorICAgICAgICAgICAgLCBzZXQoc3BhY2UpCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIElzb0NlbGxTZXQmIHNldEZvcihTdWJzcGFjZSYgc3Bh
Y2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PElzb0NlbGxT
ZXQqPigKKyAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KCZzcGFjZSkgLQorICAg
ICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTcGFjZUFuZFNldCwgc3BhY2UpICsKKyAgICAg
ICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU3BhY2VBbmRTZXQsIHNldCkpOworICAgICAgICB9
CisgICAgfTsKKyAgICAKKyAgICBTcGFjZUFuZFNldCBjb2RlQmxvY2tTcGFjZTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrU3BhY2UoY29u
c3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBpbmNsdWRl
IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UgYmVjYXVzZSB0aGlzIGlzIGFib3V0IHN1YnNjbGFz
c2VzIG9mCisgICAgICAgIC8vIEpTQzo6Q29kZUJsb2NrLgorICAgICAgICBmdW5jKGNvZGVCbG9j
a1NwYWNlKTsKKyAgICB9CisKKyAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
UihldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVf
TUVNQkVSKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgU3BhY2VBbmRTZXQgZnVu
Y3Rpb25FeGVjdXRhYmxlU3BhY2U7CisgICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVT
cGFjZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2Ny
aXB0RXhlY3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICBpZiAo
bV9ldmFsRXhlY3V0YWJsZVNwYWNlKQorICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJs
ZVNwYWNlKTsKKyAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7CisgICAgICAg
IGlmIChtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpCisgICAgICAgICAgICBmdW5jKCpt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOworICAgICAgICBmdW5jKHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UpOworICAgIH0KKworICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2U7CisKKyN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01F
TUJFUgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisvLyBUaGUgcHVycG9zZSBvZiB0aGlzIGhlYWRlciBmaWxl
IGlzIHNpbXBseSB0byAjaW5jbHVkZSBhbGwgdGhlIHR5cGVzCisvLyB0aGF0IHdlIGhhdmUgU3Vi
c3BhY2VzIGZvciBzbyB0aGF0IEhlYXAuY3BwJ3MgI2luY2x1ZGUgbGlzdCBpcyBub3QgZmxvb2Rl
ZAorLy8gd2l0aCB0aGVzZSwgYW5kIHRoYXQgaXQnbGwgYmUgZWFzaWVyIHRvIGRpc2Nlcm4gYmV0
d2VlbiB0aGVzZSBTdWJzcGFjZSB0eXBlcworLy8gZnJvbSBvdGhlciBkYXRhIHN0cnVjdHVyZXMg
bmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgSGVhcC4KKworI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5o
IgorI2luY2x1ZGUgIkJvb2xlYW5PYmplY3QuaCIKKyNpbmNsdWRlICJCcmFuZGVkU3RydWN0dXJl
LmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiRGF0ZUluc3RhbmNl
LmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXMuaCIKKyNpbmNsdWRlICJJbnRsTGlzdEZv
cm1hdC5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVk
ZSAiSlNBUElHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgor
I2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpTQmlnSW50LmgiCisjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFj
a09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0RhdGFWaWV3LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkpTSmF2YVNjcmlw
dENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNQcm9taXNlLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNQcm94eS5oIgorI2luY2x1ZGUgIkpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNs
dWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJKU1RvV2FzbUlDQ2FsbGVl
LmgiCisjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCisjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5VGFibGUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFnLmgiCisjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKKyNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiUHJv
Z3JhbUV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVRhYmxlLmgiCisjaW5jbHVkZSAi
UHJveHlSZXZva2UuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKKyNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgorI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgorI2luY2x1ZGUgIlVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
aCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgorCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKyNpbmNsdWRlICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2VuZGlm
CisKKyNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAorI2luY2x1ZGUgIkpTQVBJV3JhcHBlckds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0NhbGxiYWNrRnVuY3Rpb24uaCIKKyNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSGVhcENlbGxUeXBlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0hlYXBDZWxs
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyMiArMzAsMzAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIElzb0hlYXBDZWxsVHlwZSBmaW5hbCA6IHB1YmxpYyBIZWFwQ2VsbFR5cGUg
eworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSXNvSGVhcENlbGxUeXBlIGZpbmFsIDogcHVibGlj
IEhlYXBDZWxsVHlwZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uUHRyID0g
dm9pZCAoKikoSlNDZWxsKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvSGVhcENlbGxU
eXBlKCk7CisgICAgfklzb0hlYXBDZWxsVHlwZSgpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SXNvSGVhcENlbGxUeXBlKERlc3RydWN0aW9uTW9kZSwgRGVzdHJveUZ1bmN0aW9uUHRyKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KKyAgICBzdHJ1Y3QgQXJncyB7CisgICAgICAg
IEFyZ3MoKQorICAgICAgICAgICAgOiBtb2RlKENlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uID8g
TmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICAs
IGZ1bmN0aW9uUHRyKCZDZWxsVHlwZTo6ZGVzdHJveSkKKyAgICAgICAgeyB9CisKKyAgICAgICAg
RGVzdHJ1Y3Rpb25Nb2RlIG1vZGU7CisgICAgICAgIERlc3Ryb3lGdW5jdGlvblB0ciBmdW5jdGlv
blB0cjsKKyAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJc29IZWFwQ2VsbFR5cGU+KENlbGxUeXBlOjpuZWVkc0Rl
c3RydWN0aW9uID8gTmVlZHNEZXN0cnVjdGlvbiA6IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sICZD
ZWxsVHlwZTo6ZGVzdHJveSk7Ci0gICAgfQorICAgIElzb0hlYXBDZWxsVHlwZShBcmdzPENlbGxU
eXBlPiYmIGFyZ3MpCisgICAgICAgIDogSXNvSGVhcENlbGxUeXBlKGFyZ3MubW9kZSwgYXJncy5m
dW5jdGlvblB0cikKKyAgICB7IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNo
U3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0KikgY29uc3QgZmluYWw7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KFZNJiwgSlNDZWxsKikgY29uc3QgZmluYWw7
CisgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3QqKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKSBjb25zdCBmaW5hbDsK
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKFZNJiwgSlNDZWxsKiBjZWxsKSBj
b25zdAogICAgIHsKQEAgLTUzLDYgKzYxLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
KyAgICBJc29IZWFwQ2VsbFR5cGUoRGVzdHJ1Y3Rpb25Nb2RlLCBEZXN0cm95RnVuY3Rpb25QdHIp
OworCiAgICAgRGVzdHJveUZ1bmN0aW9uUHRyIFdURl9WVEJMX0ZVTkNQVFJfUFRSQVVUSF9TVFIo
Iklzb0hlYXBDZWxsVHlwZS5kZXN0cm95IikgbV9kZXN0cm95OwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5l
ZEhlYXBDZWxsVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyOCArMzIsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZT4KIGNsYXNzIElzb0lubGluZWRI
ZWFwQ2VsbFR5cGUgZmluYWwgOiBwdWJsaWMgSGVhcENlbGxUeXBlIHsKIHB1YmxpYzoKLSAgICBJ
c29JbmxpbmVkSGVhcENlbGxUeXBlKCkKLSAgICAgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJp
YnV0ZXMoQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCi0gICAgewotICAgIH0KKyAg
ICBJc29JbmxpbmVkSGVhcENlbGxUeXBlKCk7CiAKICAgICBzdHJ1Y3QgRGVzdHJveUZ1bmMgewot
ICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoVk0mLCBKU0Nl
bGwqKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6
SGFuZGxlJiBoYW5kbGUsIEZyZWVMaXN0KiBmcmVlTGlzdCkgY29uc3QgZmluYWwKLSAgICB7Ci0g
ICAgICAgIGhhbmRsZS5maW5pc2hTd2VlcEtub3dpbmdIZWFwQ2VsbFR5cGUoZnJlZUxpc3QsIERl
c3Ryb3lGdW5jKCkpOwotICAgIH0KLQotICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCogY2Vs
bCkgY29uc3QgZmluYWwKLSAgICB7Ci0gICAgICAgIENlbGxUeXBlOjpkZXN0cm95KGNlbGwpOwot
ICAgIH0KKyAgICB2b2lkIGZpbmlzaFN3ZWVwKE1hcmtlZEJsb2NrOjpIYW5kbGUmLCBGcmVlTGlz
dCopIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGVzdHJveShWTSYsIEpTQ2VsbCopIGNvbnN0IGZp
bmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb0lubGluZWRIZWFwQ2VsbFR5cGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29JbmxpbmVk
SGVhcENlbGxUeXBlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5cGUuaCIKKworI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZT4KK2lubGluZSBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6SXNvSW5saW5lZEhl
YXBDZWxsVHlwZSgpCisgICAgOiBIZWFwQ2VsbFR5cGUoQ2VsbEF0dHJpYnV0ZXMoQ2VsbFR5cGU6
Om5lZWRzRGVzdHJ1Y3Rpb24gPyBOZWVkc0Rlc3RydWN0aW9uIDogRG9lc05vdE5lZWREZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlPgorQUxXQVlTX0lOTElORSB2b2lkIElzb0lubGluZWRIZWFwQ2VsbFR5cGU8Q2VsbFR5cGU+
OjpEZXN0cm95RnVuYzo6b3BlcmF0b3IoKShWTSYsIEpTQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAg
ICBDZWxsVHlwZTo6ZGVzdHJveShjZWxsKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGU+CitpbmxpbmUgdm9pZCBJc29JbmxpbmVkSGVhcENlbGxUeXBlPENlbGxUeXBlPjo6ZmluaXNo
U3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYgaGFuZGxlLCBGcmVlTGlzdCogZnJlZUxpc3QpIGNv
bnN0Cit7CisgICAgaGFuZGxlLmZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShmcmVlTGlz
dCwgRGVzdHJveUZ1bmMoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlPgoraW5s
aW5lIHZvaWQgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTxDZWxsVHlwZT46OmRlc3Ryb3koVk0mLCBK
U0NlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQ2VsbFR5cGU6OmRlc3Ryb3koY2VsbCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjEzLDcgKzIxMyw3IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmsK
IC8vIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKIC8vIHNjcmliYmxlTW9kZSA9PSBEb250
U2NyaWJibGUKIC8vIG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkCi0vLyBkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNEZXN0cmljdG9yc0FuZENvbGxlY3Rv
cklzUnVubmluZworLy8gZGVzdHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzRGVzdHJ1Y3RvcnNBbmRD
b2xsZWN0b3JJc1J1bm5pbmcKIC8vCiAvLyBlbXB0eU1vZGUgPSBJc0VtcHR5CiAvLyAgICAgZGVz
dHJ1Y3Rpb25Nb2RlID0gRG9lc05vdE5lZWREZXN0cnVjdGlvbgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IERFQ0xBUkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCBuYW1lc3BhY2UgSlNDICB7CiAgICAgY2xhc3MgSlNDYWxsZWU7CiAgICAgY2xhc3MgSlNTY29w
ZTsKICAgICBjbGFzcyBTb3VyY2VPcmlnaW47CisgICAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwog
CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9y
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQWdncmVnYXRlRXJyb3JQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBBcnJheUl0ZXJhdG9y
UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2Fj
aGtvdkBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJh
dG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShBc3luY0dlbmVyYXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEFzeW5jSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoQXRvbWljc09iamVjdCwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBBdG9taWNzT2JqZWN0
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEJpZ0ludFByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CcmFuZGVkU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRl
ZFN0cnVjdHVyZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CcmFuZGVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmdm0uYnJhbmRlZFN0cnVjdHVyZVNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLmJyYW5kZWRTdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBjaGVja0JyYW5kKFN5bWJvbCogYnJhbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBCdXR0ZXJm
bHk6Om9wdGltYQogaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9w
ZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAg
ICAgc2l6ZV90IHNpemUgPSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHks
IGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9p
ZCogYmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJl
dHVybk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0
ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZs
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFj
aXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90
YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2b2lkKiBiYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNp
emUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBCdXR0ZXJm
bHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OCw3ICs5OCw3IEBAIGlubGluZSBCdXR0ZXJm
bHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbmkKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
dHJ5Q3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBw
cm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hl
YWRlciYgaW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykK
IHsKICAgICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBh
Y2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAg
ICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVO
b25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gZnJvbUJhc2UoYmFzZSwgcHJlQ2FwYWNpdHks
IHByb3BlcnR5Q2FwYWNpdHkpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBCdXR0ZXJmbHkq
IEJ1dHRlcmZseTo6Z3Jvd0FycmF5UmkKICAgICB2b2lkKiB0aGVCYXNlID0gYmFzZSgwLCBwcm9w
ZXJ0eUNhcGFjaXR5KTsKICAgICBzaXplX3Qgb2xkU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0
eUNhcGFjaXR5LCBoYWRJbmRleGluZ0hlYWRlciwgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0
ZXMpOwogICAgIHNpemVfdCBuZXdTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHks
IHRydWUsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBuZXdCYXNl
ID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBuZXdTaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIG1lbWNweS4K
QEAgLTIxMSwxMyArMjExLDEzIEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxv
Y0FycmEKICAgICAvLyBPYmplY3RzIHdpdGggbm8gcHJvcGVydGllcyBhcmUgY29tbW9uIGluIGFy
cmF5cywgYW5kIHdlIGFyZSBmb2N1c2luZyBvbiB2ZXJ5IGxhcmdlIGFycmF5IGNyYWZ0ZWQgYnkg
cmVwZWF0aW5nIEFycmF5I3B1c2gsIHNvLi4uIHRoYXQncyBmaW5lIQogICAgIGJvb2wgY2FuUmVh
bGxvYyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFwLm11dGF0b3JTaG91bGRCZUZlbmNl
ZCgpICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLT5pc1ByZWNpc2VBbGxvY2F0
aW9uKCk7CiAgICAgaWYgKGNhblJlYWxsb2MpIHsKLSAgICAgICAgdm9pZCogbmV3QmFzZSA9IHZt
LmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlv
bk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2UpLCBuZXdTaXpl
LCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgICAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Uo
KS5yZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKHZtLCBiaXR3aXNlX2Nhc3Q8
SGVhcENlbGwqPih0aGVCYXNlKSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYgKCFuZXdCYXNlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAw
LCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBuZXdTaXpl
LCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwor
ICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFs
bG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgJmRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGdjU2FmZU1lbWNweShzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obmV3
QmFzZSksIHN0YXRpY19jYXN0PEpTVmFsdWUqPih0aGVCYXNlKSwgb2xkU2l6ZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENhY2hlZEJ5dGVjb2RlOwogY2xh
c3MgU291cmNlQ29kZUtleTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwog
CiBlbnVtIGNsYXNzIFNvdXJjZUNvZGVUeXBlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5
cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1
bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jbG9uZWRBcmd1bWVudHNTcGFjZSgpOwog
ICAgIH0KICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zb2xlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc29sZU9iamVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
Q29uc29sZU9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIENvbnNvbGVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdl
dHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmN1c3RvbUdldHRlclNldHRlclNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEN1c3RvbUdldHRlclNldHRlciogY3JlYXRlKFZN
JiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIGN1c3RvbVNldHRl
cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RP
TUF0dHJpYnV0ZUdldHRlclNldHRlci5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9ET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXJTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGNy
ZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3RvbVNldHRlciBjdXN0
b21TZXR0ZXIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZGF0ZUlu
c3RhbmNlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZGF0ZUluc3RhbmNlU3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgRGF0ZUluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgZG91YmxlIGRhdGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoRGF0ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIERhdGVQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVT
dWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS52
YXJpYWJsZVNpemVkQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRD
ZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFyZ3VtZW50cyBvYmplY3Qg
YnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdlcm91cyBpZiB3ZSBHQyBy
aWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3Rv
dHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEVycm9yUHJvdG90eXBl
QmFzZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgREVDTEFSRV9J
TkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0u
ZXhjZXB0aW9uU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZXhjZXB0aW9uU3BhY2UoKTsKICAg
ICB9CiAKICAgICBlbnVtIFN0YWNrQ2FwdHVyZUFjdGlvbiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UoKS5zcGFjZTsK
ICAgICB9CiAKICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgSW50
cmluc2ljIGludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuaAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoR2VuZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgR2VuZXJhdG9yUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LmdldHRlclNldHRlclNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmdldHRlclNldHRlclNwYWNl
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIEdldHRlclNldHRlciogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNl
dHRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFz
aE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAg
ICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUo
Y2FwYWNpdHkpOwotICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogZGF0YSA9
IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEludGVybmFs
RnVuY3Rpb24pLCAiSW50ZXJuYWxGdW5jdGlvbiBzdWJjbGFzc2VzIHRoYXQgYWRkIGZpZWxkcyBu
ZWVkIHRvIG92ZXJyaWRlIHN1YnNwYWNlRm9yPD4oKSIpOwotICAgICAgICByZXR1cm4gJnZtLmlu
dGVybmFsRnVuY3Rpb25TcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9u
U3BhY2UoKTsKICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5m
YW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxDb2xs
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQotICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTGlzdEZvcm1h
dFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZVBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFu
ZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSW50bE9iamVjdCwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFu
V2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSW50bFNlZ21lbnRlclBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVudHNQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJbnRsU2VnbWVu
dHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yUHJvdG90
eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSXRlcmF0b3JQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBJ
dGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAg
fHwgaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUpKTsKIAogICAgICAgICB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVj
dHVyZSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVh
bCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwg
b3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSksCiAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6UmV0dXJuTnVsbCk7CkBAIC03OCw3ICs3OCw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdp
dGhBcnJheVN0b3JhZ2UpOwogICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4
QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEFycmF5U3RvcmFnZTo6
b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7
Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5h
bGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCgKICAgICAgICAgICAgIHZtLAog
ICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhCaWFzLCBvdXRPZkxpbmVTdG9y
YWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksCiAgICAgICAg
ICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uYXJyYXlTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlKCk7CiAgICAgfQogICAgICAgICAKIHByb3RlY3Rl
ZDoKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6dHJ5Q3JlYXRl
KFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0
cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCisgICAgICAgIHZv
aWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9u
VmlydHVhbCgKICAgICAgICAgICAgIHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNp
emUoMCwgb3V0T2ZMaW5lU3RvcmFnZSwgdHJ1ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OlJldHVybk51bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQXJyYXlCdWZmZXJQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjoKICAgICAgICAgLy8gQXR0ZW1wdCBH
QyBhbGxvY2F0aW9uLgogICAgICAgICB2b2lkKiB0ZW1wOwogICAgICAgICBzaXplX3Qgc2l6ZSA9
IHNpemVPZihsZW5ndGgsIGVsZW1lbnRTaXplKTsKLSAgICAgICAgdGVtcCA9IHZtLnByaW1pdGl2
ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxs
cHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICB0ZW1wID0g
dm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAg
ICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVXaXRo
TGVuCiAgICAgfQogCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBtYXhMZW5ndGgpOwotICAgIHZvaWQq
IGRhdGEgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLmFsbG9jYXRlTm9uVmly
dHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBkYXRhID0gdm0ucHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbGVuZ3RoICogc2l6ZW9m
KERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChudWxsT3JHbG9iYWxPYmplY3RG
b3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0g
Y2xhc3MgSW5pdGlhbGl6YXRpb25UeXBlIHsgTm9uZSwgV2l0aFplcm8gfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jYWxsZWVTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5jYWxsZWVTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0NhbGxlZSogY3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmll
d1Byb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
RGF0YVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0RhdGFWaWV3UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlv
blNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmZ1bmN0aW9uU3BhY2UoKTsKICAgICB9CiAgICAg
CiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZSogY3JlYXRlKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAm
dm0uZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Njb3BlKiBwYXJlbnRTY29wZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTSW1tdXRhYmxlQnV0dGVyZmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW11dGFibGVCdXR0ZXJmbHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgLy8gV2Ug
YWxsb2NhdGUgb3V0IG9mIHRoZSBKU1ZhbHVlIGdpZ2FjYWdlIGFzIG90aGVyIGNvZGUgZXhwZWN0
cyBhbGwgYnV0dGVyZmxpZXMgdG8gbGl2ZSB0aGVyZS4KLSAgICAgICAgcmV0dXJuICZ2bS5pbW11
dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5pbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
OwogICAgIH0KIAogICAgIC8vIE9ubHkgY2FsbCB0aGlzIGlmIHlvdSBqdXN0IGFsbG9jYXRlZCB0
aGlzIGJ1dHRlcmZseS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIUNl
bGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0udmFyaWFi
bGVTaXplZENlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS52YXJpYWJsZVNpemVkQ2VsbFNw
YWNlKCk7CiAgICAgfQogCiAgICAgdXNpbmcgQmFzZSA9IEpTU3ltYm9sVGFibGVPYmplY3Q7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNNb2R1bGVMb2FkZXIsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGVudW0gU3RhdHVzIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU09OT2JqZWN0LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNPTk9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZQogQ29tcGxl
dGVTdWJzcGFjZSogSlNGaW5hbE9iamVjdDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogewogICAgIHN0
YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICByZXR1cm4gJnZt
LmNlbGxTcGFjZTsKKyAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogfQogCiAvLyBodHRwczov
L3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWxpc3Rmcm9tYXJyYXlsaWtlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9taXNlU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucHJvbWlzZVNwYWNlKCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5
cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTUHJvbWlzZVBy
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTUHJvbWlzZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IEpTUHJvcGVydHlOYW1lCiAgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5
dGVzID0gQ2hlY2tlZDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdyaXRl
QmFycmllcjxKU1N0cmluZz4pOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5
TmFtZXNCdWZmZXIgPSBudWxscHRyOwogICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUlu
Qnl0ZXMpIHsKLSAgICAgICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRl
QmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxv
Y2F0ZU5vblZpcnR1YWwodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICAgICAgcHJvcGVydHlOYW1l
c0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmluZz4qPih2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgcHJvcGVydHlO
YW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFz
c2VydCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lc1Np
emU7ICsraSkKICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNCdWZmZXJbaV0uY2xlYXIoKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1lRW51bWVyYXRv
clNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QsIHVpbnQzMl90LCBQcm9wZXJ0eU5hbWVB
cnJheSYmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihDZWxsVHlwZSkgPT0gc2l6ZW9mKEpTUHJveHkpKTsKLSAgICAgICAgcmV0dXJu
ICZ2bS5qc1Byb3h5U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uanNQcm94eVNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTUHJveHkqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU09iamVjdCogdGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0uc3RyaW5nU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2UoKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gV2UgZW1wbG95IG92ZXJmbG93IGNoZWNrcyBpbiBtYW55IHBsYWNl
cyB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgTWF4TGVuZ3RoCkBAIC0yNzAsNyArMjcwLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmdm0ucm9wZVN0cmluZ1NwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdTcGFj
ZSgpOwogICAgIH0KIAogICAgIC8vIFdlIHVzZSBsb3dlciAzYml0cyBvZiBmaWJlcjAgZm9yIGZs
YWdzLiBUaGVzZSBiaXRzIGFyZSB1c2FibGUgZHVlIHRvIGFsaWdubWVudCwgYW5kIGl0IGlzIE9L
IGV2ZW4gaW4gMzJiaXQgYXJjaGl0ZWN0dXJlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoTWFwSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXBJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoTWFwUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKE1hdGhPYmplY3QsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBNYXRoT2JqZWN0KiBjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShOYXRpdmVFcnJvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLm5h
dGl2ZUV4ZWN1dGFibGVTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5uYXRpdmVFeGVjdXRhYmxl
U3BhY2UoKTsKICAgICB9CiAKICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgog
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICZ2bS5udW1iZXJPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5udW1i
ZXJPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKE9iamVjdFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrOworCiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBHbG9iYWxFeGVjdXRhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogcHVibGljOgpAQCAtMzksNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5wcm9ncmFtRXhl
Y3V0YWJsZVNwYWNlLnNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnByb2dyYW1FeGVjdXRhYmxl
U3BhY2UoKS5zcGFjZTsKICAgICB9CiAKICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNy
ZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJs
ZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlU
YWJsZVNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVm
bGVjdE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFJlZmxl
Y3RPYmplY3QsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBSZWZsZWN0T2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAg
ICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cFNwYWNl
KCk7CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRl
KFZNJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOwotICAgICAgICByZXR1cm4g
JnZtLnJlZ0V4cE9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnJlZ0V4cE9iamVjdFNw
YWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgbGFzdEluZGV4
SXNOb3RXcml0YWJsZUZsYWcgPSAwYjAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKFJlZ0V4cFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWdFeHBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAgU2NvcGVkQXJndW1lbnRzKiBTY29wZWRBcmd1bWVudHM6OmNy
ZWF0ZQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxwdHI7CiAgICAg
aWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7CiAgICAgICAgIENoZWNrZWQ8dW5z
aWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVuZ3RoKCk7Ci0g
ICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG92ZXJm
bG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPiksIG51bGxwdHIsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2Fz
dDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgb3ZlcmZsb3dMZW5ndGggKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQp
KTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJn
dW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5zY29wZWRBcmd1bWVudHNTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zY29wZWRB
cmd1bWVudHNTcGFjZSgpOwogICAgIH0KIAogICAgIC8vIENyZWF0ZXMgYW4gYXJndW1lbnRzIG9i
amVjdCBidXQgbGVhdmVzIGl0IHVuaW5pdGlhbGl6ZWQuIFRoaXMgaXMgZGFuZ2Vyb3VzIGlmIHdl
IEdDIHJpZ2h0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoU2V0SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KIAogICAgIHN0YXRpYyBTZXRJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoU2V0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFk
b3dSZWFsbVByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKFNoYWRvd1JlYWxtUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgU2hhZG93UmVhbG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uc3BhcnNlQXJyYXlWYWx1
ZU1hcFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnNwYXJzZUFycmF5VmFsdWVNYXBTcGFjZSgp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnN0cmluZ09iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFN0cmluZ09iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVTcGFjZSgpOwogICAgIH0KIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgU3Ry
dWN0dXJlQ2hhaW4qIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUoVgogICAgICAgICArK3NpemU7CiAg
ICAgKytzaXplOyAvLyBTZW50aW5lbCBudWxscHRyLgogICAgIHNpemVfdCBieXRlcyA9IENoZWNr
ZWQ8c2l6ZV90PihzaXplKSAqIHNpemVvZihTdHJ1Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJlSUQq
IHZlY3RvciA9IHN0YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4
aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKKyAgICBTdHJ1Y3R1cmVJRCogdmVjdG9yID0gc3Rh
dGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgp
LmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6QXNzZXJ0KSk7CiAgICAgbWVtc2V0KHZlY3RvciwgMCwgYnl0ZXMpOwogICAgIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNo
YWluPih2bSkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5n
ZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRpb24odm0sIGhlYWQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZt
LnN0cnVjdHVyZUNoYWluU3BhY2U7CisgICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlQ2hhaW5T
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZNJiwg
SlNPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOworICAgICAg
ICByZXR1cm4gJnZtLnN0cnVjdHVyZVJhcmVEYXRhU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0
aWMgU3RydWN0dXJlUmFyZURhdGEqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmgJKHJldmlz
aW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN5bWJvbFByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN5bWJvbFByb3RvdHlwZSog
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZ2bS5zeW1ib2xUYWJsZVNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnN5bWJvbFRhYmxl
U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYgdm0p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICsz
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
SW5zdGFudFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9y
YWxJbnN0YW50UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxOb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDIxIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0zMiw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsTm93LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxOb3cqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9i
amVjdC5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxPYmplY3QsIEJhc2UpOwotICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbE9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJv
dG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrVHJhY2Uu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIxICszMiwxNSBAQAogI2luY2x1ZGUg
IkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFy
Z0xpc3QuaCIKLSNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKLSNpbmNsdWRlICJCb29sZWFuT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQnJhbmRlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oIgotI2luY2x1ZGUgIkNsb25lZEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5o
IgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQ
cm9maWxlci5oIgogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRP
TUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgotI2lu
Y2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgog
I2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIkRvdWJsZVByZWRpY3Rpb25GdXp6
ZXJBZ2VudC5oIgpAQCAtNTUsNyArNDksNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCIKICNpbmNsdWRlICJGVExUaHVua3Mu
aCIKLSNpbmNsdWRlICJGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkZpbGVCYXNlZEZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2su
aCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKQEAgLTY2LDc3ICs1OSwyNSBAQAog
I2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSW50bENhY2hlLmgiCi0jaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCi0jaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bERpc3BsYXlOYW1lcy5oIgotI2lu
Y2x1ZGUgIkludGxMaXN0Rm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bExvY2FsZS5oIgotI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKLSNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKLSNp
bmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50bFNlZ21lbnRJ
dGVyYXRvci5oIgotI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKLSNpbmNsdWRlICJJbnRsU2Vn
bWVudHMuaCIKLSNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJJc29Jbmxp
bmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9w
ZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
IkpJVFRodW5rcy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiSlNBUElH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgotI2luY2x1ZGUg
IkpTQVBJV3JhcHBlck9iamVjdC5oIgotI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJK
U0FycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAi
SlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCi0jaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCi0jaW5j
bHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5o
IgotI2luY2x1ZGUgIkpTQ2FsbGVlLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bi5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgotI2luY2x1ZGUgIkpTRmluYWxpemF0aW9u
UmVnaXN0cnkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCi0jaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhv
c3QuaCIKLSNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xv
Y2suaCIKICNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKLSNp
bmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCi0jaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUg
IkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIkpTU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCi0jaW5jbHVkZSAiSlNT
ZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgotI2luY2x1ZGUgIkpTU3Ry
aW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgot
I2luY2x1ZGUgIkpTVG9XYXNtSUNDYWxsZWUuaCIKLSNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgi
Ci0jaW5jbHVkZSAiSlNXZWFrTWFwLmgiCi0jaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCi0j
aW5jbHVkZSAiSlNXZWFrU2V0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5R2xvYmFsLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5j
bHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1
bGUuaCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKLSNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5VGFnLmgiCi0jaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKQEAgLTE1MSwyNyArOTIsMTYgQEAKICNpbmNsdWRlICJQcm9ncmFtQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eVRhYmxlLmgiCi0jaW5jbHVkZSAiUHJveHlSZXZva2UuaCIKICNpbmNsdWRlICJSYW5kb21pemlu
Z0Z1enplckFnZW50LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKLSNpbmNsdWRlICJSZWdF
eHBPYmplY3QuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgotI2luY2x1ZGUgIlNo
YWRvd1JlYWxtT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCi0jaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJv
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGVt
cG9yYWxDYWxlbmRhci5oIgotI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKLSNpbmNsdWRl
ICJUZW1wb3JhbEluc3RhbnQuaCIKLSNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgotI2lu
Y2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIK
ICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIK
QEAgLTE4MywxOSArMTEzLDE2IEBACiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVk
ZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
V2ViQXNzZW1ibHlGdW5jdGlvbi5oIgotI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9j
ZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRlTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9T
aW1wbGVTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1RyYWNlLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oPgogCiAjaWYgRU5BQkxFKENfTE9PUCkKLSNp
bmNsdWRlICJDTG9vcFN0YWNrLmgiCiAjaW5jbHVkZSAiQ0xvb3BTdGFja0lubGluZXMuaCIKICNl
bmRpZgogCkBAIC0yMDcsMTUgKzEzNCw2IEBACiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjZW5kaWYK
IAotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0jaW5jbHVkZSAiT2JqQ0NhbGxiYWNrRnVuY3Rp
b24uaCIKLSNlbmRpZgotCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJMRUQKLSNpbmNsdWRlICJK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU0NDYWxsYmFja0Z1bmN0aW9u
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIEF0b21pYzx1bnNpZ25lZD4gVk06OnNf
bnVtYmVyT2ZJRHM7CkBAIC0yOTEsMTA5ICsyMDksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgLCBtX3JhbmRvbShPcHRpb25zOjpzZWVkT2ZWTVJhbmRv
bUZvckZ1enplcigpID8gT3B0aW9uczo6c2VlZE9mVk1SYW5kb21Gb3JGdXp6ZXIoKSA6IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpCiAgICAgLCBtX2ludGVncml0eVJhbmRvbSgqdGhp
cykKICAgICAsIGhlYXAoKnRoaXMsIGhlYXBUeXBlKQotICAgICwgZmFzdE1hbGxvY0FsbG9jYXRv
cihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwg
cHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1v
cnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdl
QWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdh
Y2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxI
ZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpBdXhpbGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVj
dGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlcikpKQotICAgICwgY2VsbEhl
YXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05v
dE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
TmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgYXBpR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQVBJR2xvYmFsT2JqZWN0
PigpKQotICAgICwgY2FsbGJhY2tDb25zdHJ1Y3RvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxKU0NhbGxiYWNrQ29uc3RydWN0b3I+KCkpCi0gICAgLCBjYWxsYmFja0dsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0Pj4oKSkKLSAgICAsIGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVj
dD4+KCkpCi0gICAgLCBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPigpKQotICAgICwgY3VzdG9tU2V0
dGVyRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbj4oKSkKLSAgICAsIGRhdGVJbnN0YW5jZUhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxEYXRlSW5zdGFuY2U+KCkpCi0gICAgLCBlcnJvckluc3RhbmNlSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEVycm9ySW5zdGFuY2U+KCkpCi0gICAg
LCBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpT
RmluYWxpemF0aW9uUmVnaXN0cnk+KCkpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQ+KCkpCi0gICAgLCBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNHbG9iYWxPYmplY3Q+KCkpCi0gICAgLCBpbmplY3RlZFNjcmlwdEhvc3RTcGFj
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSW5qZWN0
ZWRTY3JpcHRIb3N0PigpKQotICAgICwgamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZT4o
KSkKLSAgICAsIGpzTW9kdWxlUmVjb3JkSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEpTTW9kdWxlUmVjb3JkPigpKQotICAgICwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENl
bGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Pigp
KQotICAgICwgbmF0aXZlU3RkRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNOYXRpdmVTdGRGdW5jdGlvbj4oKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPElzb0lubGluZWRIZWFwQ2VsbFR5cGU8SlNTdHJpbmc+PigpKQotICAgICwgd2Vh
a01hcEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYWtNYXA+KCkpCi0g
ICAgLCB3ZWFrU2V0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2Vha1Nl
dD4oKSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQotI2lmIEpTQ19PQkpDX0FQSV9FTkFC
TEVECi0gICAgLCBhcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pj4oKSkKLSAgICAsIG9i
akNDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPE9i
akNDYWxsYmFja0Z1bmN0aW9uPigpKQotI2VuZGlmCi0jaWZkZWYgSlNDX0dMSUJfQVBJX0VOQUJM
RUQKLSAgICAsIGFwaVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+PigpKQotICAgICwgY2Fs
bGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6
Y3JlYXRlPEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Pj4oKSkKLSAg
ICAsIGpzY0NhbGxiYWNrRnVuY3Rpb25IZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNDQ2FsbGJhY2tGdW5jdGlvbj4oKSkKLSNlbmRpZgotICAgICwgaW50bENvbGxhdG9ySGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKLSAgICAs
IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRsRGlzcGxheU5hbWVzSGVhcENlbGxUeXBl
KElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEaXNwbGF5TmFtZXM+KCkpCi0gICAgLCBpbnRs
TGlzdEZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTGlzdEZv
cm1hdD4oKSkKLSAgICAsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bExvY2FsZT4oKSkKLSAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKLSAgICAsIGludGxQ
bHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFs
UnVsZXM+KCkpCi0gICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCi0gICAgLCBpbnRs
U2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxT
ZWdtZW50SXRlcmF0b3I+KCkpCi0gICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCi0gICAgLCBpbnRsU2VnbWVudHNI
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRzPigpKQotI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCi0g
ICAgLCB3ZWJBc3NlbWJseUV4Y2VwdGlvbkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1dlYkFzc2VtYmx5RXhjZXB0aW9uPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0aW9u
PigpKQotICAgICwgd2ViQXNzZW1ibHlHbG9iYWxIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8SlNXZWJBc3NlbWJseUdsb2JhbD4oKSkKLSAgICAsIHdlYkFzc2VtYmx5SW5zdGFu
Y2VIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseUluc3Rh
bmNlPigpKQotICAgICwgd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxU
eXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseU1lbW9yeT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5TW9k
dWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlNb2R1
bGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseU1vZHVsZVJlY29yZD4oKSkKLSAgICAsIHdlYkFz
c2VtYmx5VGFibGVIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNXZWJBc3Nl
bWJseVRhYmxlPigpKQotICAgICwgd2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SlNXZWJBc3NlbWJseVRhZz4oKSkKLSNlbmRpZgotICAgICwgcHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIs
IGhlYXAsICphdXhpbGlhcnlIZWFwQ2VsbFR5cGUsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9y
LmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsICphdXhpbGlhcnlIZWFw
Q2VsbFR5cGUsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5
NDYKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEluZGV4aW5nSGVhZGVyIiwg
aGVhcCwgKmltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZSwganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4N2E5NDUzMDAKLSAgICAsIGNlbGxTcGFjZSgiSlNDZWxs
IiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHhhZGZiNWE3OQotICAgICwgdmFyaWFibGVTaXplZENlbGxTcGFjZSgiVmFyaWFibGUg
U2l6ZWQgSlNDZWxsIiwgaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIGZhc3RNYWxsb2NBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHhiY2Q3NjljYwotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3Bh
Y2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgKmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDRmNWVkN2E5Ci0g
ICAgLCBhcnJheVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBl
LCBKU0FycmF5KQotICAgICwgYmlnSW50U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNl
bGxIZWFwQ2VsbFR5cGUsIEpTQmlnSW50KQotICAgICwgY2FsbGVlU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTQ2FsbGVlKQotICAgICwgY2xvbmVkQXJn
dW1lbnRzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIENs
b25lZEFyZ3VtZW50cykKLSAgICAsIGN1c3RvbUdldHRlclNldHRlclNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBDdXN0b21HZXR0ZXJTZXR0ZXIpCi0gICAg
LCBkYXRlSW5zdGFuY2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGF0ZUluc3RhbmNl
SGVhcENlbGxUeXBlLCBEYXRlSW5zdGFuY2UpCi0gICAgLCBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0
ZXJTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgRE9NQXR0
cmlidXRlR2V0dGVyU2V0dGVyKQotICAgICwgZXhjZXB0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEV4Y2VwdGlvbikKLSAgICAs
IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAq
Y2VsbEhlYXBDZWxsVHlwZSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkgLy8gSGFzaDoweDdi
NzMwYjIwCi0gICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxs
SGVhcENlbGxUeXBlLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKLSAgICAsIGdldHRl
clNldHRlclNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsICpjZWxsSGVhcENlbGxUeXBlLCBH
ZXR0ZXJTZXR0ZXIpCi0gICAgLCBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCAqZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50SGVhcENlbGxUeXBlLCBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudCkKLSAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgSW50ZXJuYWxGdW5jdGlv
bikgLy8gSGFzaDoweGY4NDVjNDY0Ci0gICAgLCBqc1Byb3h5U3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJveHkpCi0gICAgLCBuYXRpdmVFeGVjdXRh
YmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUsIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQotICAgICwgbnVtYmVy
T2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIE51
bWJlck9iamVjdCkKLSAgICAsIHBsYWluT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTTm9uRmluYWxPYmplY3QpIC8vIE1haW5seSB1c2VkIGZv
ciBwcm90b3R5cGVzLgotICAgICwgcHJvbWlzZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
ICpjZWxsSGVhcENlbGxUeXBlLCBKU1Byb21pc2UpCi0gICAgLCBwcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcikKLSAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUHJvcGVydHlUYWJs
ZSkgLy8gSGFzaDoweGM2YmM5ZjEyCi0gICAgLCByZWdFeHBTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgUmVnRXhwKQotICAgICwgcmVn
RXhwT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUs
IFJlZ0V4cE9iamVjdCkKLSAgICAsIHJvcGVTdHJpbmdTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCAqc3RyaW5nSGVhcENlbGxUeXBlLCBKU1JvcGVTdHJpbmcpCi0gICAgLCBzY29wZWRBcmd1
bWVudHNTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqY2VsbEhlYXBDZWxsVHlwZSwgU2Nv
cGVkQXJndW1lbnRzKQotICAgICwgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTcGFyc2VBcnJheVZh
bHVlTWFwKQotICAgICwgc3RyaW5nU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKnN0cmlu
Z0hlYXBDZWxsVHlwZSwgSlNTdHJpbmcpIC8vIEhhc2g6MHg5MGNmNzU4ZgotICAgICwgc3RyaW5n
T2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0
cmluZ09iamVjdCkKLSAgICAsIHN0cnVjdHVyZUNoYWluU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgKmNlbGxIZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZUNoYWluKQotICAgICwgc3RydWN0dXJl
UmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAotICAgICwg
c3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIFN0cnVjdHVyZSkgLy8gSGFzaDoweDFmMWJjZGNhCi0gICAgLCBicmFuZGVk
U3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUsIEJyYW5kZWRTdHJ1Y3R1cmUpCi0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElT
T19TVUJTUEFDRV9JTklUKGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBTeW1i
b2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAg
LCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBDb2RlQmxvY2spIC8vIEhhc2g6
MHg3N2U2NmVjOQotICAgICwgZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweDVkMTU4ZjMKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NV
QlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFByb2dyYW1F
eGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKLSAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgKmRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNoOjB4ZjZiODI4ZDkK
ICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAgLCB0
b3BFbnRyeUZyYW1lKG51bGxwdHIpCkBAIC0xNTcyLDEzNyArMTM4Nyw2IEBAIHZvaWQgVk06OmVu
c3VyZVNoYWRvd0NoaWNrZW4oKQogICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hh
ZG93Q2hpY2tlbj4oKTsKIH0KIAotI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCi0gICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAotICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyBcCi0gICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKLSAg
ICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgfQotCi0KLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcGlHbG9iYWxPYmplY3RTcGFjZSwgKmFwaUdsb2Jh
bE9iamVjdEhlYXBDZWxsVHlwZSwgSlNBUElHbG9iYWxPYmplY3QpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXBpVmFsdWVXcmFwcGVyU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBKU0FQSVZhbHVlV3JhcHBlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhhcnJheUJ1ZmZlclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNBcnJheUJ1
ZmZlcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhhcnJheUl0ZXJh
dG9yU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU0FycmF5SXRlcmF0b3IpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coYXN5bmNHZW5lcmF0b3JTcGFjZSwgKmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTQXN5bmNHZW5lcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coYmlnSW50NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNC
aWdJbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJp
Z0ludE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgQmlnSW50T2JqZWN0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJpZ1VpbnQ2NEFycmF5U3BhY2UsICpj
ZWxsSGVhcENlbGxUeXBlLCBKU0JpZ1VpbnQ2NEFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGJvb2xlYW5PYmplY3RTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUs
IEJvb2xlYW5PYmplY3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
Ym91bmRGdW5jdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNCb3VuZEZ1bmN0aW9uKSAv
LyBIYXNoOjB4ZDc5MTZkNDEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UsICpjYWxsYmFja0NvbnN0cnVjdG9ySGVhcENlbGxU
eXBlLCBKU0NhbGxiYWNrQ29uc3RydWN0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgKmNhbGxiYWNrR2xvYmFsT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGVi
YwotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0
U3BhY2UsICpjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZSwgSlNDYWxsYmFja09iamVjdDxKU05v
bkZpbmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
dXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCAqY3VzdG9tR2V0dGVyRnVuY3Rpb25IZWFwQ2VsbFR5
cGUsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSwgKmN1c3RvbVNldHRlckZ1bmN0
aW9uSGVhcENlbGxUeXBlLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsICpjZWxsSGVhcENlbGxUeXBl
LCBKU0RhdGFWaWV3KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGRl
YnVnZ2VyU2NvcGVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIERlYnVnZ2VyU2NvcGUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCAq
ZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBk
NGEKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhmbG9hdDMyQXJyYXlT
cGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTRmxvYXQzMkFycmF5KQotRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGZsb2F0NjRBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgSlNGbG9hdDY0QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coZnVuY3Rpb25SYXJlRGF0YVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZSwgRnVuY3Rpb25SYXJlRGF0YSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhnZW5lcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTR2VuZXJhdG9yKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGdsb2JhbE9iamVjdFNwYWNlLCAq
Z2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0dsb2JhbE9iamVjdCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbmplY3RlZFNjcmlwdEhvc3RTcGFjZSwgKmluamVj
dGVkU2NyaXB0SG9zdFNwYWNlSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludDhBcnJh
eVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNJbnQ4QXJyYXkpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50MTZBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgSlNJbnQxNkFycmF5KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGludDMyQXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTSW50MzJBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqYXZhU2NyaXB0Q2FsbEZyYW1lU3Bh
Y2UsICpqYXZhU2NyaXB0Q2FsbEZyYW1lSGVhcENlbGxUeXBlLCBJbnNwZWN0b3I6OkpTSmF2YVNj
cmlwdENhbGxGcmFtZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhq
c01vZHVsZVJlY29yZFNwYWNlLCAqanNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGUsIEpTTW9kdWxl
UmVjb3JkKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG1hcEJ1Y2tl
dFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNNYXA6OkJ1Y2tldFR5cGUpCi1EWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobWFwSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFw
Q2VsbFR5cGUsIEpTTWFwSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cobWFwU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU01hcCkKLURZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSwg
Km1vZHVsZU5hbWVzcGFjZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVu
Y3Rpb25TcGFjZSwgKm5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENlbGxUeXBlLCBKU05hdGl2ZVN0ZEZ1
bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhwcm94eU9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgUHJveHlPYmpl
Y3QpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZva2VT
cGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzY29wZWRBcmd1bWVudHNU
YWJsZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU2NvcGVkQXJndW1lbnRz
VGFibGUpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1Njcmlw
dEZldGNoUGFyYW1ldGVycykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzY3JpcHRGZXRjaGVyU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBKU1Nj
cmlwdEZldGNoZXIpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2V0
QnVja2V0U3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1NldDo6QnVja2V0VHlwZSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJdGVyYXRvclNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNTZXRJdGVyYXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhzZXRTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU2V0KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNoYWRvd1JlYWxtU3BhY2UsICpjZWxs
SGVhcENlbGxUeXBlLCBTaGFkb3dSZWFsbU9iamVjdCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlLCAqY2VsbEhlYXBDZWxs
VHlwZSwgU3RyaWN0RXZhbEFjdGl2YXRpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coc3RyaW5nSXRlcmF0b3JTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTU3Ry
aW5nSXRlcmF0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc291
cmNlQ29kZVNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgSlNTb3VyY2VDb2Rl
KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgU3ltYm9sKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgU3ltYm9sT2JqZWN0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCAqY2VsbEhlYXBDZWxsVHlw
ZSwgVGVtcG9yYWxDYWxlbmRhcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbER1
cmF0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
SW5zdGFudFNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxJbnN0YW50KQotRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2Us
ICpjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsICpjZWxsSGVhcENl
bGxUeXBlLCBUZW1wb3JhbFRpbWVab25lKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVWludDhBcnJh
eSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRB
cnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50OENsYW1wZWRBcnJheSkKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50MTZBcnJheVNwYWNlLCAqY2Vs
bEhlYXBDZWxsVHlwZSwgSlNVaW50MTZBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh1aW50MzJBcnJheVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNVaW50
MzJBcnJheSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1bmxpbmtl
ZEV2YWxDb2RlQmxvY2tTcGFjZSwgKmRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUsIFVubGlu
a2VkRXZhbENvZGVCbG9jaykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNlLCAq
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1NwYWNlLCAqZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSwgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHdlYWtNYXBTcGFjZSwgKndlYWtNYXBIZWFwQ2VsbFR5cGUsIEpTV2Vha01hcCkgLy8gSGFz
aDoweDY2MmIxMmEzCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vh
a1NldFNwYWNlLCAqd2Vha1NldEhlYXBDZWxsVHlwZSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3
ODFiMzAKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0
UmVmU3BhY2UsICpjZWxsSGVhcENlbGxUeXBlLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4
ZWM2OGYxZgotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdpdGhTY29w
ZVNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgSlNXaXRoU2NvcGUpCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZSwgKmZpbmFs
aXphdGlvblJlZ2lzdHJ5Q2VsbFR5cGUsIEpTRmluYWxpemF0aW9uUmVnaXN0cnkpCi0jaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhhcGlXcmFwcGVyT2JqZWN0U3BhY2UsICphcGlXcmFwcGVyT2JqZWN0SGVhcENlbGxUeXBlLCBK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4pCi1EWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cob2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgKm9iakNDYWxs
YmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDow
eDEwZjYxMGI4Ci0jZW5kaWYKLSNpZmRlZiBKU0NfR0xJQl9BUElfRU5BQkxFRAotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGFwaVdyYXBwZXJPYmplY3RTcGFjZSwgKmFw
aVdyYXBwZXJPYmplY3RIZWFwQ2VsbFR5cGUsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc2NDYWxs
YmFja0Z1bmN0aW9uU3BhY2UsICpqc2NDYWxsYmFja0Z1bmN0aW9uSGVhcENlbGxUeXBlLCBKU0ND
YWxsYmFja0Z1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGNhbGxiYWNrQVBJV3JhcHBlckdsb2JhbE9iamVjdFNwYWNlLCAqY2FsbGJhY2tBUElXcmFwcGVy
R2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdD4pCi0jZW5kaWYKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgKmludGxDb2xsYXRvckhlYXBDZWxsVHlwZSwgSW50bENv
bGxhdG9yKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRl
VGltZUZvcm1hdFNwYWNlLCAqaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLCBJbnRsRGF0
ZVRpbWVGb3JtYXQpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bERpc3BsYXlOYW1lc1NwYWNlLCAqaW50bERpc3BsYXlOYW1lc0hlYXBDZWxsVHlwZSwgSW50bERp
c3BsYXlOYW1lcykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRs
TGlzdEZvcm1hdFNwYWNlLCAqaW50bExpc3RGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxMaXN0Rm9y
bWF0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxMb2NhbGVT
cGFjZSwgKmludGxMb2NhbGVIZWFwQ2VsbFR5cGUsIEludGxMb2NhbGUpCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCAqaW50bE51
bWJlckZvcm1hdEhlYXBDZWxsVHlwZSwgSW50bE51bWJlckZvcm1hdCkKLURZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgKmludGxQbHVy
YWxSdWxlc0hlYXBDZWxsVHlwZSwgSW50bFBsdXJhbFJ1bGVzKQotRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgKmludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpCi1E
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRv
clNwYWNlLCAqaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZSwgSW50bFNlZ21lbnRJdGVy
YXRvcikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVu
dGVyU3BhY2UsICppbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudGVyKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCAq
aW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLCBJbnRsU2VnbWVudHMpCi0jaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNt
SUNDYWxsZWVTcGFjZSwgKmNlbGxIZWFwQ2VsbFR5cGUsIEpTVG9XYXNtSUNDYWxsZWUpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tT
cGFjZSwgKndlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUV4Y2VwdGlvblNwYWNlLCAqd2ViQXNzZW1ibHlFeGNlcHRp
b25IZWFwQ2VsbFR5cGUsIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24pCi1EWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCAqd2ViQXNz
ZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDow
eDhiN2MzMmRiCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNz
ZW1ibHlHbG9iYWxTcGFjZSwgKndlYkFzc2VtYmx5R2xvYmFsSGVhcENlbGxUeXBlLCBKU1dlYkFz
c2VtYmx5R2xvYmFsKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdl
YkFzc2VtYmx5SW5zdGFuY2VTcGFjZSwgKndlYkFzc2VtYmx5SW5zdGFuY2VIZWFwQ2VsbFR5cGUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh3ZWJBc3NlbWJseU1lbW9yeVNwYWNlLCAqd2ViQXNzZW1ibHlNZW1vcnlIZWFwQ2Vs
bFR5cGUsIEpTV2ViQXNzZW1ibHlNZW1vcnkpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlNb2R1bGVTcGFjZSwgKndlYkFzc2VtYmx5TW9kdWxlSGVh
cENlbGxUeXBlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3BhY2UsICp3ZWJBc3NlbWJs
eU1vZHVsZVJlY29yZEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpCi1EWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlUYWJsZVNwYWNl
LCAqd2ViQXNzZW1ibHlUYWJsZUhlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhYmxlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5VGFnU3BhY2Us
ICp3ZWJBc3NlbWJseVRhZ0hlYXBDZWxsVHlwZSwgSlNXZWJBc3NlbWJseVRhZykKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
blNwYWNlLCAqY2VsbEhlYXBDZWxsVHlwZSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8v
IEhhc2g6MHhkNGE1ZmYwMQotI2VuZGlmCi0KLSN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1cKLQotI2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5F
X01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAotICAgIElzb1N1YnNwYWNl
KiBWTTo6bmFtZSMjU2xvdygpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7
IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKLSAgICAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsgXAotICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCi0g
ICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCi0gICAgfQotCi1EWU5BTUlDX1NQQUNF
X0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsICpkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlk
Ci1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3BhY2UsICpkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDY1MDZmYTNjCi0KLSN1bmRlZiBEWU5BTUlDX1NQQUNF
X0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCi0KIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVj
a2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDIz
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJD
YWxsZWVCaXRzLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgotI2luY2x1
ZGUgIkNvbXBsZXRlU3Vic3BhY2UuaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAj
aW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0
LmgiCi0jaW5jbHVkZSAiRGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRXZl
bnRMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIgotI2lu
Y2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVn
cml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgotI2luY2x1ZGUgIklzb0NlbGxTZXQuaCIK
LSNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPTkF0
b21TdHJpbmdDYWNoZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2lu
Y2x1ZGUgIk1pY3JvdGFzay5oIgorI2luY2x1ZGUgIk5hdGl2ZUZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJTdHJvbmcuaCIKQEAgLTU4LDEwICs1Myw4IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLSNpbmNs
dWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGVN
YXRoLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtl
ZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjksMTEgKzYyLDkgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtODEsMTAgKzcyLDYgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCi0jaW5jbHVkZSA8d3Rm
L1N0YWNrVHJhY2UuaD4KLSNlbmRpZgotCiAvLyBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBm
b3IgcGxhdGZvcm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gVGhpcyBoYXMgdG8gbWF0Y2ggZXhh
Y3RseSB3aGF0IHdlCiAvLyBoYXZlIGluIEpTQmFzZS5oLgogI2lmICFkZWZpbmVkKEpTQ19PQkpD
X0FQSV9FTkFCTEVEKQpAQCAtOTgsMTYgKzg1LDE3IEBACiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IFJ1bkxvb3A7CiBjbGFzcyBTaW1wbGVTdGF0czsKK2NsYXNzIFN0YWNrVHJhY2U7CiB9IC8vIG5h
bWVzcGFjZSBXVEYKIHVzaW5nIFdURjo6U2ltcGxlU3RhdHM7Cit1c2luZyBXVEY6OlN0YWNrVHJh
Y2U7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCYXNpY0Jsb2NrTG9jYXRpb247CitjbGFz
cyBBcmdMaXN0OwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogY2xhc3MgQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTsKIGNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIENhbGxMaW5rSW5mbzsKIGVu
dW0gY2xhc3MgQ2FsbE1vZGU7CiBzdHJ1Y3QgQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU7CiBj
bGFzcyBDb2RlQmxvY2s7CkBAIC0xMTYsMTAxICsxMDQsNDEgQEAgY2xhc3MgQ29tbW9uSWRlbnRp
ZmllcnM7CiBjbGFzcyBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA7CiBjbGFzcyBDb25zZXJ2YXRp
dmVSb290czsKIGNsYXNzIENvbnRyb2xGbG93UHJvZmlsZXI7Ci1jbGFzcyBDdXN0b21HZXR0ZXJT
ZXR0ZXI7Ci1jbGFzcyBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI7Ci1jbGFzcyBEYXRlSW5zdGFu
Y2U7Ci1jbGFzcyBFcnJvckluc3RhbmNlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhjZXB0
aW9uU2NvcGU7Ci1jbGFzcyBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNz
IEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLWNsYXNzIEhhbmRsZVN0YWNrOworY2xh
c3MgRnV6emVyQWdlbnQ7CiBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOwogY2xhc3MgSGVhcEFu
YWx5emVyOwogY2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIElu
dGVycHJldGVyOwogY2xhc3MgSW50bENhY2hlOwotY2xhc3MgSW50bENvbGxhdG9yOwotY2xhc3Mg
SW50bERhdGVUaW1lRm9ybWF0OwotY2xhc3MgSW50bERpc3BsYXlOYW1lczsKLWNsYXNzIEludGxM
aXN0Rm9ybWF0OwotY2xhc3MgSW50bExvY2FsZTsKLWNsYXNzIEludGxOdW1iZXJGb3JtYXQ7Ci1j
bGFzcyBJbnRsUGx1cmFsUnVsZXM7Ci1jbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OwotY2xh
c3MgSW50bFNlZ21lbnRJdGVyYXRvcjsKLWNsYXNzIEludGxTZWdtZW50ZXI7Ci1jbGFzcyBJbnRs
U2VnbWVudHM7Ci1jbGFzcyBKU0FQSUdsb2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBlckds
b2JhbE9iamVjdDsKLWNsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsKLWNsYXNzIEpTQ0NhbGxiYWNr
RnVuY3Rpb247Ci1jbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7CiBjbGFzcyBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7Ci1jbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsK
LWNsYXNzIEpTTW9kdWxlUmVjb3JkOwotY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsKLWNsYXNz
IEpTTm9uRmluYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTUHJvbWlzZTsKIGNs
YXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKLWNsYXNzIEpTUnVuTG9vcFRpbWVyOwotY2xh
c3MgSlNXZWFrTWFwOwotY2xhc3MgSlNXZWFrU2V0OwotY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVC
bG9jazsKLWNsYXNzIEpTV2ViQXNzZW1ibHlHbG9iYWw7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U7Ci1jbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwotY2xhc3MgSlNXZWJBc3NlbWJseU1v
ZHVsZTsKLWNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsKIGNsYXNzIEpJVFNpemVTdGF0aXN0aWNz
OwogY2xhc3MgSklUVGh1bmtzOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKLWNsYXNzIE9iakNDYWxsYmFja0Z1bmN0aW9uOwogY2xhc3MgRGVm
ZXJyZWRXb3JrVGltZXI7CiBjbGFzcyBSZWdFeHA7CiBjbGFzcyBSZWdFeHBDYWNoZTsKIGNsYXNz
IFJlZ2lzdGVyOwotY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiAjaWYgRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hh
ZG93Q2hpY2tlbjsKIGNsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwot
Y2xhc3MgU3RhY2tGcmFtZTsKIGNsYXNzIFN0cnVjdHVyZTsKLSNpZiBFTkFCTEUoUkVHRVhQX1RS
QUNJTkcpCi1jbGFzcyBSZWdFeHA7Ci0jZW5kaWYKIGNsYXNzIFN5bWJvbDsKLWNsYXNzIFRlbXBv
cmFsRHVyYXRpb247Ci1jbGFzcyBUZW1wb3JhbEluc3RhbnQ7CiBjbGFzcyBUeXBlZEFycmF5Q29u
dHJvbGxlcjsKLWNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwotY2xhc3MgVW5saW5rZWRFdmFsQ29k
ZUJsb2NrOwotY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s7Ci1jbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7
Ci1jbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7Ci1jbGFzcyBUZW1w
b3JhbENhbGVuZGFyOwotY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7Ci1jbGFzcyBUZW1wb3JhbFRp
bWVab25lOwotY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9m
aWxlcjsKIGNsYXNzIFR5cGVQcm9maWxlckxvZzsKIGNsYXNzIFdhdGNoZG9nOwotY2xhc3MgV2F0
Y2hwb2ludDsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7Ci1jbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9u
OwotY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkg
JiYgQVNTRVJUX0VOQUJMRUQKICNkZWZpbmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04g
MQpAQCAtMjIwLDEwICsxNDgsNiBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsKIAog
Y29uc3RleHByIGJvb2wgdmFsaWRhdGVERkdEb2VzR0MgPSBFTkFCTEVfREZHX0RPRVNfR0NfVkFM
SURBVElPTjsKIAotY2xhc3MgSXNvSGVhcENlbGxUeXBlOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGU+IGNsYXNzIElzb0lubGluZWRIZWFwQ2VsbFR5cGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBQ
YXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7Ci0KICNpZiBFTkFCTEUoRlRMX0pJVCkKIG5h
bWVzcGFjZSBGVEwgewogY2xhc3MgVGh1bmtzOwpAQCAtMjM1LDE0ICsxNTksOSBAQCBjbGFzcyBE
YXRhYmFzZTsKIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgU2lnbmF0dXJlOwogfQotbmFtZXNw
YWNlIFlhcnIgewotY2xhc3MgTWF0Y2hpbmdDb250ZXh0SG9sZGVyOwotfQogCiBzdHJ1Y3QgRW50
cnlGcmFtZTsKLXN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci1zdHJ1Y3Qg
VmFsdWVQcm9maWxlOwogCiBjbGFzcyBRdWV1ZWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShRdWV1ZWRUYXNrKTsKQEAgLTI2MSw4ICsxODAsNiBAQCBwcml2YXRlOgogICAgIFJlZjxN
aWNyb3Rhc2s+IG1fbWljcm90YXNrOwogfTsKIAotY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7Ci0K
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFZNKTsKIAogI2lmIENPTVBJ
TEVSKE1TVkMpCkBAIC0zNTcsMTEgKzI3NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRnV6
emVyQWdlbnQqIGZ1enplckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdXp6ZXJBZ2VudC5nZXQo
KTsgfQotICAgIHZvaWQgc2V0RnV6emVyQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEZ1enplckFnZW50
PiYmIGZ1enplckFnZW50KQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUgRnV6emVyQWdlbnQgY2FuIGJlIHNwZWNpZmll
ZCBhdCBhIHRpbWUuIik7Ci0gICAgICAgIG1fZnV6emVyQWdlbnQgPSBXVEZNb3ZlKGZ1enplckFn
ZW50KTsKLSAgICB9CisgICAgdm9pZCBzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6
emVyQWdlbnQ+JiYpOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mSURzKCkgeyByZXR1
cm4gc19udW1iZXJPZklEcy5sb2FkKCk7IH0KICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KQEAgLTQxMywxNDUgKzMyNiw1OCBAQCBwcml2YXRlOgogCiBwdWJsaWM6CiAg
ICAgSGVhcCBoZWFwOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4gZmFzdE1hbGxvY0FsbG9jYXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBwcmltaXRpdmVHaWdhY2FnZUFsbG9j
YXRvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PiBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3I7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENl
bGxUeXBlPiBhdXhpbGlhcnlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhlYXBD
ZWxsVHlwZT4gaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxIZWFwQ2VsbFR5cGU+IGNlbGxIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBhcGlHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tDb25zdHJ1Y3Rvckhl
YXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFj
a0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBjdXN0b21HZXR0ZXJGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjdXN0b21TZXR0ZXJGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBkYXRlSW5zdGFu
Y2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZXJy
b3JJbnN0YW5jZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBmaW5hbGl6YXRpb25SZWdpc3RyeUNlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGdsb2JhbExleGljYWxFbnZpcm9ubWVudEhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBnbG9iYWxPYmplY3RIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW5qZWN0ZWRTY3JpcHRI
b3N0U3BhY2VIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gamF2YVNjcmlwdENhbGxGcmFtZUhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBqc01vZHVsZVJlY29yZEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBtb2R1bGVOYW1lc3BhY2VPYmplY3RIZWFwQ2VsbFR5
cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gbmF0aXZlU3RkRnVuY3Rp
b25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0lubGluZWRIZWFwQ2VsbFR5
cGU8SlNTdHJpbmc+PiBzdHJpbmdIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gd2Vha01hcEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiB3ZWFrU2V0SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4gZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlOwotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxs
VHlwZTsKLSNlbmRpZgotI2lmZGVmIEpTQ19HTElCX0FQSV9FTkFCTEVECi0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpV3JhcHBlck9iamVjdEhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBjYWxsYmFja0FQSVdyYXBwZXJHbG9i
YWxPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4ganNjQ2FsbGJhY2tGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSNlbmRpZgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2Vs
bFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERpc3BsYXlO
YW1lc0hlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsTGlzdEZvcm1hdEhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29I
ZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRI
ZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNl
Z21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50c0hlYXBDZWxsVHlwZTsKLSNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gd2ViQXNzZW1ibHlFeGNlcHRpb25IZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUdsb2JhbEhlYXBD
ZWxsVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJs
eUluc3RhbmNlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IHdlYkFzc2VtYmx5TWVtb3J5SGVhcENlbGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlSGVhcENlbGxUeXBlOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkSGVhcENl
bGxUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5
VGFibGVIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
d2ViQXNzZW1ibHlUYWdIZWFwQ2VsbFR5cGU7Ci0jZW5kaWYKKworICAgIGNvbnN0IEhlYXBDZWxs
VHlwZSYgY2VsbEhlYXBDZWxsVHlwZSgpIHsgcmV0dXJuIGhlYXAuY2VsbEhlYXBDZWxsVHlwZTsg
fQorICAgIGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlJiBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSB7IHJldHVybiBoZWFwLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZTsgfTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJ
VFNpemVTdGF0aXN0aWNzPiBqaXRTaXplU3RhdGlzdGljczsKICNlbmRpZgogICAgIAotICAgIENv
bXBsZXRlU3Vic3BhY2UgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgLy8gVHlwZWQg
YXJyYXlzLCBzdHJpbmdzLCBiaXR2ZWN0b3JzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1
YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBCdXR0ZXJmbGllcywgYXJy
YXlzIG9mIEpTVmFsdWVzLCBldGMgZ28gaGVyZS4KLSAgICBDb21wbGV0ZVN1YnNwYWNlIGltbXV0
YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyAvLyBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSBnb2VzIGhlcmUuCi0KLSAgICAvLyBXZSBtYWtlIGNyb3NzLWN1dHRpbmcgYXNz
dW1wdGlvbnMgYWJvdXQgdHlwZWQgYXJyYXlzIGJlaW5nIGluIHRoZSBwcmltaXRpdmUgR2lnYWNh
Z2UgYW5kIGJ1dHRlcmZsaWVzCi0gICAgLy8gYmVpbmcgaW4gdGhlIEpTVmFsdWUgZ2lnYWNhZ2Uu
IEZvciBzb21lIHR5cGVzLCBpdCdzIHN1cGVyIG9idmlvdXMgd2hlcmUgdGhleSBzaG91bGQgZ28s
IGFuZCBzbyB3ZQotICAgIC8vIGNhbiBoYXJkY29kZSB0aGF0IGZhY3QuIEJ1dCBzb21ldGltZXMg
aXQncyBub3QgY2xlYXIsIHNvIHdlIGFic3RyYWN0IGl0IGJ5IGhhdmluZyBhIEdpZ2FjYWdlOjpL
aW5kCi0gICAgLy8gY29uc3RhbnQgc29tZXdoZXJlLgotICAgIC8vIEZJWE1FOiBNYXliZSBpdCB3
b3VsZCBiZSBiZXR0ZXIgaWYgZXZlcnlvbmUgYWJzdHJhY3RlZCB0aGlzPwotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNDgKLSAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6Oktp
bmQga2luZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIEdp
Z2FjYWdlOjpQcmltaXRpdmU6Ci0gICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKLSAgICAgICAg
ICAgIHJldHVybiBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKLSAgICAgICAgY2FzZSBH
aWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBwcmlt
aXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwotICAgIH0KLSAgICAKLSAgICAvLyBXaGVuZXZl
ciBwb3NzaWJsZSwgdXNlIHN1YnNwYWNlRm9yPENlbGxUeXBlPih2bSkgdG8gZ2V0IG9uZSBvZiB0
aGVzZSBzdWJzcGFjZXMuCi0gICAgQ29tcGxldGVTdWJzcGFjZSBjZWxsU3BhY2U7Ci0gICAgQ29t
cGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFj
ZSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJl
Y3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGlu
dG8gSlNWYWx1ZU9PQiBjZWxscyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjg1OAotICAgIENvbXBsZXRlU3Vi
c3BhY2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7Ci0gICAgCi0gICAgSXNvU3Vic3BhY2UgYXJy
YXlTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBiaWdJbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBj
YWxsZWVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBjbG9uZWRBcmd1bWVudHNTcGFjZTsKLSAgICBJ
c29TdWJzcGFjZSBjdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkYXRl
SW5zdGFuY2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJT
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBleGNlcHRpb25TcGFjZTsKLSAgICBJc29TdWJzcGFjZSBl
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgZnVuY3Rpb25T
cGFjZTsKLSAgICBJc29TdWJzcGFjZSBnZXR0ZXJTZXR0ZXJTcGFjZTsKLSAgICBJc29TdWJzcGFj
ZSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBpbnRlcm5h
bEZ1bmN0aW9uU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UganNQcm94eVNwYWNlOwotICAgIElzb1N1
YnNwYWNlIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBudW1iZXJPYmpl
Y3RTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwbGFpbk9iamVjdFNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHByb21pc2VTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2UgcHJvcGVydHlUYWJsZVNwYWNlOwotICAgIElzb1N1YnNw
YWNlIHJlZ0V4cFNwYWNlOwotICAgIElzb1N1YnNwYWNlIHJlZ0V4cE9iamVjdFNwYWNlOwotICAg
IElzb1N1YnNwYWNlIHJvcGVTdHJpbmdTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzY29wZWRBcmd1
bWVudHNTcGFjZTsKLSAgICBJc29TdWJzcGFjZSBzcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7Ci0g
ICAgSXNvU3Vic3BhY2Ugc3RyaW5nU3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RyaW5nT2JqZWN0
U3BhY2U7Ci0gICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlQ2hhaW5TcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBzdHJ1Y3R1cmVSYXJlRGF0YVNwYWNlOwotICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZVNw
YWNlOwotICAgIElzb1N1YnNwYWNlIGJyYW5kZWRTdHJ1Y3R1cmVTcGFjZTsKLSAgICBJc29TdWJz
cGFjZSBzeW1ib2xUYWJsZVNwYWNlOworICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVTdWJzcGFj
ZSYgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpIHsgcmV0dXJuIGhlYXAucHJpbWl0
aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVT
dWJzcGFjZSYganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKSB7IHJldHVybiBoZWFwLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0
ZVN1YnNwYWNlJiBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuaW1tdXRhYmxlQnV0dGVyZmx5SlNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdl
QXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6OktpbmQga2luZCkgeyByZXR1cm4gaGVhcC5naWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKGtpbmQpOyB9CisgICAgQUxXQVlTX0lOTElORSBDb21wbGV0ZVN1YnNw
YWNlJiBjZWxsU3BhY2UoKSB7IHJldHVybiBoZWFwLmNlbGxTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgQ29tcGxldGVTdWJzcGFjZSYgdmFyaWFibGVTaXplZENlbGxTcGFjZSgpIHsgcmV0dXJu
IGhlYXAudmFyaWFibGVTaXplZENlbGxTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgQ29tcGxl
dGVTdWJzcGFjZSYgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoKSB7IHJldHVybiBoZWFwLmRlc3Ry
dWN0aWJsZU9iamVjdFNwYWNlOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBh
cnJheVNwYWNlKCkgeyByZXR1cm4gaGVhcC5hcnJheVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgYmlnSW50U3BhY2UoKSB7IHJldHVybiBoZWFwLmJpZ0ludFNwYWNlOyB9
CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2FsbGVlU3BhY2UoKSB7IHJldHVybiBo
ZWFwLmNhbGxlZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY2xvbmVk
QXJndW1lbnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLmNsb25lZEFyZ3VtZW50c1NwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2UoKSB7
IHJldHVybiBoZWFwLmN1c3RvbUdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBJc29TdWJzcGFjZSYgZGF0ZUluc3RhbmNlU3BhY2UoKSB7IHJldHVybiBoZWFwLmRhdGVJbnN0
YW5jZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVybiBoZWFwLmRvbUF0dHJpYnV0ZUdldHRlclNldHRl
clNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZXhjZXB0aW9uU3BhY2Uo
KSB7IHJldHVybiBoZWFwLmV4Y2VwdGlvblNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29T
dWJzcGFjZSYgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5l
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1
YnNwYWNlJiBmdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5mdW5jdGlvblNwYWNlOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgZ2V0dGVyU2V0dGVyU3BhY2UoKSB7IHJldHVy
biBoZWFwLmdldHRlclNldHRlclNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2UoKSB7IHJldHVybiBoZWFwLmdsb2JhbExl
eGljYWxFbnZpcm9ubWVudFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYg
aW50ZXJuYWxGdW5jdGlvblNwYWNlKCkgeyByZXR1cm4gaGVhcC5pbnRlcm5hbEZ1bmN0aW9uU3Bh
Y2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBqc1Byb3h5U3BhY2UoKSB7IHJl
dHVybiBoZWFwLmpzUHJveHlTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2Um
IG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAubmF0aXZlRXhlY3V0YWJsZVNw
YWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgbnVtYmVyT2JqZWN0U3BhY2Uo
KSB7IHJldHVybiBoZWFwLm51bWJlck9iamVjdFNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJ
c29TdWJzcGFjZSYgcGxhaW5PYmplY3RTcGFjZSgpIHsgcmV0dXJuIGhlYXAucGxhaW5PYmplY3RT
cGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHByb21pc2VTcGFjZSgpIHsg
cmV0dXJuIGhlYXAucHJvbWlzZVNwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFj
ZSYgcHJvcGVydHlOYW1lRW51bWVyYXRvclNwYWNlKCkgeyByZXR1cm4gaGVhcC5wcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBwcm9w
ZXJ0eVRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb3BlcnR5VGFibGVTcGFjZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cFNwYWNlKCkgeyByZXR1cm4gaGVhcC5y
ZWdFeHBTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIHJlZ0V4cE9iamVj
dFNwYWNlKCkgeyByZXR1cm4gaGVhcC5yZWdFeHBPYmplY3RTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHJvcGVTdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAucm9wZVN0
cmluZ1NwYWNlOyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc2NvcGVkQXJndW1l
bnRzU3BhY2UoKSB7IHJldHVybiBoZWFwLnNjb3BlZEFyZ3VtZW50c1NwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3BhcnNlQXJyYXlWYWx1ZU1hcFNwYWNlKCkgeyByZXR1
cm4gaGVhcC5zcGFyc2VBcnJheVZhbHVlTWFwU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b1N1YnNwYWNlJiBzdHJpbmdTcGFjZSgpIHsgcmV0dXJuIGhlYXAuc3RyaW5nU3BhY2U7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNlJiBzdHJpbmdPYmplY3RTcGFjZSgpIHsgcmV0dXJu
IGhlYXAuc3RyaW5nT2JqZWN0U3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElzb1N1YnNwYWNl
JiBzdHJ1Y3R1cmVDaGFpblNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1cmVDaGFpblNwYWNl
OyB9CisgICAgQUxXQVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3RydWN0dXJlUmFyZURhdGFTcGFj
ZSgpIHsgcmV0dXJuIGhlYXAuc3RydWN0dXJlUmFyZURhdGFTcGFjZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgSXNvU3Vic3BhY2UmIHN0cnVjdHVyZVNwYWNlKCkgeyByZXR1cm4gaGVhcC5zdHJ1Y3R1
cmVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgSXNvU3Vic3BhY2UmIGJyYW5kZWRTdHJ1Y3R1
cmVTcGFjZSgpIHsgcmV0dXJuIGhlYXAuYnJhbmRlZFN0cnVjdHVyZVNwYWNlOyB9CisgICAgQUxX
QVlTX0lOTElORSBJc29TdWJzcGFjZSYgc3ltYm9sVGFibGVTcGFjZSgpIHsgcmV0dXJuIGhlYXAu
c3ltYm9sVGFibGVTcGFjZTsgfQogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIobmFtZSkgXAogICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IFwKLSAg
ICBJc29TdWJzcGFjZSogbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKG1fIyNuYW1lIHx8
IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAgcmV0
dXJuIG1fIyNuYW1lLmdldCgpOyBcCi0gICAgICAgIHJldHVybiBuYW1lIyNTbG93KCk7IFwKLSAg
ICB9IFwKLSAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZSogbmFtZSMjU2xvdygpOyBc
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtXyMjbmFtZTsKLQorICAgIEFMV0FZ
U19JTkxJTkUgSXNvU3Vic3BhY2UqIG5hbWUoKSB7IHJldHVybiBoZWFwLm5hbWU8bW9kZT4oKTsg
fQogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKGFwaVdyYXBwZXJPYmplY3RTcGFjZSkKQEAgLTY1Nyw3NCArNDgzLDIzIEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjdW5kZWYgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUgotICAgIAotICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRo
Q29uc3RyYWludHM7Ci0gICAgSXNvQ2VsbFNldCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dp
dGhGaW5hbGl6ZXJzOworCisgICAgQUxXQVlTX0lOTElORSBJc29DZWxsU2V0JiBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cygpIHsgcmV0dXJuIGhlYXAuZXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7IH0KKyAgICBBTFdBWVNfSU5MSU5FIElz
b0NlbGxTZXQmIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnMoKSB7IHJl
dHVybiBoZWFwLmV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VzV2l0aEZpbmFsaXplcnM7IH0KIAog
I2RlZmluZSBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihuYW1lKSBcCiAgICAg
dGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gXAotICAgIElzb1N1YnNwYWNlKiBuYW1lKCkg
XAotICAgIHsgXAotICAgICAgICBpZiAoYXV0byogc3BhY2VBbmRTZXQgPSBtXyMjbmFtZS5nZXQo
KSkgXAotICAgICAgICAgICAgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IFwKLSAgICAgICAg
aWYgKG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgXAotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7IFwKLSAgICAgICAgcmV0dXJuIG5hbWUjI1Nsb3coKTsgXAotICAgIH0g
XAotICAgIElzb1N1YnNwYWNlKiBuYW1lIyNTbG93KCk7IFwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3BhY2VBbmRTZXQ+IG1fIyNuYW1lOwotICAgIAotICAgIHN0cnVjdCBTcGFjZUFuZFNldCB7Ci0g
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBBTFdBWVNfSU5MSU5F
IElzb1N1YnNwYWNlKiBuYW1lKCkgeyByZXR1cm4gaGVhcC5uYW1lPG1vZGU+KCk7IH0KIAotICAg
ICAgICBJc29TdWJzcGFjZSBzcGFjZTsKLSAgICAgICAgSXNvQ2VsbFNldCBzZXQ7Ci0gICAgICAg
IAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIFNwYWNl
QW5kU2V0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLSAgICAgICAgICAgIDogc3BhY2Uoc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKLSAgICAgICAgICAgICwgc2V0KHNw
YWNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJc29D
ZWxsU2V0JiBzZXRGb3IoU3Vic3BhY2UmIHNwYWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKmJpdHdpc2VfY2FzdDxJc29DZWxsU2V0Kj4oCi0gICAgICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PGNoYXIqPigmc3BhY2UpIC0KLSAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0Yo
U3BhY2VBbmRTZXQsIHNwYWNlKSArCi0gICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNw
YWNlQW5kU2V0LCBzZXQpKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgU3BhY2VBbmRT
ZXQgY29kZUJsb2NrU3BhY2U7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZv
aWQgZm9yRWFjaENvZGVCbG9ja1NwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAg
ICAvLyBUaGlzIHNob3VsZCBub3QgaW5jbHVkZSB3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlIGJl
Y2F1c2UgdGhpcyBpcyBhYm91dCBzdWJzY2xhc3NlcyBvZgotICAgICAgICAvLyBKU0M6OkNvZGVC
bG9jay4KLSAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7Ci0gICAgfQorICAgIHVzaW5nIFNw
YWNlQW5kU2V0ID0gSGVhcDo6U3BhY2VBbmRTZXQ7CisgICAgQUxXQVlTX0lOTElORSBTcGFjZUFu
ZFNldCYgY29kZUJsb2NrU3BhY2UoKSB7IHJldHVybiBoZWFwLmNvZGVCbG9ja1NwYWNlOyB9CiAK
ICAgICBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUihldmFsRXhlY3V0YWJsZVNw
YWNlKQogICAgIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSKG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25FeGVjdXRhYmxlU3Bh
Y2U7Ci0gICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsKLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhlY3V0YWJsZVNwYWNl
KGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAgewotICAgICAgICBpZiAobV9ldmFsRXhlY3V0YWJsZVNw
YWNlKQotICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNwYWNlKTsKLSAgICAgICAg
ZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7Ci0gICAgICAgIGlmIChtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3BhY2UpCi0gICAgICAgICAgICBmdW5jKCptX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlU3BhY2UpOwotICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOwotICAg
IH0KLQotICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2U7CiAK
LSN1bmRlZiBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUgorICAgIEFMV0FZU19J
TkxJTkUgU3BhY2VBbmRTZXQmIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVh
cC5mdW5jdGlvbkV4ZWN1dGFibGVTcGFjZTsgfQorICAgIEFMV0FZU19JTkxJTkUgU3BhY2VBbmRT
ZXQmIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UoKSB7IHJldHVybiBoZWFwLnByb2dyYW1FeGVjdXRh
YmxlU3BhY2U7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFNwYWNlQW5kU2V0JiB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlKCkgeyByZXR1cm4gaGVhcC51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZVNwYWNlOyB9CiAKICAgICBWTVR5cGUgdm1UeXBlOwogICAgIENsaWVudERhdGEqIGNsaWVu
dERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUlubGluZXMuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1Jbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRW50cnlGcmFtZS5oIgorI2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVk
ZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2F0Y2hk
b2cuaCIKQEAgLTkwLDQgKzkxLDEwIEBAIGlubGluZSBDYWxsRnJhbWUqIFZNOjp0b3BKU0NhbGxG
cmFtZSgpIGMKICAgICByZXR1cm4gZnJhbWU7CiB9CiAKK2lubGluZSB2b2lkIFZNOjpzZXRGdXp6
ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2Z1enplckFnZW50LCAiT25seSBvbmUg
RnV6emVyQWdlbnQgY2FuIGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIik7CisgICAgbV9mdXp6ZXJB
Z2VudCA9IFdURk1vdmUoZnV6emVyQWdlbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWFrTWFwUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2Vha01h
cFByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSwgQmFzZSk7
Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYWtPYmplY3RSZWZQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtTZXRQcm90b3R5cGUuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFdlYWtTZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWFrU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTRG9sbGFyVk1D
YWxsRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTIyMyw3ICsyMjMsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAg
ewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxs
U3BhY2UoKTsKICAgICB9CiAKICAgICBSb290KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290
LmdldCgpOyB9CkBAIC0yODcsNyArMjg3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVj
dGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RT
cGFjZSgpOwogICAgIH0KIAogICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
QEAgLTM1NCw3ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU2ltcGxlT2Jq
ZWN0KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNDI2
LDcgKzQyNiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1
cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQpAQCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNTkwLDcgKzU5MCw3IEBAIElHTk9SRV9X
QVJOSU5HU19FTkQKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLmNl
bGxTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTc3Miw3
ICs3NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNw
YWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKQEAgLTg3Miw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICByZXR1cm4gJnZtLmNlbGxTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2UoKTsKICAg
ICB9CiAKICAgICBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk0OCw3ICs5NDgsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyBDb21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewotICAg
ICAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2Uo
KTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTE1
ODUsNyArMTU4NSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKICAgICB7Ci0gICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLmNlbGxTcGFjZSgpOwogICAgIH0KIAogICAgIEpTVGVzdEN1c3RvbUdldHRlclNl
dHRlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTgzOCw3ICsxODM4LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
LSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIGNsYXNzIENs
aWVudCBmaW5hbCA6IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgewpAQCAtMTkz
Myw3ICsxOTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5kZXN0cnVjdGlibGVPYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIFdhc21TdHJlYW1pbmdDb21waWxlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBXYXNtOjpDb21waWxlck1vZGUgY29tcGlsZXJNb2RlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0uY2VsbFNwYWNlKCk7CiAgICAgfQogICAgIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV2ViQXNz
ZW1ibHksIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBK
U1dlYkFzc2VtYmx5KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiAyODYzMDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUV4Y2VwdGlvblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFdlYkFzc2Vt
Ymx5RXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUds
b2JhbFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNz
ZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
IAogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaAkocmV2
aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUu
aAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VGFnUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoV2ViQXNzZW1ibHlUYWdQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAgIHN0YXRp
YyBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4MSBAQAorMjAyMS0x
MS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBTdWJz
cGFjZXMgZnJvbSBWTSB0byBIZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNjQ4CisgICAgICAgIHJkYXI6Ly84NTg3NTc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIDEuIEVtYmVkIElzb0hlYXBDZWxs
VHlwZSBpbnN0YW5jZXMgaW4gSlNWTUNsaWVudERhdGEgZGlyZWN0bHkgaW5zdGVhZCBvZgorICAg
ICAgICAgICBtYWxsb2MnaW5nIHRoZW0gc2VwYXJhdGVseSBhbmQgcmVmZXJlbmNpbmcgdGhlbSB2
aWEgdW5pcXVlX3B0cnMuICBUaGVzZQorICAgICAgICAgICBpbnN0YW5jZXMgYXJlIGFsd2F5cyBp
bnN0YW50aWF0ZWQgdW5jb25kaXRpb25hbGx5IGFueXdheS4gIFRoaXMgY2hhbmdlCisgICAgICAg
ICAgIGVsaW1pbmF0ZXMgdGhlIHVubmVlZGVkIGJ1c3kgd29yayB0byBhbGxvY2F0ZSB0aGVtIHNl
cGFyYXRlbHkuCisKKyAgICAgICAgMi4gQWRkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2YgSlNW
TUNsaWVudERhdGE6Om1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS4K
KyAgICAgICAgICAgVGhpcyBoYXNuJ3QgYmVlbiBhbiBpc3N1ZSBzbyBmYXIgYmVjYXVzZSB3ZSBk
b24ndCBjdXJyZW50bHkgYWxsb3cgc2hhcmVkIHdvcmtlcnMuCisKKyAgICAgICAgMy4gUmViYXNl
IGJpbmRpbmdzIHRlc3QgcmVzdWx0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXN5
bmNJdGVyYXRvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50
RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUl0ZXJhYmxlRGVmaW5pdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFN0YXI6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnM6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
YWxsVHJhY2VyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q29uZGl0
aW9uYWxJbmNsdWRlczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklU
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RET01KSVQ6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERvbWFpblNl
Y3VyaXR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3REb21haW5TZWN1cml0eTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2xvYmFsT2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZURPTUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25fZW50cmllc0NhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJ
bnRlcmZhY2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SXRlcmFibGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllc0NhbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lOb0ludGVyZmFj
ZU9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1hcExpa2VET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE1hcExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGg6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
cjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVzcGFjZU9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25fZW50cmllc0NhbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPYmo6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RS
ZWFkT25seVNldExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNldExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
czo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZp
ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFN0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vic3BhY2VGb3JJ
bXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0VHlwZWRlZnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1dvcmtsZXRHbG9iYWxTY29wZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMjEtMTEtMzAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBydmZjIHRvIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmgJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUFzeW5jSXRl
cmF0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTUl0ZXJhdG9yUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNET01JdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgSXNvU3Vic3BhY2UqIEpT
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcj4gfHwgIUpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRmlsZVN5c3Rl
bURpcmVjdG9yeUhhbmRsZUl0ZXJhdG9yPikKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcikpOworICAgICAgICBjbGll
bnREYXRhLnNldEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRv
cikpOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNGaWxlU3lzdGVtRGlyZWN0b3J5
SGFuZGxlSXRlcmF0b3IpKTsKKyAgICAgICAgY2xpZW50RGF0YS5zZXRGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3JTcGFjZShtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZUl0ZXJhdG9yKSk7CiAgICAgYXV0byogc3BhY2UgPSBjbGllbnREYXRhLmZpbGVT
eXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvclNwYWNlKCk7CiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlND
bGllbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNSZW1vdGVET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJKU1dpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC01OSwzMyArNjAsMzQgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIEpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYg
dm0pCiAgICAgOiBtX2J1aWx0aW5GdW5jdGlvbnModm0pCiAgICAgLCBtX2J1aWx0aW5OYW1lcyh2
bSkKLSAgICAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlKEpTQzo6SXNvSGVhcENlbGxUeXBl
OjpjcmVhdGU8UnVudGltZUFycmF5PigpKQotICAgICwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxU
eXBlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNDOjpCaW5kaW5nczo6UnVudGltZU9i
amVjdD4oKSkKLSAgICAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU1dpbmRvd1Byb3h5PigpKQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JK
U0RPTVdpbmRvdyhKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTRE9NV2luZG93PigpKQot
ICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oKSkK
LSAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3coSlNDOjpJc29IZWFwQ2Vs
bFR5cGU6OmNyZWF0ZTxKU1JlbW90ZURPTVdpbmRvdz4oKSkKLSAgICAsIG1faGVhcENlbGxUeXBl
Rm9ySlNXb3JrZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV29y
a2VyR2xvYmFsU2NvcGU+KCkpCisgICAgLCBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZShKU0M6
Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxSdW50aW1lQXJyYXk+KCkpCisgICAgLCBtX3J1bnRpbWVP
YmplY3RIZWFwQ2VsbFR5cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdD4oKSkKKyAgICAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUoSlND
OjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXaW5kb3dQcm94eT4oKSkKKyAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNET01XaW5kb3coSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNET01XaW5k
b3c+KCkpCisgICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZT4oKSkKKyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3coSlNDOjpJc29I
ZWFwQ2VsbFR5cGU6OkFyZ3M8SlNSZW1vdGVET01XaW5kb3c+KCkpCisgICAgLCBtX2hlYXBDZWxs
VHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNX
b3JrZXJHbG9iYWxTY29wZT4oKSkKKyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZShKU0M6Oklzb0hlYXBDZWxsVHlwZTo6QXJnczxKU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlPigpKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKSkKKyAgICAsIG1faGVhcENlbGxU
eXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFy
Z3M8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKLSAgICAsIG1faGVhcENl
bGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNyZWF0
ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKKyAgICAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3Jr
bGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNXb3JrbGV0R2xvYmFs
U2NvcGU+KCkpCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgLCBtX2hlYXBDZWxs
VHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPigpKQorICAgICwgbV9oZWFwQ2VsbFR5cGVG
b3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKEpTQzo6SXNvSGVhcENlbGxUeXBlOjpBcmdzPEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+KCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQotICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlKEpTQzo6
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oKSkKKyAg
ICAsIG1faGVhcENlbGxUeXBlRm9ySlNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShKU0M6Oklzb0hl
YXBDZWxsVHlwZTo6QXJnczxKU0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlPigpKQogI2VuZGlmCi0g
ICAgLCBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdChKU0M6
Oklzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdD4o
KSkKLSAgICAsIG1fZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFz
ZSkKLSAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNET01Db25zdHJ1Y3RvckJhc2UpCi0gICAgLCBtX2Rv
bU5hbWVzcGFjZU9iamVjdFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU0RPTU9iamVjdCkKLSAgICAsIG1fZG9tV2luZG93UHJvcGVydGllc1Nw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMpCi0gICAgLCBtX3J1bnRpbWVBcnJheVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICptX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZSwgUnVudGltZUFycmF5
KQotICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6MHhmNzBjNGE4NQot
ICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKm1f
cnVudGltZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkK
LSAgICAsIG1fd2luZG93UHJveHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqbV93
aW5kb3dQcm94eUhlYXBDZWxsVHlwZSwgSlNXaW5kb3dQcm94eSkKLSAgICAsIG1faWRiU2VyaWFs
aXphdGlvblNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICptX2hlYXBDZWxsVHlwZUZv
ckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0KQorICAgICwgbV9oZWFwQ2VsbFR5cGVGb3JKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxP
YmplY3QoSlNDOjpJc29IZWFwQ2VsbFR5cGU6OkFyZ3M8SlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0PigpKQorICAgICwgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQnVpbHRpbkNvbnN0
cnVjdG9yQmFzZSkKKyAgICAsIG1fZG9tQ29uc3RydWN0b3JTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NQ29uc3RydWN0b3JCYXNlKQor
ICAgICwgbV9kb21OYW1lc3BhY2VPYmplY3RTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTRE9NT2JqZWN0KQorICAgICwgbV9kb21XaW5kb3dQ
cm9wZXJ0aWVzU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZSgpLCBKU0RPTVdpbmRvd1Byb3BlcnRpZXMpCisgICAgLCBtX3J1bnRpbWVBcnJheVNwYWNl
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBlLCBS
dW50aW1lQXJyYXkpCisgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFjZSBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6
MHhmNzBjNGE4NQorICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLCBKU0M6OkJpbmRpbmdzOjpSdW50
aW1lT2JqZWN0KQorICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUsIEpTV2luZG93UHJveHkpCisgICAgLCBt
X2lkYlNlcmlhbGl6YXRpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBD
ZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdCwgSlNJREJTZXJpYWxpemF0
aW9uR2xvYmFsT2JqZWN0KQogICAgICwgbV9zdWJzcGFjZXMobWFrZVVuaXF1ZTxET01Jc29TdWJz
cGFjZXM+KCkpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUpTQ2xpZW50RGF0YS5oCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdl
aW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTkyLDI2ICs5MiwyNiBAQCBwcml2YXRlOgog
ICAgIEpTQnVpbHRpbkZ1bmN0aW9ucyBtX2J1aWx0aW5GdW5jdGlvbnM7CiAgICAgV2ViQ29yZUJ1
aWx0aW5OYW1lcyBtX2J1aWx0aW5OYW1lczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Okhl
YXBDZWxsVHlwZT4gbV9ydW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3dpbmRvd1Byb3h5SGVhcENlbGxU
eXBlOworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1fcnVudGltZUFycmF5SGVhcENlbGxUeXBl
OworICAgIEpTQzo6SXNvSGVhcENlbGxUeXBlIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsK
KyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlOwogcHVi
bGljOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5
cGVGb3JKU0RPTVdpbmRvdzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+
IG1faGVhcENlbGxUeXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVE
T01XaW5kb3c7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBD
ZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6
SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU7
CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdzsK
KyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVG
b3JKU1JlbW90ZURPTVdpbmRvdzsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxs
VHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFwQ2VsbFR5cGUgbV9o
ZWFwQ2VsbFR5cGVGb3JKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVh
cENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CisgICAgSlNDOjpJc29IZWFw
Q2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKICNl
bmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5
cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBKU0M6Oklzb0hlYXBDZWxsVHlwZSBtX2hl
YXBDZWxsVHlwZUZvckpTV29ya2xldEdsb2JhbFNjb3BlOwogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2Vs
bFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAgIEpTQzo6SXNvSGVhcENlbGxU
eXBlIG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxU
eXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgSlND
OjpJc29IZWFwQ2VsbFR5cGUgbV9oZWFwQ2VsbFR5cGVGb3JKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hl
YXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdDsKKyAgICBKU0M6Oklz
b0hlYXBDZWxsVHlwZSBtX2hlYXBDZWxsVHlwZUZvckpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9i
amVjdDsKIAogcHJpdmF0ZToKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fZG9tQnVpbHRpbkNvbnN0
cnVjdG9yU3BhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTQ4NTIsMTMgKzQ4NTIsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
ciR7aW50ZXJmYWNlTmFtZX0uZ2V0KCkpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIHNwYWNlO1xuIik7CiAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRl
cmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05h
bWV9LCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5
cGVGb3Ike2NsYXNzTmFtZX0sICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7Y2xhc3NOYW1lfT4gfHwgISR7Y2xhc3NO
YW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgJHtjbGFzc05hbWV9KTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBlbHNlXG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5j
ZWxsSGVhcENlbGxUeXBlLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlKCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJm
YWNlTmFtZX0uZ2V0KCk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJO
SU5HU19CRUdJTihcInVucmVhY2hhYmxlLWNvZGVcIilcbiIpOwpAQCAtNjczMSw5ICs2NzMxLDkg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsICR7aXRlcmF0
b3JOYW1lfT4gfHwgISR7aXRlcmF0b3JOYW1lfTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgJHtpdGVyYXRvck5hbWV9PikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtp
dGVyYXRvck5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgJHtpdGVy
YXRvck5hbWV9KTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5h
bWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksICR7aXRlcmF0b3JOYW1lfSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpdGVyYXRvck5h
bWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsICR7aXRlcmF0b3JOYW1lfSk7CisgICAgICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvciR7aXRlcmF0b3JOYW1lfSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgJHtpdGVy
YXRvck5hbWV9KTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7
aXRlcmF0b3JOYW1lfS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInVucmVhY2hhYmxl
LWNvZGVcIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJlXCIp
CkBAIC03NTI5LDcgKzc1MjksNyBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
e1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRSgke3Byb3RvdHlwZUNsYXNzTmFtZX0sIEJhc2UpO1xuIik7Ci0g
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZSgpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIp
OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDcgKzM2OSw3IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTRE9NV2luZG93OjpzdWJzcGFjZUYKICAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5kb3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpT
RE9NV2luZG93LCBKU0RPTVdpbmRvdyk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JET01XaW5k
b3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBj
bGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3csIEpTRE9NV2luZG93KTsKICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRE9NV2luZG93LmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdp
bmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0RPTVdpbmRvd1Byb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcw
LDcgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYQogICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOworICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxU
eXBlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFN0YXIuY3Bw
CShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNFeHBvc2VkU3Rhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTRXhwb3NlZFN0YXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTIzNiw5ICsyMzYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4cG9z
ZWRTdGFyOjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3NlZFN0
YXI+IHx8ICFKU0V4cG9zZWRTdGFyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3Nl
ZFN0YXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkU3Rhcik7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNFeHBvc2VkU3Rhcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckV4
cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFN0YXIpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvckV4cG9zZWRTdGFyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU0V4cG9zZWRT
dGFyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yRXhwb3NlZFN0YXIu
Z2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwog
ICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKQEAgLTI1Miw5ICsyNTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU0V4
cG9zZWRUb1dvcmtlckFuZFdpCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93PiB8fCAhSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+KQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93KTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAq
dm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvckV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1BhaW50
V29ya2xldEdsb2JhbFNjCiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclBhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBl
Rm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk7
CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JQYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNsaWVudERhdGEu
bV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLCBKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9u
IDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFMKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlw
ZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnRE
YXRhLm1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNTaGFyZWRXb3JrZXJHbG9iYWxTYwogICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CiAgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBD
ZWxsVHlwZUZvckpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUsIEpTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUpOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGll
bnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSwgSlNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCShy
ZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
cy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcg
KzkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MzgsOSArNDM4LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1YgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDRVJlYWN0aW9ucz4gfHwgIUpTVGVzdENFUmVhY3Rpb25zOjpuZWVkc0Rlc3RydWN0
aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rl
c3RDRVJlYWN0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rpb25zKTsK
ICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNl
bGxIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVhY3Rp
b25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNjQsOSArMjY0LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiB8fCAhSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDYWxsVHJhY2VyUHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC01
MTMsOSArNTEzLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q2FsbFRyYWNlcjo6c3Vicwog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPiB8fCAhSlNUZXN0
Q2FsbFRyYWNlcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPikK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENhbGxUcmFjZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCks
IEpTVGVzdENhbGxUcmFjZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDYWxsVHJhY2VyKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0Q2FsbFRyYWNlcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMTc2LDkgKzE3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC03ODksOSAr
Nzg5LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q29uZGl0aW9uYWxJbmNsdQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzPiB8fCAhSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25k
aXRpb25hbEluY2x1ZGVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RDb25kaXRp
b25hbEluY2x1ZGVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRpb25hbElu
Y2x1ZGVzLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC02MTEsOSArNjExLDkgQEAgSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0Q29uZGl0aW9uYWxseVJlYQogICAgICAgICByZXR1cm4gc3BhY2U7CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlPiB8fCAhSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdENvbmRpdGlv
bmFsbHlSZWFkV3JpdGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODEsNyArNDgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTI1Miw5ICsxMjUy
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RE9NSklUOjpzdWJzcGFjZQogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+IHx8ICFKU1Rlc3RET01KSVQ6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RE9NSklUPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0
RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERPTUpJVCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0
RE9NSklUKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RET01KSVQpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RE9NSklULmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT04uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRU
b0pTT04uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1
bHRUb0pTT05Qcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTgwOCw5ICs4MDgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0
VG9KU09OOjpzCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pT
T04+IHx8ICFKU1Rlc3REZWZhdWx0VG9KU09OOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT04+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZh
dWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRv
SlNPTik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT04gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTik7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT04pOworICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3REZWZhdWx0VG9KU09OID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0
VG9KU09OKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT04uZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZFByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewpAQCAtMjcwLDkgKzI3MCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERlZmF1bHRU
b0pTT05GaWwKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZD4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE2Miw5ICsx
NjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9KU09OSW5kCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRh
bmNlPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yOTIsOSArMjkyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVmYXVsdFRv
SlNPTkluaAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdD4gfHwgIUpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PikKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdCk7CisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0zMzIsOSArMzMyLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVm
YXVsdFRvSlNPTkluaAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsPiB8fCAhSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6
bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRG
aW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWwpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkocmV2aXNpb24g
Mjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwor
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBA
IC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlPiB8fCAhSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBl
LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCShyZXZpc2lvbiAy
ODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RG9tYWluU2VjdXJpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzIwLDkgKzMyMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dERvbWFpblNlY3VyaXR5OjoKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RG9t
YWluU2VjdXJpdHk+IHx8ICFKU1Rlc3REb21haW5TZWN1cml0eTo6bmVlZHNEZXN0cnVjdGlvbik7
CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3REb21haW5TZWN1cml0eT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0RG9tYWluU2VjdXJpdHkpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21h
aW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3REb21haW5T
ZWN1cml0eSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REb21h
aW5TZWN1cml0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERvbWFpblNlY3VyaXR5ID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3REb21haW5TZWN1cml0eSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REb21haW5TZWN1cml0eS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtNDU5LDkgKzQ1OSw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4gfHwgIUpTVGVzdEVuYWJsZWRCeVNldHRpbmc6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4pCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKICAgICBlbHNlCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5
U2V0dGluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0K
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKQEAgLTE4Niw5ICsxODYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0PiB8fCAhSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6Om5lZWRzRGVzdHJ1Y3Rpb24p
OwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KQotICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RW5h
YmxlZEZvckNvbnRleHQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVk
Rm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRl
eHQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMzIxLDkgKzMyMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cj4gfHwgIUpTVGVzdEV2ZW50Q29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRD
b25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2
ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlKCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsyNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RFdmVudFRhcmdldDo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dEV2ZW50VGFyZ2V0PiB8fCAhSlNUZXN0RXZlbnRUYXJnZXQ6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RXZlbnRUYXJnZXQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV2ZW50
VGFyZ2V0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOwog
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEV4Y2VwdGlvbjo6c3Vic3AKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RXhjZXB0aW9uPiB8fCAhSlNUZXN0RXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEV4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEV4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEV4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdEV4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0RXhjZXB0aW9uKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJv
dG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
ICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0x
ODcsOSArMTg3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2VuZXJhdGVBZGRPcGFxdQog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+
IHx8ICFKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBD
ZWxsVHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmdldCgpOwogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTcsOSAr
MTk3LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYQogICAgICAg
ICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiB8fCAhSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7
CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RH
bG9iYWxPYmplY3Q6OnN1CiAgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKICAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxP
YmplY3QuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpTVGVzdEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0KTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAg
ICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHbG9iYWxPYmplY3RQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJ
KHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc2LDkg
KzI3Niw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0kKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4g
fHwgIUpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwog
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2Uo
KTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7CkBAIC0yNzYsOSArMjc2LDkgQEAgSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0SW5kZXhlZFNldHRlclRocgogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+IHx8ICFKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEJhc2Up
OwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwOCw5ICszMDgsOSBA
QCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0CiAgICAgICAgIHJldHVy
biBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7CkBAIC0xMTA0LDkgKzExMDQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgVGVzdEludGVyZmFjZUl0ZXJhdG9yPiB8fCAhVGVzdEludGVy
ZmFjZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0SW50ZXJmYWNl
SXRlcmF0b3I+KQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNl
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBUZXN0SW50ZXJm
YWNlSXRlcmF0b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJm
YWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgVGVzdEludGVyZmFj
ZUl0ZXJhdG9yKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW50ZXJmYWNlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgVGVzdEludGVyZmFjZUl0
ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0
ZXJhdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBUZXN0SW50ZXJmYWNlSXRlcmF0b3IpOwogICAgICAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUl0ZXJhdG9y
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpAQCAtMTE5Niw5ICsxMTk2
LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW50ZXJmYWNlOjpzdWJzcAogICAgICAgICBy
ZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+IHx8ICFKU1Rlc3RJbnRlcmZhY2U6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdEludGVyZmFj
ZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2Ug
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2Up
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlLmdl
dCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCShyZXZpc2lvbiAyODYz
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSwgQmFzZSk7Ci0g
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIEpT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZUxlYWRpbmcKICAgICAgICAgcmV0dXJuIHNw
YWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+IHx8ICFKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7
CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFibGVQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwMSw5ICsy
MDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgVGVz
dEl0ZXJhYmxlSXRlcmF0b3I+IHx8ICFUZXN0SXRlcmFibGVJdGVyYXRvcjo6bmVlZHNEZXN0cnVj
dGlvbik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgVGVzdEl0ZXJhYmxlSXRlcmF0b3I+KQotICAgICAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGVJdGVyYXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUoKSwgVGVzdEl0ZXJhYmxlSXRlcmF0b3IpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZUl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFw
Q2VsbFR5cGUsIFRlc3RJdGVyYWJsZUl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEl0ZXJhYmxlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3RJdGVy
YWJsZUl0ZXJhdG9yKTsKICAgICAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJdGVyYWJsZUl0ZXJhdG9yLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpAQCAtMjkzLDkgKzI5Myw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEl0ZXJhYmxl
OjpzdWJzcGEKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+IHx8
ICFKU1Rlc3RJdGVyYWJsZTo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJs
ZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0SXRlcmFibGUpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBK
U1Rlc3RJdGVyYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RJ
dGVyYWJsZSk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVy
YWJsZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjg2MzA3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yPiB8fCAhSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOwogICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQog
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewpAQCAtMjMwLDkgKzIzMCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW4KICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uPiB8fCAhSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4pCi0gICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5nZXQoKTsK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTMzNSw5ICszMzUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RMZWdhY3lOb0ludGVyZmFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0PiB8fCAhSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3Q+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU5vSW50ZXJm
YWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TGVn
YWN5Tm9JbnRlcmZhY2VPYmplY3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5Tm9J
bnRlcmZhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwt
Y29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0OSw5
ICsyNDksOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1CiAgICAg
ICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+IHx8
ICFKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgZWxzZQotICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE1hcExpa2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKQEAgLTM2Niw5ICszNjYsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtl
OjpzdWJzcGFjCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2U+IHx8
ICFKU1Rlc3RNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2U+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
TWFwTGlrZSk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBM
aWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
KnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2UpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlKTsK
ICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1hcExpa2UuZ2V0KCk7
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90
b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM4
MCw5ICszODAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyCiAg
ICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnM+IHx8ICFKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnM+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyk7CiAgICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuZ2V0KCk7CiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzQ0
LDkgKzM0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFMKICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpu
ZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQog
ICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTM0NCw5ICszNDQsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
PiB8fCAhSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24pOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAg
ICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7CkBAIC00MDEsOSArNDAxLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TmFtZWRBbmRJbmRleGVkUwogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgp
OwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI0Niw5ICsyNDYsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxU
eXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCks
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBCYXNlKTsK
LSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAg
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhybwogICAgICAgICByZXR1cm4g
c3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKLSAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUs
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKTsKICAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCShyZXZpc2lv
biAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjcwLDkgKzI3MCw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGgKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+IHx8ICFK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIpOworICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
Zmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI2Miw5ICsyNjIsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPiB8fCAhSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGguY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIyMCw5ICsyMjAsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+
IHx8ICFKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGggPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGgpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZEdldHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGguZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMjAsOSArMjIwLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZQogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcj4gfHwgIUpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOwog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yNDYsOSArMjQ2LDkgQEAgSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSQogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPiB8fCAhSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxs
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcik7CiAgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiAyODYzMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGUKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+IHx8ICFKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllcik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAg
IHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzAwLDkgKzMwMCw5IEBAIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3cKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24pOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtMzMxLDkgKzMzMSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAg
ICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFp
bk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzc4LDkgKzM3OCw5IEBAIEpTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNl
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4gfHwgIUpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5P
YmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAg
fQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewpAQCAtNDI4LDkgKzQyOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEkKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKTsKICAg
ICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZSwgQmFz
ZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjc3LDkgKzI3Nyw5
IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEwKICAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucz4gfHwgIUpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Om5l
ZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5nZXQoKTsKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0zNjEsOSArMzYxLDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXM+IHx8ICFKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKTsKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5w
bGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2UoKTsK
ICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKICAgICB7CkBAIC0zMzgsOSArMzM4LDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTAogICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zPiB8fCAhSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyk7CiAgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmdldCgpOwogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVj
dC5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODAsOSArMjgwLDkgQEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZXNwYWNlT2JqZWN0Ogog
ICAgICAgICByZXR1cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lc3BhY2VPYmplY3Q+IHx8ICFK
U1Rlc3ROYW1lc3BhY2VPYmplY3Q6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZXNwYWNlT2JqZWN0PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNl
T2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZXNwYWNlT2Jq
ZWN0KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdE5hbWVzcGFjZU9iamVjdCk7CiAg
ICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lc3BhY2VPYmplY3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0TmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZXNwYWNlT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rl
c3ROYW1lc3BhY2VPYmplY3QpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZXNwYWNlT2JqZWN0LmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC00MDUsOSArNDA1LDkgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIFRlc3ROb2RlSXRlcmF0b3I+IHx8
ICFUZXN0Tm9kZUl0ZXJhdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBUZXN0Tm9k
ZUl0ZXJhdG9yPikKLSAgICAgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGVJdGVy
YXRvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlc3ROb2RlSXRlcmF0
b3IpOworICAgICAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZUl0ZXJhdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIFRlc3ROb2RlSXRlcmF0b3IpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgVGVzdE5vZGVJdGVyYXRvcik7CisgICAgICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROb2RlSXRlcmF0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIFRlc3ROb2Rl
SXRlcmF0b3IpOwogICAgICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGVJdGVyYXRvci5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKQEAg
LTQ5Nyw5ICs0OTcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROb2RlOjpzdWJzcGFjZUZv
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+IHx8ICFKU1Rlc3ROb2Rl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNU
ZXN0Tm9kZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0Tm9kZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE5vZGUp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgp
LCBKU1Rlc3ROb2RlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5vZGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NjYsNyArMTg2Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RPYmpQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTkwMDYsOSArOTAwNiw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE9iajo6c3Vic3BhY2VGb3IKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2Jq
PiB8fCAhSlNUZXN0T2JqOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE9iaj4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9i
aiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPYmopOwogICAgIGVsc2UK
LSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpT
VGVzdE9iaik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iaiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUoKSwgSlNUZXN0T2JqKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE9iai5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzNCw5ICsyMzQsOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPiB8fCAhSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWw6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9u
Q29uZGl0aW9uYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwp
OworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPcGVyYXRpb25Db25kaXRpb25hbCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAg
ICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZt
LnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgp
OwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyk7CiAgICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7
CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIzOCw5ICsyMzgsOSBAQCBKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RyCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+IHx8ICFKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CiAgICAgZWxz
ZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0
KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGx1Z2luSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjQ0LDkg
KzI0NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZToKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPiB8fCAhSlNUZXN0
UGx1Z2luSW50ZXJmYWNlOjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFBsdWdpbklu
dGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFj
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOwogICAgIGVs
c2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxI
ZWFwQ2VsbFR5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFBsdWdpbkludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCShyZXZp
c2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGUsIEJhc2UpOwot
ICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTMwMSw5ICszMDEsOSBAQCBK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uCiAgICAgICAgIHJldHVybiBz
cGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4gfHwgIUpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjg2
MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5TWFwTGlrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
ICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAg
ICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewpAQCAtMzA1LDkgKzMwNSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFJlYWRPbmx5TWFwTGlrZToKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVh
ZE9ubHlNYXBMaWtlPiB8fCAhSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpuZWVkc0Rlc3RydWN0aW9u
KTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUs
IEpTVGVzdFJlYWRPbmx5TWFwTGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RS
ZWFkT25seU1hcExpa2UpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UmVhZE9ubHlNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlr
ZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVhZE9ubHlNYXBMaWtlKTsKICAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlYWRPbmx5TWFwTGlrZS5nZXQoKTsKIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlLCBCYXNlKTsKLSAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnBs
YWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yODQsOSArMjg0LDkgQEAgSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0UmVhZE9ubHlTZXRMaWtlOgogICAgICAgICByZXR1cm4gc3Bh
Y2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RSZWFkT25seVNldExpa2U+IHx8ICFKU1Rlc3RSZWFkT25seVNldExp
a2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlKCksIEpTVGVzdFJlYWRPbmx5U2V0TGlrZSk7CiAgICAgZWxzZQotICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZWFkT25seVNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwg
SlNUZXN0UmVhZE9ubHlTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
UmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RSZWFkT25seVNldExpa2Up
OwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UmVhZE9ubHlTZXRM
aWtlLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAJKHJldmlzaW9uIDI4NjMwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTE3MSw5ICsxNzEsOSBAQCBKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdD4gfHwgIUpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dDo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCk7CiAg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3QuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewpAQCAtMzQ5LDkgKzM0OSw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHQKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlPiB8fCAhSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpuZWVkc0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZT4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwogICAg
IGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5nZXQoKTsKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAJKHJldmlzaW9uIDI4
NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXRMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsK
ICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U2V0TGlr
ZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsK
KyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpA
QCAtMzQyLDkgKzM0Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2U6OnN1YnNw
YWMKICAgICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4gfHwgIUpTVGVz
dFNldExpa2U6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTZXRMaWtl
KTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2Vs
bEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZSk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2UpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0TGlrZS5nZXQoKTsKIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyAr
ODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwg
QmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMzU0LDkgKzM1
NCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNldExpa2VXaXRoT3ZlcnIKICAgICAgICAg
cmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cz4gfHwgIUpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz4pCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2V0
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZSgpLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKTsKICAgICBlbHNlCi0g
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCAqdm0uY2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5nZXQoKTsKIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0U3RyaW5naWZpZXJQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAg
IH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RT
dHJpbmdpZmllcjo6c3ViCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmlu
Z2lmaWVyPiB8fCAhSlNUZXN0U3RyaW5naWZpZXI6Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXI+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
KTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxsVHlw
ZSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIuZ2V0KCk7CiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NjMw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0xOTIsOSArMTkyLDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJBbm9ueQogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj4gfHwg
IUpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPikKLSAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbik7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKTsKICAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAkocmV2aXNp
b24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlLCBCYXNl
KTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2UoKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7CkBAIC0yMDksOSArMjA5LDkg
QEAgSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZAogICAgICAgICByZXR1
cm4gc3BhY2U7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiB8fCAhSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsICp2bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bik7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uLmdldCgpOwogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewog
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTIwOSw5ICsyMDksOSBAQCBKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhCiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4gfHwgIUpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6bmVlZHNEZXN0cnVjdGlvbik7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+KQotICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKICAgICBlbHNlCi0gICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2
bS5jZWxsSGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyk7CiAgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAkocmV2aXNpb24gMjg2MzA3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlw
ZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAg
cmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMTkyLDkg
KzE5Miw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmEKICAgICAg
ICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpuZWVk
c0Rlc3RydWN0aW9uKTsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZz4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcpOwogICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgKnZtLmNlbGxIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZy5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAJKHJl
dmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3Rv
dHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAg
ICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjA4
LDkgKzIwOCw5IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE8KICAg
ICAgICAgcmV0dXJuIHNwYWNlOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZT4gfHwgIUpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1
Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZSgpLCBKU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlKTsKICAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhlYXBDZWxs
VHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlKCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOwogICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5nZXQoKTsKIElHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCiBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAko
cmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAg
LTIyNyw5ICsyMjcsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
CiAgICAgICAgIHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlPiB8fCAhSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6Om5lZWRz
RGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+
KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUo
KSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwogICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0u
Y2VsbEhlYXBDZWxsVHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUpOwogICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgIHsKICAgICAgICAgU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUs
IEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTc3OCw5ICs3
NzgsOSBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RUeXBlZGVmczo6c3Vic3BhCiAgICAgICAg
IHJldHVybiBzcGFjZTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVkZWZzPiB8fCAhSlNUZXN0VHlwZWRlZnM6
Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0VHlwZWRlZnM+KQotICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsICp2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUsIEpTVGVzdFR5cGVkZWZzKTsKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlw
ZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwog
ICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqdm0uY2VsbEhl
YXBDZWxsVHlwZSwgSlNUZXN0VHlwZWRlZnMpOworICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUoKSwgSlNUZXN0VHlwZWRlZnMpOwogICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CiBJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCShyZXZpc2lvbiAyODYzMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
OSw3ICsyNDksNyBAQCBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtlckdsb2JhbFNjb3BlOjpzCiAg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKICAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvcldvcmtlckdsb2JhbFNjb3BlLmdldCgpKQogICAg
ICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxT
Y29wZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
ICpjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSwgSlNXb3Jr
ZXJHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JXb3JrZXJHbG9iYWxTY29w
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIGNs
aWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckdsb2JhbFNjb3BlLCBKU1dvcmtlckds
b2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2Vy
R2xvYmFsU2NvcGUuZ2V0KCk7CiBJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5
cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOwogICAgIH0KICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEpTQzo6SXNvU3Vic3BhY2UqIEpT
V29ya2xldEdsb2JhbFNjb3BlOjoKICAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOwogICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xl
dEdsb2JhbFNjb3BlLmdldCgpKQogICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCAqY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvckpT
V29ya2xldEdsb2JhbFNjb3BlLCBKU1dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNX
b3JrbGV0R2xvYmFsU2NvcGUsIEpTV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yV29ya2xldEdsb2JhbFNjb3BlLmdldCgpOwogSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3Bl
LmgJKHJldmlzaW9uIDI4NjMwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlKCk7CiAgICAgfQogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1
LDcgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihKUwogSlNDOjpJc29T
dWJzcGFjZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6SXNvU3Vic3BhY2VQZXJWTT4g
cGVyVk0oW10gKEpTQzo6Vk0mIHZtKSB7Ci0gICAgICAgIHJldHVybiBJU09fU1VCU1BBQ0VfUEFS
QU1FVEVSUygqdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLCBPYmpjRmFsbGJhY2tP
YmplY3RJbXApOworICAgICAgICByZXR1cm4gSVNPX1NVQlNQQUNFX1BBUkFNRVRFUlModm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKCksIE9iamNGYWxsYmFja09iamVjdEltcCk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuICZwZXJWTS5nZXQoKS5mb3JWTSh2bSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaAkocmV2aXNpb24gMjg2MzA3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNsYXNzIFZNOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>